Python手册(Machine Learning)--statsmodels(Regression)

本站已停止更新,查看最新内容请移至本人博客https://wilenwu.gitee.io


Python手册(Machine Learning)–statsmodels(GettingStarted)
Python手册(Machine Learning)–statsmodels(Regression)
Python手册(Machine Learning)–statsmodels(ANOVA)
Python手册(Machine Learning)–statsmodels(Tables+Imputation)
Python手册(Machine Learning)–statsmodels(MultivariateStatistics)
Python手册(Machine Learning)–statsmodels(TimeSeries)
Python手册(Machine Learning)–statsmodels(Survival)
Python手册(Machine Learning)–statsmodels(Graphics)


Linear Regression(线性回归)

https://www.statsmodels.org/stable/regression.html

import statsmodels.api as sm
适用于自变量X和因变量Y为线性关系,具体来说,画出散点图可以用一条直线来近似拟合。一般线性模型要求观测值之间相互独立、残差(因变量)服从正态分布、残差(因变量)方差齐性
统计模型被假定为 Y=Xβ+μ, μ∼N(0,Σ)

Model Classes

Model Classes模型类
OLS一个简单的普通最小二乘模型。
GLS具有一般协方差结构的广义最小二乘模型
WLS具有对角但非标识协方差结构的回归模型
GLSAR具有AR(p)协方差结构的回归模型。
yule_walker使用Yule-Walker方程从序列X估计AR(p)参数
QuantReg分位数回归
RecursiveLS递归最小二乘法
Methodsdesc
fit()Full fit of the model
from_formula(formula, data)Create a Model from a formula and dataframe
predict(params)Return linear predicted values from a design matrix.
score(params)Evaluate the score function at a given point
Attributesdesc
df_model模型自由度,定义为回归矩阵的秩,如果包括常数则减1
df_resid剩余自由度,定义为观察数减去回归矩阵的rank

Results Classes

Results Classes结果类
RegressionResults总结了线性回归模型的拟合
OLSResultsOLS模型的结果类
PredictionResults
QuantRegResultsQuantReg模型的结果实例
Methodsdesc
aic(), bic(), bse()…
cov_params()返回方差/协方差矩阵
eigenvals()返回按降序排序的特征值
fvalue(), pvalues(), f_pvalue(), tvalues()
f_test(r_matrix), t_test()F检验,t检验
get_prediction()计算预测结果
save(fname), load(fname)保存pickle,加载(类方法)

Examples

# Load modules and data
In [1]: import numpy as np
In [2]: import statsmodels.api as sm
In [3]: spector_data = sm.datasets.spector.load()
In [4]: spector_data.exog = sm.add_constant(spector_data.exog, prepend=False)

# Fit and summarize OLS model
In [5]: mod = sm.OLS(spector_data.endog, spector_data.exog)
In [6]: res = mod.fit()
In [7]: res.summary()

Generalized Linear(广义线性回归)

http://www.statsmodels.org/stable/glm.html#module-reference

是为了克服线性回归模型的缺点出现的,是线性回归模型的推广。首先自变量可以是离散的,也可以是连续的。离散的可以是0-1变量,也可以是多种取值的变量。广义线性模型又取消了对残差(因变量)服从正态分布的要求。残差不一定要服从正态分布,可以服从二项、泊松、负二项、正态、伽马、逆高斯等分布,这些分布被统称为指数分布族。
与线性回归模型相比较,有以下推广:

  • 随机误差项不一定服从正态分布,可以服从二项、泊松、负二项、正态、伽马、逆高斯等分布,这些分布被统称为指数分布族。
  • 引入link函数 g ( ⋅ ) g(\cdot ) g()。因变量和自变量通过联接函数产生影响。根据不同的数据,可以自由选择不同的模型。大家比较熟悉的Logit模型就是使用Logit联接、随机误差项服从二项分布得到模型。

The statistical model for each observation ii is assumed to be
Y i ∼ F E D M ( ⋅ ∣ θ , ϕ , w i ) Y_i ∼F_{EDM}(⋅|θ,ϕ,w_i) YiFEDM(θ,ϕ,wi) and μ i = E [ Y i ∣ x i ] = g − 1 ( x i ′ β ) μ_i=E[Y_i|x_i]=g^{-1}(x^′_i β) μi=E[Yixi]=g1(xiβ)

Model Classes
GLM(endog, exog, family=None)

Parameters:
endog (array-like)
exog (array-like)
family (family class instance) – The default is Gaussian

Methodsdesc
fit()Full fit of the model
from_formula(formula, data)Create a Model from a formula and dataframe
predict(params)Return linear predicted values from a design matrix.
score(params)Evaluate the score function at a given point

