如何在StatsModels中OLS的预测结果中识别受试者



我正在使用jupyter笔记本中使用统计模型进行线性回归。数据在一个名为" Train_base"的数据框中,其中ID列标识了我的数据库的每个唯一主题。Train_base就是这样:

id     y     x0     x1     x2
a123   20     8      1      3
b789   33     8      3      2
d782   77     9      6      5      

代码的主要块如下所示。请注意,我正在使用另一个称为" test_base"的碱基来做出预测,除了" y"列:

,该基础的结构也与" train_base"相同。
results = smf.ols('y ~ x0 + x1 + x2', data=train_base).fit()
predictions = results.predict(test_base)
predictions.head()

预测是这样的:

0   -0.054789
1   -0.036042
2   -0.043962
3   -0.135725
4   -0.409129
dtype: float64

在我看来,预测中显示的第一列是原始train_base的索引(我正确吗?)。由于我需要确定测试基础每个个体的预测值,因此在预测中拥有" ID"列需要做什么?

在@leda grasiele的答案中进行了一些微妙的校正(包括内部方括号和换位函数的使用),我到达了正确的代码,如下:

如下:
predict = pd.DataFrame([results.predict(test_base), train_base['id']]).T
predict.columns = ['predictions', 'id']
predict

首先:是的,ID列是索引。第二:我无法访问您的数据来测试我的建议,但是我认为以下内容可能有效(或类似的内容):

predict = pd.DataFrame(results.predict(test_base), train_base['id'])
predict.columns = ['predict']
predict

我认为,如果您的预测中出现的每个值与每个ID索引有关,则可以工作,因为该代码的目的是创建由预测结果和ID索引组成的数据帧。

最新更新