有序 Logit 回归的预测是如何工作的?

问题描述 投票:0回答:1

我正在学习有序 logit 回归,我想知道预测在数学上是如何工作的以及我如何自己在 python 中完成它。我知道在 python 中我可以简单地使用预测,但我想知道如何仅使用 model.summary() 中的 coef 进行预测。

import pandas as pd
from statsmodels.miscmodels.ordinal_model import  OrderedModel


data = pd.DataFrame({
    'score': [3.2, 4.5, 5.6, 6.7, 7.8, 8.9, 9.1],
    'rating': [1,2,3,4,5,6,6]  
})

X = data[['score']]
y = data['rating']


ordinal_model = OrderedModel(y, X, distr='logit')


ordinal_results = ordinal_model.fit(method='bfgs')


print(ordinal_results.summary())

结果是:

Time:                        17:05:52                                         
No. Observations:                   7                                         
Df Residuals:                       1                                         
Df Model:                           1                                         
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
score         66.3902   5669.125      0.012      0.991    -1.1e+04    1.12e+04
1/2          285.5835   2.56e+04      0.011      0.991   -4.98e+04    5.04e+04
2/3            4.2698     88.656      0.048      0.962    -169.493     178.032
3/4            4.1879    155.834      0.027      0.979    -301.241     309.617
4/5            4.3867    136.765      0.032      0.974    -263.668     272.442
5/6            3.4706    220.734      0.016      0.987    -429.161     436.102
==============================================================================

使用 coef 向量我如何获得与

相同的输出
ordinal_results.model.predict(ordinal_results.params, exog = (4.3))
[[0.5264086 0.4735914 0.        0.        0.        0.       ]]

我认为我应该对 coef 和新数据的线性和使用 softmax,但这不起作用

python pandas machine-learning logistic-regression statsmodels
1个回答
0
投票

您建议“系数和新数据的线性和”,这是正确的,但由于您只有一个特征,所以它只是系数乘以新数据值:

66.3902 * 4.3
>>> 285.47786

但是

coef
列的其他条目实际上并不是传统意义上的系数(并且没有softmax);相反,它们代表离散目标的截止值。

线性模型(上面的 285.48)的预测被视为标准差为 1 的正态分布

y
的平均值(默认情况下,参见参数
distr
),每个目标的概率是
 y
位于相关截止值之间。

没有很好地记录这些截止值是什么,但我假设第一个非系数

coef
是第一个截止值,其余的表示连续截止值之间的差异。所以

p_1 = P(y < 285.5835) ~= 0.5264086
p_2 = P(285.5835 < y < 285.5835 + 4.2698) ~= 0.4735914
p_3 = P( 285.5835 + 4.2698 < y <  285.5835 + 4.2698 + 4.1879) ~= 0
etc.
© www.soinside.com 2019 - 2024. All rights reserved.