Python 逻辑回归作为回归的实现(不是分类!)
Python Implementation of Logistic Regression as Regression (Not Classification!)
我有一个回归问题,我想对其使用逻辑回归——而不是逻辑分类——因为我的目标变量 y
是 0 到 1 之间的连续量。但是,逻辑回归在 Python 似乎完全是逻辑分类。我还查看了 GLM 实现,none 似乎实现了一个 sigmoid link 函数。有人可以指出 Python 逻辑回归作为回归算法的实现方向吗?
对不起,如果我不明白逻辑分类是建立在逻辑回归的基础上的(加上一些分类规则)。我以前用过Sklearn
,也用过statsmodels
。如果您需要,我们提供了一个简单的教程 here。简而言之,您可以使用
import statsmodels.api as sm
mod = sm.Logit(y, x)
result = logit_model.fit()
result.summary()
from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression
mod2 = log_reg.fit(x, y) # assuming x and y are colums from a pandas df
print(clf.coef_, clf.intercept_)
在 statsmodels 中,只要值被限制在区间 [0, 1] 内,具有二项式家族的 GLM 和离散模型 Logit 都允许使用连续的目标变量。
同样,泊松对于模拟非负值连续数据非常有用。
在这些情况下,模型是按准最大似然 QMLE 估计的,而不是 MLE,因为分布假设不正确。然而,我们可以正确地(一致地)估计均值函数。推理需要基于错误指定稳健的标准错误,这些标准错误可作为 fit
选项 cov_type="HC0"
这是一个带有示例的笔记本
https://www.statsmodels.org/dev/examples/notebooks/generated/quasibinomial.html
QMLE 和小数 Logit 的一些背景问题
https://www.github.com/statsmodels/statsmodels/issues/2040 QMLE
https://github.com/statsmodels/statsmodels/issues/2712
参考
帕普克,L.E。和 Wooldridge,J.M。 (1996),分数响应变量的计量经济学方法及其对 401(k) 计划参与率的应用。 J. 申请。经济学,11:619-632。 https://doi.org/10.1002/(SICI)1099-1255(199611)11:6<619::AID-JAE418>3.0.CO;2-1
更新和警告
截至 statsmodels 0.12
进一步调查,我发现离散 Probit 不支持连续区间数据。它使用假定因变量的值为 0 或 1 的计算快捷方式。但是,在这种情况下它不会引发异常。
https://github.com/statsmodels/statsmodels/issues/7210
Discrete Logit 可以正确处理具有优化方法“newton”的连续数据。对数似然函数本身使用与 Probit 类似的计算快捷方式,但不使用 Logit 的导数和其他部分。
GLM-Binomial 是为区间数据设计的,没有问题。目前唯一的数值精度问题是probit的Hessianlink,它使用数值导数,不是很精确,这意味着参数估计很好,但标准误差在GLM-Probit中可能有数值噪声。
更新
statsmodels 0.12.2 的两个变化:
如果响应不是整数值,Probit 现在会引发异常,并且
GLM Binomial with Probit link 使用改进的 Hessian 导数,精度现在与离散 Probit 相似。
我有一个回归问题,我想对其使用逻辑回归——而不是逻辑分类——因为我的目标变量 y
是 0 到 1 之间的连续量。但是,逻辑回归在 Python 似乎完全是逻辑分类。我还查看了 GLM 实现,none 似乎实现了一个 sigmoid link 函数。有人可以指出 Python 逻辑回归作为回归算法的实现方向吗?
对不起,如果我不明白逻辑分类是建立在逻辑回归的基础上的(加上一些分类规则)。我以前用过Sklearn
,也用过statsmodels
。如果您需要,我们提供了一个简单的教程 here。简而言之,您可以使用
import statsmodels.api as sm
mod = sm.Logit(y, x)
result = logit_model.fit()
result.summary()
from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression
mod2 = log_reg.fit(x, y) # assuming x and y are colums from a pandas df
print(clf.coef_, clf.intercept_)
在 statsmodels 中,只要值被限制在区间 [0, 1] 内,具有二项式家族的 GLM 和离散模型 Logit 都允许使用连续的目标变量。
同样,泊松对于模拟非负值连续数据非常有用。
在这些情况下,模型是按准最大似然 QMLE 估计的,而不是 MLE,因为分布假设不正确。然而,我们可以正确地(一致地)估计均值函数。推理需要基于错误指定稳健的标准错误,这些标准错误可作为 fit
选项 cov_type="HC0"
这是一个带有示例的笔记本 https://www.statsmodels.org/dev/examples/notebooks/generated/quasibinomial.html
QMLE 和小数 Logit 的一些背景问题 https://www.github.com/statsmodels/statsmodels/issues/2040 QMLE https://github.com/statsmodels/statsmodels/issues/2712
参考
帕普克,L.E。和 Wooldridge,J.M。 (1996),分数响应变量的计量经济学方法及其对 401(k) 计划参与率的应用。 J. 申请。经济学,11:619-632。 https://doi.org/10.1002/(SICI)1099-1255(199611)11:6<619::AID-JAE418>3.0.CO;2-1
更新和警告
截至 statsmodels 0.12
进一步调查,我发现离散 Probit 不支持连续区间数据。它使用假定因变量的值为 0 或 1 的计算快捷方式。但是,在这种情况下它不会引发异常。 https://github.com/statsmodels/statsmodels/issues/7210
Discrete Logit 可以正确处理具有优化方法“newton”的连续数据。对数似然函数本身使用与 Probit 类似的计算快捷方式,但不使用 Logit 的导数和其他部分。
GLM-Binomial 是为区间数据设计的,没有问题。目前唯一的数值精度问题是probit的Hessianlink,它使用数值导数,不是很精确,这意味着参数估计很好,但标准误差在GLM-Probit中可能有数值噪声。
更新
statsmodels 0.12.2 的两个变化:
如果响应不是整数值,Probit 现在会引发异常,并且
GLM Binomial with Probit link 使用改进的 Hessian 导数,精度现在与离散 Probit 相似。