一、描述统计分析
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dataSer=pd.Series([15.6,16.2,22.5,20.5,16.4,
19.4,16.6,17.9,12.7,13.9])
sample_mean=dataSer.mean()
sample_std=dataSer.std()
print('样本平均值',sample_mean,'单位:ppm')
print('样本标准差',sample_std,'单位:ppm')
样本平均值 17.169999999999998 单位:ppm
样本标准差 2.9814426038413018 单位:ppm
import seaborn as sns
sns.distplot(dataSer)

#1 手动计算标准误差 =样本标准差/(n的开方)
n=10
se=sample_std/(np.sqrt(n))
# 2计算t值
pop_mean=20
t=(sample_mean-pop_mean)/se
print('标准误差',se)
print('t=',t)
#查表t对应的的概率p=0.0149
标准误差 0.9428149341201592
t= -3.001649525885985
#2 自动计算
from scipy import stats
t,p=stats.ttest_1samp(dataSer,pop_mean)
print('t=',t)
print('双尾检验的p=',p)
t= -3.001649525885985
双尾检验的p= 0.014916414248897527
#单尾检验的值
p_oneTail=p/2
print('单尾检验p=',p_oneTail)
单尾检验p= 0.0074582071244487635
#显著水平=5%
alpha=0.05
结论
if(t<0 and p_oneTail<alpha):
print('拒绝零假设')
else:
print('接受零假设')
拒绝零假设
置信区间
t_ci=2.262
#使用scipy计算标准误差
se=stats.sem(dataSer)
#置信区间上限
a=sample_mean - t_ci * se
#置信区间下限
b=sample_mean + t_ci * se
print('单个平均值的置信区间,95置信水平 CI=(%f,%f)' % (a,b))
单个平均值的置信区间,95置信水平 CI=(15.037353,19.302647)
效应量
#效应量:差异指标Cohen's d
d=(sample_mean - pop_mean) / sample_std
#效应量:相关度指标R2
#样本大小
n=10
#自由度
df=n-1
R2=(t*t)/(t*t+df)
print('d=',d)
print('R2=',R2)
d= -0.9492049239364257
R2= 0.5002748453994631
相关文章: