一些概念
1.随机变量:是试验结果的函数,是定义在样本空间$\Omega$上的实值函数:$X=X(\omega)$,随机变量一般用大写拉丁字母或小写希腊字母来表示
2.概率分布
关于随机变量,有一个非常值得关心的特性就是概率分布
概率:是一个在0-1之间的实数,度量随机事件发生的可能性,通常用于来量化某些不确定性命题
概率分布:在概率的基础上,一个随机变量所有的可能取值加上它取某一个值的概率,比如在投掷硬币的事件中,正反面的取值的概率分布就就是正面0.5,反面0.5
3.离散随机变量
定义:随机变量仅能取有限个或可列个值
4.连续随机变量
定义:随机变量的可能取值充满数轴上的一个区间,有无限个可能取值
如正态分布的曲线呈现一个钟型,也称为bell,由两个参数:均值(最高点在横轴的哪个位置)、方差(曲线的方差)确定,和Z检验密切相关
假设检验
假设检验是根据数据样本所提供的证据,肯定或否定有关总体的声明
假设检验的基本流程
假设检验一般分为三步
- 提出零假设,以及对应的备择假设
- 零假设前提下,推断样本统计量出现的概率(统计量可符合不同的分布,对应不同的概率分布有不同的检验方法)
- 设定拒绝零假设的阈值,样本统计量在零假设下出现的概率小于阈值,则拒绝零假设,承认备择假设
淑女品茶——假设检验的案例
来自于一位统计学家的女同事可以分辨奶茶是先加入牛奶还是茶的事例
1.零假设:女同事不能分辨;备择假设:女同事可以分辨
2.假设检验方法:让女同事连续判断8杯不同的奶茶
3.测试统计量:女同事判断正确的次数
4.结论:假设阈值设定为5%,在零假设的前提下,8杯全猜对的概率小于5%,拒绝零假设
单样本检验、双样本检验
1.单样本检验:针对一个样本空间里的一些统计量做单样本检验,常用的有单样本z检验,t检验
2.双样本检验:针对两个不同的样本空间的某一类统计数据做双样本检验,常用的有双样本t检验
验证型数据分析实践
P-value
- P-value:是假设检验的一个重要概念,为在零假设成立的时候,观察到样本的概率
- 如果小于我们设定的阈值,如5%,1%等的时候,我们转而接受备择假设,即P-value越小越拒绝原假设
- 阈值的选择通常为5%,1%,0.1%,具体视情况而定
1.单样本检验
单样本z检验
- 假设: 要检验的统计量近似满足正态分布
正态分布的密度函数:
,其中$\sigma$为方差,$\mu$为平均值
- 常见用途:检测总体平均值是否等于某个常数
- 中心极限定理:大量互相独立的随机变量,其均值的分布以正态分布为极限,中心极限定理支持了可以用正态分布来进行均值的判断
- 单样本z检验案例:原假设:掷硬币朝上和朝下的概率都为50%。连续抛掷硬币1000次,观察到700次朝上,在中心极限定理的前提下,这种情况出现的概率远远小于预先设定的参数,所以选择拒绝原假设
- Python 实现:
Python中和统计模型相关的一个包:statsmodels,
#零假设:复旦大学男生平均身高175cm
#备择假设:复旦大学男生平均身高不为175cm
#需要先构造一个平均值为175,标准差为5,服从正态分布的样本X,样本量为100(你也可以尝试构造平均值为180,标准差为2,服从正态分布的样本,看看使用Z检验的得分区别)
import numpy
X=numpy.random.normal(175,5,100).round(1)
#使用Z检验计算pval
import statsmodels.stats.weightstats
z,pval = statsmodels.stats.weightstats.ztest(X,value=175)
print(pval)
#直接返回的pval,即为P值可以用于判断零假设是否成立
0.235448153111
看来平均值还是很接近175的,那么下面我们可以看一下真实的平均值:
import numpy as np
np.mean(X)
174.45500000000001
ok,果然没错!
2. 单样本t检验
- 适用:适用于样本量较少的情况(n<30)
- 参数:t分布的参数为自由度,即样本数量减1(n-1);当自由度接近于30的时候,t分布趋向于正态分布,这也就说明了为什么t分布适用于样本量较少的情况,因为样本量大于30时,往往可以用z检验
- Python实现: Python中用于进行t检验的包:Scipy
#零假设:复旦大学男生平均身高175cm
#备择假设:复旦大学男生平均身高不为175cm
#使用t检验计算pval
import scipy.stats
t,pval=scipy.stats.ttest_1samp(X,popmean=175)#这里的X也需要事先构造
#直接返回的pval,即为P值可以用于判断零假设是否成立
print (pval)
0.238287606815
可以看出来跟单样本z检验的结果很接近,但是略高于(原因可以在两者的图像对比中看出来:t检验的边界情况的概率略高于z检验)
3.双样本检验
双样本t检验
- 适用:用于比较两组样本的平均值是否一致
- Python实现:
#零假设:复旦大学和上海交大男生平均身高一样
#备择假设:复旦大学和上海交大男生平均身高不一样
#双样本检验用到了scipy包的另一个函ttest_ind
#注意,X1,X2需要事先自行创建
t,pval=scipy.stats.ttest_ind(X1,X2)
#直接返回的pval,即为P值可以用于判断零假设是否成立