为什么从回归模型中提取并手动计算的R.平方值存在差异

为什么从回归模型中提取并手动计算的R.平方值存在差异,r,statistics,linear-regression,R,Statistics,Linear Regression,取两个样本向量,命名为实际值和预测值。我试着计算 R平方值使用公式[manual way]和其他我从线性回归模型中提取的R平方值,我们看到显著差异约为[0.10]。有人能帮我理解这一点,还是我遗漏了什么 actual <- c(4, 6, 9, 10, 4, 6, 4, 7, 8, 7) predicted <- c(5, 6, 8, 10, 4, 8, 4, 9, 8, 9) df <- data.frame(actual , predicted) linear_mod

取两个样本向量,命名为实际值和预测值。我试着计算 R平方值使用公式[manual way]和其他我从线性回归模型中提取的R平方值,我们看到显著差异约为[0.10]。有人能帮我理解这一点,还是我遗漏了什么

actual <- c(4, 6, 9, 10, 4, 6, 4, 7, 8, 7)
predicted <- c(5, 6, 8, 10, 4, 8, 4, 9, 8, 9)

df <- data.frame(actual , predicted) 

linear_model <- lm(predicted ~ actual , data = df ) 

0.766784655673544

如果您的计算结果与R不同,请怀疑您的计算结果。

没有错误,您将名为
predicted
的变量误认为是预测值

您必须将手工计算与
摘要中报告的值进行比较

summary(linear_model)$r.squared
#[1] 0.7667847
现在,首先,正确计算分母
TSS

TSS <- c(crossprod(predicted - mean(predicted)))

再一次没有错误

如果您的计算结果与R不同,请怀疑您的计算结果。

没有错误,您将名为
predicted
的变量误认为是预测值

您必须将手工计算与
摘要中报告的值进行比较

summary(linear_model)$r.squared
#[1] 0.7667847
现在,首先,正确计算分母
TSS

TSS <- c(crossprod(predicted - mean(predicted)))

再一次没有错误

R平方是根据残差估计的,你的公式是错误的。R平方是根据残差估计的,你的公式是错误的。谢谢你。我更正了公式。我在两种情况下得到了相同的R平方值。谢谢你,芮。我修正了公式。在这两种情况下,我得到了相同的R平方值。
err1 <- linear_model$residuals
RSS1 <- c(crossprod(err1))
1 - RSS1/TSS
#[1] 0.7667847
err2 <- predicted - predict(linear_model)
RSS2 <- c(crossprod(err2))
1 - RSS2/TSS
#[1] 0.7667847