statsmodels.genmod.generalized_linear_model.GLM¶
-
class statsmodels.genmod.generalized_linear_model.GLM(endog, exog, family=
None, offset=None, exposure=None, freq_weights=None, var_weights=None, missing='none', **kwargs)[source]¶ 广义线性模型
GLM 继承自 statsmodels.base.model.LikelihoodModel
- Parameters:¶
- endogarray_like
内生响应变量的1维数组。这个数组可以是1维或2维。 二项分布族模型接受一个包含两列的2维数组。如果提供,每个观测值应为[成功, 失败]。
- exogarray_like
一个 nobs x k 的数组,其中 nobs 是观测值的数量,k 是回归变量的数量。默认情况下不包含截距,应由用户添加(使用公式指定的模型默认包含截距)。请参阅 statsmodels.tools.add_constant。
- family
familyclassinstance 默认是高斯分布。要指定二项分布 family = sm.family.Binomial() 每个分布族可以接受一个链接实例作为参数。更多信息请参见 statsmodels.family.family。
- offsetarray_like or
None 模型中要包含的偏移量。如果提供,必须是与exog行数相同长度的数组。
- exposurearray_like or
None Log(exposure) 将被添加到模型中的线性预测中。 只有在使用对数链接时,Exposure 才有效。如果提供,它必须是一个与 endog 长度相同的数组。
- freq_weightsarray_like
1维频率权重数组。默认值为 None。如果选择 None 或空白值,则算法将替换为长度等于 endog 的 1 的数组。 警告:对于所有可能的选项和结果,使用权重尚未经过验证,请参阅注释。
- var_weightsarray_like
1维方差(分析)权重数组。默认值为 None。如果选择 None 或空白值,则算法将替换为长度等于 endog 的 1 的数组。 警告:对于所有可能的选项和结果,使用权重尚未经过验证,请参阅注释。
- missing
str 可用的选项是‘none’、‘drop’和‘raise’。如果选择‘none’,则不进行nan检查。如果选择‘drop’,则会删除任何包含nan的观测值。如果选择‘raise’,则会引发错误。默认值是‘none’。
- Attributes:¶
- df_model
float 模型的自由度等于 p - 1,其中 p 是回归变量的数量。请注意,截距不被报告为自由度。
- df_resid
float 残差自由度等于观测数n减去回归变量数p。
- endog
ndarray 请参阅注释。 请注意,endog 是对数据的引用,因此如果数据已经是一个数组并且它发生了变化,那么 endog 也会随之变化。
- exposurearray_like
在模型中包含ln(exposure),并将系数约束为1。仅当链接函数为对数函数时才能使用。
- exog
ndarray 请参阅注释。 请注意,exog 是对数据的引用,因此如果数据已经是一个数组并且它发生了变化,那么 exog 也会随之变化。
- freq_weights
ndarray 请参阅注释。请注意,freq_weights 是对数据的引用,因此如果数据已经是一个数组并且发生了变化,那么 freq_weights 也会随之变化。
- var_weights
ndarray 请参阅注释。请注意,var_weights 是对数据的引用,因此如果数据已经是一个数组并且被更改,那么 var_weights 也会随之更改。
- iteration
int fit 已经运行的迭代次数。初始化为 0。
- family
familyclassinstance 模型的分布族。可以是statsmodels.families中的任何族。默认是高斯分布。
- mu
ndarray 变换变量的平均响应。mu 是在 lin_pred 处的链接函数的逆的值,其中 lin_pred 是变换变量的 WLS 拟合的线性预测值。mu 只有在调用 fit 之后才可用。有关更多信息,请参阅分布族的 statsmodels.families.family.fitted。
- n_trials
ndarray 请参阅注释。请注意,n_trials 是对数据的引用,因此如果数据已经是一个数组并且发生了变化,那么 n_trials 也会随之变化。n_trials 是二项试验的次数,仅在该分布中可用。有关更多信息,请参阅 statsmodels.families.Binomial。
- normalized_cov_params
ndarray 设计/外生数据的相关性归一化协方差。 这大约等于 (X.T X)^(-1)
- offsetarray_like
在模型中包含偏移量,并将系数约束为1。
- scale
float 模型拟合的尺度/离散度的估计。只有在调用fit之后才可用。更多信息请参见GLM.fit和GLM.estimate_scale。
- scaletype
str 用于拟合模型的缩放。 这仅在调用fit之后可用。 默认值为None。 有关更多信息,请参见GLM.fit。
- weights
ndarray 最后一次迭代后权重的值。只有在调用fit之后才可用。请参阅statsmodels.families.family以了解特定分布的权重函数。
- df_model
注释
注意:PerfectSeparationError 异常已转换为 PerfectSeparationWarning,默认情况下,完美分离或完美预测不会引发异常。(在版本 0.14 中更改)
以下组合对 family 和 link 有意义:
家庭
标识符
日志
逻辑回归
概率单位
互补对数对数
幂
opow
负二项分布
对数对数
逻辑
高斯
x
x
x
x
x
x
x
x
x
逆高斯
x
x
x
二项式
x
x
x
x
x
x
x
x
x
泊松
x
x
x
负二项分布
x
x
x
x
伽马
x
x
x
Tweedie
x
x
x
并非所有这些链接函数当前都可用。
Endog 和 exog 是引用,因此如果它们所引用的数据已经是数组并且这些数组发生了变化,endog 和 exog 也会随之改变。
statsmodels 支持两种不同的权重定义:频率权重和方差权重。
频率权重产生的结果与按频率重复观测值(如果这些频率是整数)的结果相同。频率权重将保持观测值的数量不变,但自由度将改变以反映新的权重。
方差权重(在其他包中称为解析权重)用于当
endog表示平均值或均值时。这基于一个假设,即方差的倒数与权重成比例——被认为更可信的观测值应具有较小的方差,因此具有更大的权重。对于Poisson族——假设事件的发生与时间成比例——一个自然的做法是使用时间量作为方差权重,并将endog设置为速率(每时间段的事件发生次数)。类似地,使用复合泊松族,即Tweedie,对事件发生率(或频率)的方差与时间成比例的假设类似。频率和方差权重都已针对所有基本结果进行了验证,无论是否使用异方差稳健的
cov_type。其他稳健协方差类型尚未经过验证,并且至少目前的小样本校正并不是基于正确的总频率计数。目前,所有残差都没有根据频率进行加权,尽管它们可能包含用于
Binomial和var_weights的n_trials残差类型
适用的权重
安斯科姆
var_weights偏差
var_weights皮尔逊
var_weights和n_trials响应
n_trials工作中
n_trials警告:在对数似然度和偏差在尺度等于1的模型中无效(即,
Binomial、NegativeBinomial和Poisson)。如果指定了方差权重,则诸如loglike和deviance的结果基于准似然解释。在这种情况下,对数似然度未正确指定,并且基于它的统计数据,如AIC或似然比检验,是不合适的。示例
>>> import statsmodels.api as sm >>> data = sm.datasets.scotland.load() >>> data.exog = sm.add_constant(data.exog)使用默认的链接函数实例化一个伽马族模型。
>>> gamma_model = sm.GLM(data.endog, data.exog, ... family=sm.families.Gamma())>>> gamma_results = gamma_model.fit() >>> gamma_results.params array([-0.01776527, 0.00004962, 0.00203442, -0.00007181, 0.00011185, -0.00000015, -0.00051868, -0.00000243]) >>> gamma_results.scale 0.0035842831734919055 >>> gamma_results.deviance 0.087388516416999198 >>> gamma_results.pearson_chi2 0.086022796163805704 >>> gamma_results.llf -83.017202161073527方法
estimate_scale(mu)估计离散度/尺度。
estimate_tweedie_power(mu[, method, low, high])Tweedie 特定函数用于估计尺度参数和方差参数。
fit([start_params, maxiter, method, tol, ...])拟合给定族的广义线性模型。
fit_constrained(constraints[, start_params])拟合受线性等式约束的模型
fit_regularized([method, alpha, ...])返回一个正则化的线性回归模型的拟合结果。
from_formula(公式, 数据[, 子集, 删除列])从公式和数据框创建模型。
get_distribution(params[, scale, exog, ...])返回预测分布的一个实例。
hessian(params[, scale, observed])Hessian,对数似然函数的二阶导数
hessian_factor(params[, scale, observed])计算Hessian的权重
information(参数[, 尺度])费舍尔信息矩阵。
初始化一个广义线性模型。
loglike(params[, scale])评估广义线性模型的对数似然值。
loglike_mu(mu[, scale])评估广义线性模型的对数似然值。
predict(params[, exog, exposure, offset, ...])返回设计矩阵的预测值
score(params[, scale])得分,对数似然函数的导数
score_factor(params[, scale])每个观测值的分数权重
score_obs(params[, scale])每个观测值的对数似然的一阶导数得分。
score_test(params_constrained[, ...])用于限制条件或遗漏变量的得分检验
属性
内生变量的名称。
外生变量的名称。