欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《商务与经济统计》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)