我试图计算回归的R^2。查看这篇文章,可以通过SSreg/SStot或1-(SSSres/SStot)计算它。我当时的印象是,我最终会得到同样的数值,然而,我似乎有这样的情况:前者给我5%,而后者给我-1%。这是可能的吗?如果有,在什么情况下?
执行情况如下:
r2 = np.sum(df['fi']-df['yi'].mean()) ** 2) / np.sum(df['yi']-df['yi'].mean()) ** 2)
r2 = 1 - (np.sum((df['yi']-df['fi']) ** 2) / np.sum(df['yi']-df['yi'].mean()) ** 2))
有什么问题吗?如果没有,有什么可以解释这些差异,甚至是负面的价值观?
编辑:
修正括号问题,问题仍然是一样的。下面的计算结果并不相同。
r2 = np.sum( (df['fi']-df['yi'].mean())**2 ) / \
np.sum( (df['yi']-df['yi'].mean())**2 )
r2 = 1 - np.sum( (df['yi']-df['fi'])**2 ) / \
np.sum( (df['yi']-df['yi'].mean())**2 )
发布于 2021-07-13 21:00:07
我想你有括号问题。你是在求和正方形的总和。平方应该在sum
函数中,而不是在外部:
r2 = np.sum( (df['fi']-df['yi'].mean())**2 ) / \
np.sum( (df['yi']-df['yi'].mean())**2 )
r2 = 1 - np.sum( (df['yi']-df['fi'])**2 ) / \
np.sum( (df['yi']-df['yi'].mean())**2 )
https://stackoverflow.com/questions/68369126
复制相似问题