如何将predict()函数用于带有BSplines(statsmodel api Python)的GLMGam模型?

2024-04-24 17:26:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个25544个观察值和7个解释变量的数据集,我将其分为训练集和测试集。然后,我在列车组上运行带有BSP线的Gam模型

y = dfop[['RATIO_OPENING']]
X = dfop.loc[:, ~dfop.columns.isin(['MED_RATIO_OPENING','RATIO_OPENING','OD_UNDIR_CITY_PAIR','MONTH'])]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
x_spline = X_train[['DISTANCE', 'CITY_POP_A','CITY_POP_B','A_GDP_PPP_1990_2015_5arcmin','A_HDI_1990_2015','B_GDP_PPP_1990_2015_5arcmin','B_HDI_1990_2015']]
bs = BSplines(x_spline, df=[3,3,3,3,3,3,3], degree=[2,2,2,2,2,2,2])
poisson = GLMGam(y_train, x_spline, smoother=bs, family=sm.families.Poisson())
poisson_fit = poisson.fit()

我想预测测试集上的依赖变量

X_test = X_test[['DISTANCE', 'CITY_POP_A','CITY_POP_B','A_GDP_PPP_1990_2015_5arcmin','A_HDI_1990_2015','B_GDP_PPP_1990_2015_5arcmin','B_HDI_1990_2015']]
results = poisson_fit.predict(exog=X_test, transform=True)

最后一行返回以下错误

ValueError: shapes (6386,7) and (21,) not aligned: 7 (dim 1) != 21 (dim 0)

预测的正确语法是什么


Tags: testcitybstrainpopfitdistancespline