Results Classes

Results Classes结果类
GLMResults包含GLM结果的类。
PredictionResults

Families

Familiesdesc
Family(link,variances)单参数指数族的父类。
Binomial(link=None)二项式指数族分布。
Gamma(link=None)Gamma指数族分布。
Gaussian(link=None)高斯指数族分布。
InverseGaussian(link=None)InverseGaussian指数族。
NegativeBinomial(link=None,alpha=None)负二项指数族。
Poisson(link=None)泊松指数族。
Tweedie(link=None,var_power=None)Tweedie。

Link Functions

>>> sm.families.family.<familyname>.links
Link Functionsdesc
Link单参数指数族的通用链接函数。
CDFLink([DBN])使用scipy.stats发行版的CDF
CLogLog互补的log-log变换
Log对数转换
Logitlogit变换
NegativeBinomial([α])负二项式link函数
Power([power])指数转换
cauchy()Cauchy(标准Cauchy CDF)变换
cloglogCLogLog转换link函数。
identity()identity转换
inverse_power()逆变换
inverse_squared()逆平方变换
nbinom([α])负二项式link函数。
probit([DBN])probit(标准普通CDF)变换

Examples

In [1]: import statsmodels.api as sm
In [2]: data = sm.datasets.scotland.load()
In [3]: data.exog = sm.add_constant(data.exog)
# Instantiate a gamma family model with the default link function.
In [4]: gamma_model = sm.GLM(data.endog, data.exog, family=sm.families.Gamma())
In [5]: gamma_results = gamma_model.fit()
In [6]: print(gamma_results.summary())
In [7]: gamma_results = gamma_model.fit()
In [8]: gamma_results.params

Generalized Estimating Equations(广义估计方程)

http://www.statsmodels.org/stable/gee.html
实际工作中一些资料由于部分观察值含有非独立或相关的信息,不能用传统的一般线性(或广义线性进行分析),故而发展出了广义估计方程。如纵向数据,重复测量数据,整群抽样设计资料,聚集性资料或是多次层次系统结构资料。

纵向数据(longitudinal data):是按照时间顺序对个体某指标进行重复测量得到的数据,同一对象的多次测量成相关性(倾向),如儿童的生长检测资料

Model Classes模型类
GEE用广义估计方程(GEE)估计边际回归模型。
Results Classes结果类
GEEResults总结了使用GEE的边际回归模型的适合性。
GEEMargins与GEE匹配的回归模型的估计边际效应。
Dependence Structures依赖结构
CovStruct分组数据的相关性和协方差结构的基类。
Autoregressive一阶自回归工作依赖结构。
Exchangeable可交换的工作依赖结构。
GlobalOddsRatio估算具有序数或名义数据的GEE的全局优势比。
Independence独立工作依赖结构。
Nested嵌套的工作相关结构。
In [1]: import statsmodels.api as sm
In [2]: import statsmodels.formula.api as smf
In [3]: data = sm.datasets.get_rdataset('epil', package='MASS').data
In [4]: fam = sm.families.Poisson()
In [5]: ind = sm.cov_struct.Exchangeable()
In [6]: mod = smf.gee("y ~ age + trt + base", "subject", data,
   ...:               cov_struct=ind, family=fam)
In [7]: res = mod.fit()
In [8]: print(res.summary())

Robust Linear Models(稳健的线性模型)

http://www.statsmodels.org/stable/rlm.html
稳健回归(robust regression)是将稳健估计方法用于回归模型,以拟合大部分数据存在的结构,同时可识别出潜在可能的离群点、强影响点或与模型假设相偏离的结构。当误差服从正态分布时,其估计几乎和最小二乘估计一样好,而最小二乘估计条件不满足时,其结果优于最小二乘估计。

Model Classes模型类
RLM稳健的线性模型
Results Classes结果类
RLMResults包含RLM结果的类
Norms
AndrewWave安德鲁的M估计浪潮。
HampeHampel函数用于M估计。
HuberT胡伯的T为M估计。
LeastSquaresM估计的最小二乘ρ及其派生函数。
RamsayERamsay的Ea用于M估计。
RobustNorm用于稳健回归的规范的父类。
TrimmedMean用于M估计的修正均值函数。
TukeyBiweightTukey的M估计的权重函数。
estimate_location使用self.norm和当前的尺度估计量的位置M估计量。
Scale
HuberHuber提出的联合估计地点和规模的建议2。
HuberScaleHuber用于拟合鲁棒线性模型的缩放比例。
mad沿数组给定轴的中值绝对偏差
hubers_scaleHuber用于拟合鲁棒线性模型的缩放比例。
# Load modules and data
In [1]: import statsmodels.api as sm
In [2]: data = sm.datasets.stackloss.load()
In [3]: data.exog = sm.add_constant(data.exog)

