【问题标题】:statsmodel get resid_studentized_externalstatsmodel 获取 resid_studentized_external
【发布时间】:2020-04-15 22:11:01
【问题描述】:

我正在为 WLS 使用 statsmodels 库。我正在尝试获取残差,但它返回 nan 的值列表。有谁知道是什么问题。数据框中 x 和 y 列中的值是浮点数。

import pandas as pd
import statsmodels.formula.api as smf

res = smf.wls('y ~ x', data=df).fit()
#get residuals
print(OLSInfluence(res).resid_studentized_external)

我发现它适用于 ols,但我需要它用于 wls。所以下面的代码返回 ols 的残差值

res = smf.ols('y ~ x', data=df, weights = df["weight"]).fit()
#get residuals
print(OLSInfluence(res).resid_studentized_external)

【问题讨论】:

  • 参见stackoverflow.com/questions/40621686/… WLS 专用的 statsmodels 中仍然没有影响功能。
  • 谢谢,我设法解决了我的问题。我还有一个关于 WLS 的问题。我正在尝试使用 res.mse_resid 的根来获取模型的标准错误。我再次得到了正确的 OLS 值和错误的 WLS 值。我用视频youtube.com/watch?v=r-txC-dpI-E(1:15 分钟)中的公式手动计算它,这给了我正确的值。
  • mse_resid 和 WLS 中类似的 ssr 是基于加权残差 wresid 定义的,而不是根据原始未加权值的残差定义的。..

标签: python statsmodels


【解决方案1】:

我尝试了下面的代码,得到了正确的结果

import pandas as pd
import statsmodels.api as smsm.ols

wls_model = sm.WLS(list(df['y']), sm.add_constant(list(df['x'])), weights=df['weight'])
res = sm.OLS(wls_model.wendog, wls_model.wexog).fit()
#get residuals
print(OLSInfluence(res).resid_studentized_external)

【讨论】:

    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 2021-02-12
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多