检验对象 | 条件 | H0 | 检验名字 | 构建随机变量 | 服从分布 | Python(scipy.stats as stats, statsmodel.api as sm) | 备注 | ||||||||||||||||||||||||||
均值 | 方差已知 | u<=u0 | z检验 | ![]() |
N(0,1) | import
statsmodels.api as sm ds1=sm.stats.DescrStatsW(data1) tstat, pvalue = ds1.ztest_mean(value=2, alternative='two-sided') ds1.zconfint_mean(alpha=0.05,alternative='larger') |
"two-sided" "larger" "smaller" |
||||||||||||||||||||||||||
u>=u0 | |||||||||||||||||||||||||||||||||
u==u0 | |||||||||||||||||||||||||||||||||
方差未知 | u<=u0 | t检验 | ![]() |
t(n-1) | tstat, pvalue, df = ds1.ttest_mean(value=2, alternative='two-sided') | ||||||||||||||||||||||||||||
u>=u0 | |||||||||||||||||||||||||||||||||
u==u0 | |||||||||||||||||||||||||||||||||
两独立样本 方差已知 |
z检验 | ![]() |
N(0,1) | cm =
sm.stats.CompareMeans(ds1, ds2) tstat, pvalue = \ cm.ztest_ind(alternative='two-sided', usevar='pooled', value=0) # 'two-sided','larger','smaller' # 'pooled' or 'unequal' |
|||||||||||||||||||||||||||||
两独立样本 方差未知 |
u1-u2<=delta | t检验 |
|
|
cm =
sm.stats.CompareMeans(ds1, ds2) tstat, pvalue, df = \ cm.ttest_ind(alternative='two-sided', usevar='pooled', value=0) # 'two-sided','larger','smaller' # 'pooled' or 'unequal' |
标准流程: 检验正态性(ks,sw) → 方差齐性检验(F) → ttest_ind |
|||||||||||||||||||||||||||
u1-u2>=delta | |||||||||||||||||||||||||||||||||
u1-u2==delta | |||||||||||||||||||||||||||||||||
两配对样本 | t检验 |
|
stats.ttest_rel(a,b) | ||||||||||||||||||||||||||||||
三个以上样本 单因素 |
u1=u2=...=un | 单因素方差分析 |
|
F | tstat,
pvalue = stats.f_oneway(data1, data2, data3) from statsmodels.formula.api import ols sm.stats.anova_lm(ols('target ~ C(motor)',data=df).fit()) |
||||||||||||||||||||||||||||
三个以上样本 双因素 |
|
双因素方差分析 |
|
ANOVA2!A1 | sm.stats.anova_lm(ols('target
~ C(motor) + C(screw)',data=df).fit()) 带交互项: ana = ols('target ~ C(motor) + C(screw) +C(motor)*C(screw)', data= df).fit() sm.stats.anova_lm(ana) |
||||||||||||||||||||||||||||
方差 | 单正态 | 卡方检验 | ![]() |
[h,p,ci,stats]=matlab.vartest(X,m,alpha,tail) | |||||||||||||||||||||||||||||
两正态 | F检验 | ![]() |
F(m-1,n-1) | matlab.vartest2(X1,X2,alpha,tail) | |||||||||||||||||||||||||||||
matlab.vartest3 | |||||||||||||||||||||||||||||||||
三个以上正态 | matlab.vartestn | ||||||||||||||||||||||||||||||||
分布 | 离散样本 | 样本服从指定离散分布 | 卡方拟合检验 |
|
|
stats.chisquare([16,
16, 10], f_exp=[16, 16, 8]) # 必须是基数相同的频数() |
原理:分组,计算每组的频数 |
||||||||||||||||||||||||||
样本服从正态分布 | Jarque-Beran |
|
|
statistic, pvalue = stats.jarque_bera(series) | 峰度和偏度 | ||||||||||||||||||||||||||||
样本服从指定分布 | Kolmogorov –Smirnov test |
|
stats.kstest(rvs=df_rv.data,cdf='norm') | cdf : str or callable(of cdf) | |||||||||||||||||||||||||||||
样本服从正态分布 | Shapiro–Wilk test | stats.shapiro(series) | 样本量n<2000,用sharpiro-wilk n>2000,用kstest |
||||||||||||||||||||||||||||||
其他 | 符号检验 | ||||||||||||||||||||||||||||||||
秩和检验 | |||||||||||||||||||||||||||||||||
中值检验 | stats.median_test | ||||||||||||||||||||||||||||||||
相关性 | 列联表分析 | 两组离散变量不相关 | 卡方检验 | cross_table
= df.pivot_table(index='a', columns='b', values='c', aggfunc='count') chi2, p, dof, expected = stats.chi2_contingency(cross_table) |
|||||||||||||||||||||||||||||
皮尔逊相关系数 | ρ=0 |
|
![]()
|
stats.mstats.pearsonr | |||||||||||||||||||||||||||||
spearman相关 | stats.mstats.spearmanr | ||||||||||||||||||||||||||||||||