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

familyfamily class instance

默认是高斯分布。要指定二项分布 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 的数组。 警告:对于所有可能的选项和结果,使用权重尚未经过验证,请参阅注释。

missingstr

可用的选项是‘none’、‘drop’和‘raise’。如果选择‘none’,则不进行nan检查。如果选择‘drop’,则会删除任何包含nan的观测值。如果选择‘raise’,则会引发错误。默认值是‘none’。

Attributes:
df_modelfloat

模型的自由度等于 p - 1,其中 p 是回归变量的数量。请注意,截距不被报告为自由度。

df_residfloat

残差自由度等于观测数n减去回归变量数p。

endogndarray

请参阅注释。 请注意,endog 是对数据的引用,因此如果数据已经是一个数组并且它发生了变化,那么 endog 也会随之变化。

exposurearray_like

在模型中包含ln(exposure),并将系数约束为1。仅当链接函数为对数函数时才能使用。

exogndarray

请参阅注释。 请注意,exog 是对数据的引用,因此如果数据已经是一个数组并且它发生了变化,那么 exog 也会随之变化。

freq_weightsndarray

请参阅注释。请注意,freq_weights 是对数据的引用,因此如果数据已经是一个数组并且发生了变化,那么 freq_weights 也会随之变化。

var_weightsndarray

请参阅注释。请注意,var_weights 是对数据的引用,因此如果数据已经是一个数组并且被更改,那么 var_weights 也会随之更改。

iterationint

fit 已经运行的迭代次数。初始化为 0。

familyfamily class instance

模型的分布族。可以是statsmodels.families中的任何族。默认是高斯分布。

mundarray

变换变量的平均响应。mu 是在 lin_pred 处的链接函数的逆的值,其中 lin_pred 是变换变量的 WLS 拟合的线性预测值。mu 只有在调用 fit 之后才可用。有关更多信息,请参阅分布族的 statsmodels.families.family.fitted。

n_trialsndarray

请参阅注释。请注意,n_trials 是对数据的引用,因此如果数据已经是一个数组并且发生了变化,那么 n_trials 也会随之变化。n_trials 是二项试验的次数,仅在该分布中可用。有关更多信息,请参阅 statsmodels.families.Binomial。

normalized_cov_paramsndarray

设计/外生数据的相关性归一化协方差。 这大约等于 (X.T X)^(-1)

offsetarray_like

在模型中包含偏移量,并将系数约束为1。

scalefloat

模型拟合的尺度/离散度的估计。只有在调用fit之后才可用。更多信息请参见GLM.fit和GLM.estimate_scale。

scaletypestr

用于拟合模型的缩放。 这仅在调用fit之后可用。 默认值为None。 有关更多信息,请参见GLM.fit。

weightsndarray

最后一次迭代后权重的值。只有在调用fit之后才可用。请参阅statsmodels.families.family以了解特定分布的权重函数。

注释

注意: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。其他稳健协方差类型尚未经过验证,并且至少目前的小样本校正并不是基于正确的总频率计数。

目前,所有残差都没有根据频率进行加权,尽管它们可能包含用于Binomialvar_weightsn_trials

残差类型

适用的权重

安斯科姆

var_weights

偏差

var_weights

皮尔逊

var_weightsn_trials

响应

n_trials

工作中

n_trials

警告:在对数似然度和偏差在尺度等于1的模型中无效(即,BinomialNegativeBinomialPoisson)。如果指定了方差权重,则诸如loglikedeviance的结果基于准似然解释。在这种情况下,对数似然度未正确指定,并且基于它的统计数据,如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(参数[, 尺度])

费舍尔信息矩阵。

initialize()

初始化一个广义线性模型。

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[, ...])

用于限制条件或遗漏变量的得分检验

属性

endog_names

内生变量的名称。

exog_names

外生变量的名称。


Last update: Oct 16, 2024