我想进行残差分析,我知道残差等于观测值减去预测值。但我不知道是应该从训练集还是测试集中计算残差?
我应该使用以下代码吗:
import statsmodels.api as sm # Making predictionslm = sm.OLS(y_train,X_train).fit()y_pred = lm.predict(X_train)resid = y_train - y_pred.to_frame('price')
还是这个:
import statsmodels.api as sm # Making predictionslm = sm.OLS(y_train,X_train).fit()y_pred = lm.predict(X_test)resid = y_test- y_pred.to_frame('price')
回答:
残差误差应该从测试集的实际值(预期结果)y_test
和拟合模型对X_test
的预测值中计算。模型在训练集上进行拟合,然后在测试集上测试其准确性。我直观地认为,这正是最初正式将两个数据集称为train
(用于训练)和test
(用于测试)的主要原因。
具体来说,应该使用第二种情况
resid = y_test- y_pred.to_frame('price')