🌼今天就来记录一下自己学习的统计学的知识,介绍几种参数检验,并用python来进行实践,并进行解释,有错误的地方,或者不足的地方还请大家指正。
例如:检验H 0 H_0H0时,我们先假设H 0 H_0H0正确,在此基础上,构建一个事件A,他在H 0 H_0H0为正确的条件下概率很小,可以表示为P ( A / H 0 ) = α P(A/H_0)=\alphaP(A/H0)=α现在进行一次实验,如果事件A发生了,也就是说小概率事件在一次实验中发生了,这与实际推断原理相矛盾,这说明‘假定H 0 H_0H0为正确的’命题是值得怀疑的,我们通常拒绝H 0 H_0H0,反之,如果小概率事件没有发生,我们就没有理由拒绝H 0 H_0H0,通常就接受H 0 H_0H0。
主观上来说,我们希望通过假设检验来得到正确的判断,如果H 0 H_0H0确实为真,则接受H 0 H_0H0,如果H 0 H_0H0确实为假,则拒绝H 0 H_0H0,但实际上我们是根据样本来推断总体,由于样本存在随机性,在推断时就不免会发生错误。
卡方检验定义:统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0。(看不懂也没关系,通俗一点就是检验两个变量之间有没有关系)
特点:一般情况下适用于自变量X为离散类型,因变量Y为离散类别的值,数据一般呈现正态分布
卡方检验的计算方式:
χ 2 = ∑ ( 实 际 频 数 − 理 论 频 数 ) 2 理 论 频 数 \chi^2=\sum\dfrac{(实际频数-理论频数)^2}{理论频数}χ2=∑理论频数(实际频数−理论频数)2
例如:从某中学随机抽取两个班,调查他们对待上晚自习的态度,甲班41人赞成,25人反对;乙班34人赞成,29人反对,这两个班对待上晚自习的态度是否有显著差异(α= 0.05)?
变量 | 同意 | 反对 |
---|---|---|
甲班 | 41 | 25 |
乙班 | 34 | 29 |
from scipy.stats import chi2_contingency
import numpy as np
data = np.array([[41,25], [34,29]])
kt= chi2_contingency(data)
print('卡方值=%.4f, p值=%.4f, 自由度=%i expected_frep=%s'%kt)
结果如下:
可以看出p值大于0.05,则接受原假设,认为对待晚自习的态度与班级无关。
T检验的定义:亦称student t检验(Student’s t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布。t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。(百度百科)t检验可分为单总体检验、双总体检验和配对样本检验
特点:用于自变量X是离散的数据,自变量Y是连续型数据(x只能是2类),数据一定要是正态分布。
单总体检验使用较多,我们主要介绍着一种:单总体t检验是检验一个样本平均数与一个已知的总体平均数的差异是否显著。
例如:我们检验两组数据是否符合来自同一个分布的数据
import numpy
import scipy
from scipy import stats
#stats.norm.rvs是从均值为5,标准差为10的分布中抽取10个数
data1=stats.norm.rvs(loc=5,scale=10,size=10)
data2=stats.norm.rvs(loc=5,scale=20,size=10)
print(stats.levene(data1, data2)) #如果返回结果的p值远大于0.05,那么我们认为两总体具有方差齐性。
#如果两总体不具有方差齐性,需要加上参数equal_val并设定为False。
print (stats.ttest_ind(data1, data2, equal_var=True))
结果如下:我们设置的方差是不一样的,但发现方差通过,很正常,因为样本量很少。
解释一次下这里的结果吧,首先是方差齐次的检验,p值大于0.05,我们认为他们两是方差齐的,于是接着做了t检验,发现p值大于0.05,于是我们可以接受他们两属于同一个正态分布。
ps:做t检验之前最好还是做一下正太性和方差齐次性的检验。
方差检验的概念:是用于比较两个或者多个变量数据的样本,来确定它们之间的差别是简单随机的,或者是由于流程之间统计上显著的差别所致。
特点:用于自变量X是离散的数据,自变量Y是连续型数据(x可以是多种类型),数据要是正态分布,方差要齐次。
import pandas as pd
import numpy as np
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
data = pd.DataFrame([[1, 1, 32],
[1, 2, 35],
[1, 3, 35.5],
[1, 4, 38.5],
[2, 1, 33.5],
[2, 2, 36.5],
[2, 3, 38],
[2, 4, 39.5],
[3, 1, 36],
[3, 2, 37.5],
[3, 3, 39.5],
[3, 4, 43]],
columns=['x1', 'x2', 'y'])
# 多因素无重复试验,不计算交互作用的影响
model = ols('y~C(x1) + C(x2)', data=data[['x1', 'x2', 'y']]).fit()
anovat = anova_lm(model)
anovat
结果如下:
看出x1的p值小于0.05,x2的p值小于0.05,说明拒绝原假设,x1与y值有关,x2与y值有关。
《应用商务统计分析》
《百度百科》
《深入浅出统计学》
博客: python做方差分析.
博客: 几种统计学检验.
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_48077303/article/details/118789040
内容来源于网络,如有侵权,请联系作者删除!