我使用了以下数据,并尝试比较模型提供的Residuals值并手动计算。两种结果通过目视检查是相同的,但R表现出不同的方式。
library(MASS)
lm.fit=lm(medv~lstat,data=Boston)
Boston$lmedv[1:10] #Actual values
[1] 24.0 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9
lm.fit$fitted.values[1:10] #Predicted values
1 2 3 4 5 6 7
29.822595 25.870390 30.725142 31.760696 29.490078 29.604084 22.744727
8 9 10
16.360396 6.118864 18.307997
a<-Boston$medv[1:10]-lm.fit$fitted.values[1:10] #Manual Cal. of Residual
1 2 3 4 5 6 7
-5.8225951 -4.2703898 3.9748580 1.6393042 6.7099222 -0.9040837 0.1552726
8 9 10
10.7396042 10.3811363 0.5920031
lm.fit$residuals[1:10] #Residual cal. Provided by lm model
1 2 3 4 5 6 7
-5.8225951 -4.2703898 3.9748580 1.6393042 6.7099222 -0.9040837 0.1552726
8 9 10
10.7396042 10.3811363 0.5920031
class(a)
[1] "numeric"
class(lm.fit$residual[1:10])
[1] "numeric"
a==lm.fit$residuals[1:10]
1 2 3 4 5 6 7 8 9 10
TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE
table(a==lm.fit$residuals[1:10]
FALSE TRUE
6 4
值相同,类也相同。但是为什么R在一种奇怪的方式中表现并且在比较中将它们列为FALSE。我错过了什么 ?请告诉我 。