描述:在Scipy的模块中,有一个统计的木块——States,其中函数有描述统计(describe)、峰度(kurtosis)、偏度(skew)、众数(mode)、n阶矩。
分布:还有一些分布函数,正泰分布(norm)、对数正态分布(lognorm)、……
计算:针对这些分布函数,有一些通用的的函数,生成符合分布的随机数(rvs)、概率密度函数(pdf)、累计分布函数(cdf)、残存函数(sf ,也就是1-cdf)、分位点函数(ppf,也就是cdf的反函数)、残存函数的逆函数(isf)、用最大似然估计法得出最适合的概率密度函数(fit)。
检验:正态性检验函数有四种:KS检验、AD检验、SW检验、是否服从正态分布检验。
模型:统计模型(StatsModels)中,主要的线性回归模型和对应函数有:普通最小二乘法(OLS)、广义最小二乘法(GLS)、加权最小二乘法(WLS)、带有自相关误差模型的广义最小二乘法(GLASAR)、广义线性模型(GLM)、使用M个估计量的鲁棒线性模型(RLM)、混合效应模型(mixed)、广义加性模型(gam)。
python的统计函数库scipy.stats是一个很棒的统计包,其中常用的功能能够满足包括各种概率分布的cdf、pdf、ppf计算,t检验,f检验,pearsonr相关系数及p值、峰度偏度、MSE等所有本科阶段计量经济学与统计的所有需求。
一、参数估计
1.方差σ已知时μ的置信区间
例,某大学男生体重W服从正态分布N(μ,1.2)。现抽取10名学生,测得体重如下(单位:斤),122,130,139,168,125,160,155,189,107,164,试求平均体重为95%的置信区间。
程序代码为
import scipy.stats as stats
import numpy as np
p = 0.025
weight = [122,130,139,168,125,160,155,189,107,164]
low = np.mean(weight) - stats.norm.ppf(q=1-p)*(np.sqrt(1.2)/np.sqrt(len(weight)))
up = np.mean(weight) + stats.norm.ppf(q=1-p)*(np.sqrt(1.2)/np.sqrt(len(weight)))
#(low,up)即为其置信区间
stats.norm.ppf()即可以求得在某一置信水平下的标准正态分布函数。
其主要用法为(参数loc默认为零,scale默认为1,不用管它们,下从stats.norm.pdf略)
stats.norm.rvs(loc=0,scale=1,size=n),生成n个服从正态分布的随机数
stats.norm.pdf(x),计算概率密度函数
stats.norm.cdf(x),计算累计密度函数
stats.norm.ppf(q),计算z值
stats.norm.var()/stats.norm.std()/stats.norm.mean()/stats.norm.median(),计算分布的方差/标准差/均值/中位数
2.方差未知时μ的置信区间
同理,可以使用stats.t.ppf(p,n)来计算自由度为n,概率为p的t分布的t值
stats.t的用法与stats.norm大致相同
3. μ 未知时 σ2 的置信区间
from scipy.stats import chi2
通过chi2.ppf(p,n)计算概率为p,自由度为n的卡方值
4. ,σ12,σ22 已知,求 μ1−μ2 在 1−α 置信水平下的置信区间
5. σ12=σ22=σ 时 μ1−μ2 在 1−α 置信水平下的置信区间
4、5均与上述方法相同
6. ,μ1,μ2 未知时 σ12σ22 在 1−α 置信水平下的置信区间
from scipy.stats import f
通过f.ppf(p,n1,n2)计算概率为p,自由度为(n1,n2)的F值
二、参数假设检验
1.单个样本t检验
from scipy import stats
stats.ttest_1samp(a,popmean,axis=0)
scipy.stats.ttest_1samp(a,popmean,axis=0)
计算一组数据的平均值的t检验。这是对零假设的双边检验,零假设是独立观察样本a的期望值(均值)等于给定的总体均值。a是观测样本,popmean=零假设的期望值。
2.两个独立样本t检验
from scipy import stats
stats.ttest_ind(a,b)
scipy.stats.ttest_ind(a,b,axis=0,equal_var=True)
计算两个独立的数据样本的均值的t检验。这是对两个独立样本具有相同平均值(期望值)的零假设的双边检验。这个检验假设总体有相同的方差。a,b为两组样本数据。
3.配对样本t检验
from scipy import stats
t,p = stats.ttest_rel(a,b)
#t为t值,p为p-value
scipy.stats.ttest_rel(a,b,axis=0)
计算两个相关的分数样本a和b的t检验。
这是对两个相关或重复样本具有相同平均(期望)值的原假设的双边检验
4.单样本方差假设检验
单样本方差检验的程序编写很简单,略
至此为止,scipy库的主要应用就结束了,后面会偶尔还用到scipy库。接下来,将主要通过statsmodel库进行计量的学习。
5.双样本方差假设检验
双样本方差的假设检验用来判断两个样本的波动情况是否相同。anova_lm()函数常用来进行两样本的F检验(双样本方差假设检验)。
import statsmodels.formula.api as smf #首先导入statsmodel库
import statsmodel.formula.api import ols #statsmodel库可以进行回归
import statsmodel.stats.anova import anova_lm #方差分析
formula = 'Y~x'
model = ols(formula,data).fit() #data是Dataframe数据集
results = anova_lm(model) #方差分析,计算F和p-value
print(results)
python计量经济学分析-学习笔记 - 知乎