31 16.136230 2 28.238403 3 13.312390
假设我有以下玩具数据:
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=True
和PanelOLS
建立模型:
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)
得到以下输出:
发布结果通过回购寻求澄清:https://github.com/bashtage/linearmodels/issues/465
"模型总是Y=XB + epsilon + (eta_t) + (nu_i)。效果被视为错误,因此当您预测得到new_x @ params
时,就不会使用实体效果。">
所以预测是针对y的实际值,而不是时间降低的预测。然而,为了实现时间退化的预测,可以使用首先被时间退化的数据创建相同的模型,并传入新的时间退化数据进行预测。