Python 来自Statsmodels VAR的R2

Python 来自Statsmodels VAR的R2,python,statsmodels,Python,Statsmodels,有没有一种简单的方法可以从Statsmodels的VAR包中提取R2 以下是statsmodels文档中的示例: 然后显示每个方程的系数,最后显示残差的相关矩阵。然而,它并没有显示每个方程的R平方 有人知道是否有一种简单的方法可以从statsmodels VAR中提取R平方,而不必从头开始计算吗?使用sklearn.metrics.r2_分数对每个方程都有效(不幸的是,超出了statsmodels)。示例代码假设在dataframedata中有一列名为'foobar',这就是我们提取的方程式R

有没有一种简单的方法可以从Statsmodels的VAR包中提取R2

以下是statsmodels文档中的示例:

然后显示每个方程的系数,最后显示残差的相关矩阵。然而,它并没有显示每个方程的R平方


有人知道是否有一种简单的方法可以从statsmodels VAR中提取R平方,而不必从头开始计算吗?

使用sklearn.metrics.r2_分数对每个方程都有效(不幸的是,超出了statsmodels)。示例代码假设在dataframe
data
中有一列名为
'foobar'
,这就是我们提取的方程式R2;显然,
VAR()
fit()
方法应该适合您的特定情况

import statsmodels.api as sm
import sklearn.metrics as skm
estVAR = sm.tsa.VAR(data).fit(1)
skm.r2_score(estVAR.fittedvalues['foobar']+estVAR.resid['foobar'],
  estVAR.fittedvalues['foobar'])
将拟合值添加到残差中的原因是为了获取实际数据,VAR可以为这些数据构建拟合值(而不是整个样本,由于右侧需要滞后观测,一些观测没有构建拟合值)。顺便说一句,我们可以通过这样做来确认这是我们想要的R2

y = estVAR.fittedvalues['foobar']+estVAR.resid['foobar']
R2 = 1 - np.sum(estVAR.resid['foobar'].values**2)/np.sum((y.values-y.mean())**2)


非常感谢sjp。我最终做了你在第二段代码中做的事情。
y = estVAR.fittedvalues['foobar']+estVAR.resid['foobar']
R2 = 1 - np.sum(estVAR.resid['foobar'].values**2)/np.sum((y.values-y.mean())**2)