我正在使用python中的statsmodels对4个自变量进行多元回归分析,我已经能够拟合数据以产生预测值和ci / pi,但是,当我尝试绘制拟合值并ci / pi反对自变量之一,我全都搞砸了plot。我想绘制一个图,显示所有数据点的拟合值和ci / pi,如problem所示。
正如上面问题中所建议的,我尝试按一个自变量的值对ci / pi值进行排序,但是不起作用。我的代码:
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
from statsmodels.stats.outliers_influence import summary_table
#read data
data = pd.read_csv("/../../M02_rawObs_total500.csv")
#drop colomn ship_name
data=data.drop(columns='ship_name')
#drop NaN values
data=data.dropna()
#build a model
indVar=sm.add_constant(data[['ship_slp','distance','UU','VV']])
olsMod = sm.OLS.from_formula("cyclone_slp ~ ship_slp + distance + UU + VV", data)
olsRes = olsMod.fit()
ypred = olsRes.predict(indVar)
st, dat, ss2 = summary_table(olsRes, alpha=0.05)
fittedvalues = dat[:, 2]
predict_mean_se = dat[:, 3]
predict_mean_ci_low, predict_mean_ci_upp = dat[:, 4:6].T
predict_ci_low, predict_ci_upp = dat[:, 6:8].T
plt.plot(data['ship_slp'], data['cyclone_slp'], 'o')
plt.plot(data['ship_slp'], fittedvalues, '-', lw=2)
plt.plot(data['ship_slp'], predict_ci_low, 'r--', lw=2)
plt.plot(data['ship_slp'], predict_ci_upp, 'r--', lw=2)
plt.show()
我的问题是,这里和其他地方的所有示例都处理一个自变量和因变量。如果它是用于多元回归的正确方法,我真的很困惑,因为一个独立var的相同值仍然可以具有不同的拟合值/ ci / pi,具体取决于其他自变量的值。
此外,在给定自变量值集合的情况下,不仅可以在95%CI之内,我还可以估计获得某个预测变量值的可能性。 数据为here,感谢您的帮助!