Python手册(Machine Learning)--statsmodels(Regression)
Regression一般线性回归TheoryModel ClassesResults ClassesExamples广义线性回归TheoryModel ClassesResults ClassesExamples广义估算方程线性混合模型离散因变量回归ExamplesPython手册(Machine Learning)–statsmodels(Quickstart)Python手册(Machi...
本站已停止更新,查看最新内容请移至本人博客https://wilenwu.gitee.io
Regression
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 | 递归最小二乘法 |
| Methods | desc |
|---|---|
| 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 |
| Attributes | desc |
|---|---|
| df_model | 模型自由度,定义为回归矩阵的秩,如果包括常数则减1 |
| df_resid | 剩余自由度,定义为观察数减去回归矩阵的rank |
Results Classes
| Results Classes | 结果类 |
|---|---|
| RegressionResults | 总结了线性回归模型的拟合 |
| OLSResults | OLS模型的结果类 |
| PredictionResults | |
| QuantRegResults | QuantReg模型的结果实例 |
| Methods | desc |
|---|---|
| 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) Yi∼FEDM(⋅∣θ,ϕ,wi) and μ i = E [ Y i ∣ x i ] = g − 1 ( x i ′ β ) μ_i=E[Y_i|x_i]=g^{-1}(x^′_i β) μi=E[Yi∣xi]=g−1(xi′β)
Model ClassesGLM(endog, exog, family=None)
Parameters:
endog (array-like)
exog (array-like)
family (family class instance) – The default is Gaussian
| Methods | desc |
|---|---|
| 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
| Families | desc |
|---|---|
| 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 Functions | desc |
|---|---|
| Link | 单参数指数族的通用链接函数。 |
| CDFLink([DBN]) | 使用scipy.stats发行版的CDF |
| CLogLog | 互补的log-log变换 |
| Log | 对数转换 |
| Logit | logit变换 |
| NegativeBinomial([α]) | 负二项式link函数 |
| Power([power]) | 指数转换 |
| cauchy() | Cauchy(标准Cauchy CDF)变换 |
| cloglog | CLogLog转换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估计浪潮。 |
| Hampe | Hampel函数用于M估计。 |
| HuberT | 胡伯的T为M估计。 |
| LeastSquares | M估计的最小二乘ρ及其派生函数。 |
| RamsayE | Ramsay的Ea用于M估计。 |
| RobustNorm | 用于稳健回归的规范的父类。 |
| TrimmedMean | 用于M估计的修正均值函数。 |
| TukeyBiweight | Tukey的M估计的权重函数。 |
| estimate_location | 使用self.norm和当前的尺度估计量的位置M估计量。 |
| Scale | |
| Huber | Huber提出的联合估计地点和规模的建议2。 |
| HuberScale | Huber用于拟合鲁棒线性模型的缩放比例。 |
| mad | 沿数组给定轴的中值绝对偏差 |
| hubers_scale | Huber用于拟合鲁棒线性模型的缩放比例。 |
# 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 Classes | desc |
|---|---|
| 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 |
更多推荐


所有评论(0)