# Fit model and print summary
In [4]: rlm_model = sm.RLM(data.endog, data.exog,M=sm.robust.norms.HuberT())
In [5]: rlm_results = rlm_model.fit()
In [6]: print(rlm_results.params)
[-41.0265   0.8294   0.9261  -0.1278]

Linear Mixed Effects Models(线性混合效应模型)

http://www.statsmodels.org/stable/mixed_linear.html
参考链接:https://blog.csdn.net/sinat_26917383/article/details/51636011

在线性模型中加入随机效应项,消了观测值之间相互独立和残差(因变量)方差齐性的要求。

Model Classes模型类
MixedLM
Results Classes结果类
MixedLMResults
In [1]: import statsmodels.api as sm
In [2]: import statsmodels.formula.api as smf
In [3]: data = sm.datasets.get_rdataset("dietox", "geepack").data
In [4]: md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"])
In [5]: mdf = md.fit()
In [6]: print(mdf.summary())

Regression with Discrete Dependent Variable(具有离散因变量的回归)

http://www.statsmodels.org/stable/discretemod.html

Model Classesdesc
Logit(endog,exog,**kwargs)二元logit模型
Probit(endog,exog,**kwargs)二元Probit模型
MNLogit(endog,exog,**kwargs)多项logit模型
Poisson(endog, exog[, offset, exposure, missing])计数数据的泊松模型
NegativeBinomial(endog,exog [,…])计数数据的负二项模型
NegativeBinomialP(endog,exog [,p,offset,…])计数数据的广义负二项(NB-P)模型
GeneralizedPoisson(endog,exog [,p,offset,…])计数数据的广义Poisson模型
ZeroInflatedPoisson(endog,exog [,…])用于计数数据的泊松零膨胀模型
ZeroInflatedNegativeBinomialP(endog,exog [,…])计数数据的零膨胀广义负二项模型
ZeroInflatedGeneralizedPoisson(endog,exog)计数数据的零膨胀广义Poisson模型
Results Classes结果类
LogitResults(model,mlefit [,cov_type,…])Logit Model的结果类
ProbitResults(model,mlefit [,cov_type,…])Probit模型的结果类
CountResults(model,mlefit [,cov_type,…])计数数据的结果类
MultinomialResults(model,mlefit [,…])多项数据的结果类
NegativeBinomialResults(model,mlefit [,…])NegativeBinomial 1和2的结果类
GeneralizedPoissonResults(model,mlefit [,…])广义泊松分析的结果类
ZeroInflatedPoissonResults(model,mlefit [,…])零膨胀泊松的结果类
ZeroInflatedNegativeBinomialResults零膨胀一般化负二项式的结果类
ZeroInflatedGeneralizedPoissonResults零膨胀广义泊松的结果类

DiscreteModel是所有离散回归模型的超类。估算结果作为其中一个子类的实例返回 DiscreteResults。模型的每个类别(二进制,计数和多项)都有其自己的中级模型和结果类。这个中间类主要是为了方便实现由DiscreteModel和 定义的方法和属性DiscreteResults。

DiscreteModel(endog,exog,** kwargs)抽象类用于离散选择模型。
DiscreteResults(model,mlefit [,cov_type,…])离散因变量模型的结果类。
BinaryModel(endog,exog,** kwargs)
BinaryResults(model,mlefit [,cov_type,…])二进制数据的结果类
CountModel(endog,exog [,offset,exposure,…])
MultinomialModel(endog,exog,** kwargs)
GenericZeroInflated(endog,exog [,…])Generiz Zero计数数据的充气模型

Examples

# Load the data from Spector and Mazzeo (1980)
In [1]: spector_data = sm.datasets.spector.load()
In [2]: spector_data.exog = sm.add_constant(spector_data.exog)
# Logit Model
In [3]: logit_mod = sm.Logit(spector_data.endog, spector_data.exog)
In [4]: logit_res = logit_mod.fit()
Optimization terminated successfully.
 Current function value: 0.402801
 Iterations 7
In [5]: print(logit_res.summary())

Generalized Linear Mixed Effects Models(广义线性混合效应模型)

http://www.statsmodels.org/stable/mixed_glm.html
广义线性混合效应模型是混合效应模型的推广

Model Classes模型类
BinomialBayesMixedGLM用贝叶斯方法拟合广义线性混合模型。
PoissonBayesMixedGLM用贝叶斯方法拟合广义线性混合模型。
Results Classes结果类
BayesMixedGLMResults
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值