解释线性模型PanelOLS .predict()方法的结果



假设我有以下玩具数据:

import pandas as pd
from linearmodels.panel import PanelOLS
y = pd.DataFrame(
index=[[1, 1, 1, 2, 2, 2], [1, 2, 3, 1, 2, 3]],
data=[70, 60, 50, 30, 33, 27],
columns=["y"],
)
y.index.set_names(["Entity", "Time"], inplace=True)
x = pd.DataFrame(
index=[[1, 1, 1, 2, 2, 2], [1, 2, 3, 1, 2, 3]],
data=[[100], [89], [62], [29], [49], [23]],
columns=["X"],
)
x.index.set_names(["Entity", "Time"], inplace=True)

entity_effects=TruePanelOLS建立模型:

model_within = PanelOLS(dependent=y, exog=x, entity_effects=True).fit()

然后想用predict()方法看看一个新的"实体"如何会被模仿。首先用:

创建一个新实体
new_x = pd.DataFrame(
index=[[3, 3, 3], [1, 2, 3]],
data=[[40], [70], [33]],
columns=["X"],
)
new_x.index.set_names(["Entity", "Time"], inplace=True)

然后预测:

model_within.predict(new_x)

得到以下输出:

3116.136230228.238403313.312390

发布结果通过回购寻求澄清:https://github.com/bashtage/linearmodels/issues/465

"模型总是Y=XB + epsilon + (eta_t) + (nu_i)。效果被视为错误,因此当您预测得到new_x @ params时,就不会使用实体效果。">

所以预测是针对y的实际值,而不是时间降低的预测。然而,为了实现时间退化的预测,可以使用首先被时间退化的数据创建相同的模型,并传入新的时间退化数据进行预测。

最新更新