获取两个样本矢量,并将其命名为Actual和预测变量。我尝试计算 使用公式[人工方法]得出R平方值,以及其他我从线性回归模型中得出的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 )
linear_model
Call:
lm(formula = predicted ~ actual, data = df)
Coefficients:
(Intercept) actual
1.2420 0.9012
summary(linear_model)
Call:
lm(formula = predicted ~ actual, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.3531 -0.7975 -0.3531 1.0512 1.4494
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.2420 1.1957 1.039 0.329319
actual 0.9012 0.1757 5.129 0.000898 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.118 on 8 degrees of freedom
Multiple R-squared: 0.7668, Adjusted R-squared: 0.7376
F-statistic: 26.3 on 1 and 8 DF, p-value: 0.0008976
error <- predicted - actual
rss <- c(crossprod(error))
tss <- c(crossprod(actual - mean(actual)))
1 - (rss / tss)
0.654320987654321
summary(linear_model)$r.squared
0.766784655673544
答案 0 :(得分:2)
如果您的计算和R不同,请怀疑您的计算。
没有错误,您将名为predicted
的变量误认为是预测值。
您将不得不将手工完成的计算与summary
中报告的值进行比较。
summary(linear_model)$r.squared
#[1] 0.7667847
现在,首先,正确计算分母TSS
。
TSS <- c(crossprod(predicted - mean(predicted)))
首先使用模型残差计算r平方。
err1 <- linear_model$residuals
RSS1 <- c(crossprod(err1))
1 - RSS1/TSS
#[1] 0.7667847
如您所见,结果与summary
给出的结果相同。
第二种计算r平方的方法,先计算拟合值,然后计算残差。
err2 <- predicted - predict(linear_model)
RSS2 <- c(crossprod(err2))
1 - RSS2/TSS
#[1] 0.7667847
再次没有错误。