随手写程序——单样本t分布检验

 

def simple_t_test(x,miu):
    n=len(x)
    if n<=30 or n>=47:
        return'请输入31-46长度的样本'
        
    T=[71,55,19,24,9,96,83,71,60,49,39,29,20,11,2,94]
    it=iter(T)
    for i in range(len(T)):
        T[i]=next(it)/10000+1.69
    #构造t分布表,显著性水平0.05,自由度从30到45
    
    mean=0;
    for i in x:
        mean+=i
    mean=mean/n
    #求样本均值
    
    ss=0
    for i in x:
        ss=(i-mean)**2+ss
    ss=ss/n
    #求样本方差
    
    t=(mean-miu)/ss*(n-1)**(1/2)
    #构造t统计量

    if t<T[n-31] and t>-T[n-31]:
        return '不拒绝原假设'
    else:
        return '拒绝原假设'

程序很短,也很简单,但是一开始写碰到的坑不少。

1.调用时用import加载模块后,调用函数失败,用from import加载就可以调用,至于为什么暂时不研究了。同时注意路径的添加。

2.函数参数一个是列表,一个是浮点数,列表是可变数据类型,不知该不该在函数里复制一下再用,或本该用元组类型。

3.python的程序段结构里缩进是有意义的,所以写的时候格外注意,还有冒号,有个好用的编辑器很重要啊。。

4.这里t分布表算是手动输入的,循环里用了个迭代器(iter),暂时也不知道迭代器威力何在,先随便玩玩喽。

5.循环里一开始老忘i是在遍历x,老想着从一到n,还有python是从0计数的。

6.python函数调用时,参数有好几种传递方式,关键字参数方式挺好用的。

下面是调用实验

import sys
sys.path.append('D:\python\pythondata')
from jjj import simple_t_test
print(simple_t_test(range(34),17))

结果是

=================== RESTART: D:\python\pythondata\jjjj.py ===================
不拒绝原假设

这段程序没用pandas,也没用调用数据库数据实验,下一步可以考虑改进。用的统计分析方法也很简单,也可以考虑升级。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值