《商务与经济统计》Python实现笔记(一)
程序员文章站
2022-03-09 20:31:26
...
独立样本T检验(两样本均值估计两总体均值大小关系)
import pandas as pd
import numpy as np
from scipy import stats
# 传数据
data = pd.read_excel(r"C:\Users\liuhao\Desktop\python_work\Python数据分析与挖掘实战\chapter8\test\data\data.xls")
d1 = data.iloc[:,:1]
d2 = data.iloc[:,1:2]
print(stats.ttest_ind(d1,d2,equal_val=True))
#传样本参数
from scipy.stats import ttest_ind_from_stats
ttest_ind_from_stats(mean1=325, std1=40, nobs1=12,
mean2=286, std2=44, nobs2=12)
#返回双尾p值
# 方差齐性检测
d1 = data.iloc[:,:1].values.T
d2 = data.iloc[:,1:2].values.T
d3 = pd.Series(d1[0]) # levene函数传递的参数为一维数组,需要进行转换
d4 = pd.Series(d2[0])
print(stats.levene(d3,d4))
#p值大于显著水平则具有方差齐性
#如果两总体不具有方差齐性,需要将equal_val参数设定为“False”
匹配样本T检验(估计两匹配样本的总体均值大小关系)
from scipy.stats import ttest_rel
import numpy as np
d1 = np.array([6,5,7,6,6,6])
d2 = np.array([5.4,5.2,6.5,5.9,6,5.8])
ttest_rel(d1,d2) #返回双尾p值
二项分布假设性检验(样本中事件发生的频率估计总体事件概率)
from scipy import stats
stats.binom_test(101, n=400, p=0.2, alternative='greater')#事件发生的频率实为100
二项式分布是一种离散分布,如果你想测试P(X>=N),就必须将它更改为P(X>N+1)
import numpy as np
from scipy import stats
#自定义函数计算p值
def binomtest_p(x, p, n):
"""
x:事件发生的次数
n:样本量
p:假设检验的概率
return:返回单尾p值
"""
p_success = x/n
z = (p_success - p)/np.sqrt(p*(1-p)/n)
p_value = stats.norm.sf(z)
return (z,p_value)
两个总体比率的假设检验
from scipy import stats
import numpy as np
def test(n1,p1,n2,p2):
p = (n1*p1+n2*p2)/(n1+n2)
z = (p1-p2)/np.sqrt(p*(1-p)*((1/n1)+(1/n2)))
p_value = stats.norm.sf(z)
return (z,p_value)
上一篇: 在Matlab中利用EMD分析
下一篇: 关于pandas