cooks.distance 返回的值多于我的数据集中的值
cooks.distance returning more values than there are in my dataset
我了解如何通过在数据集中获取更少的值。但这是一个可重复的示例,其中 cooks.distance
返回更多。除非我的 R 版本完全损坏,否则我完全不知道这是怎么可能的。
考虑
library (MASS)
lm.Boston<-lm(medv~crim+indus+age+tax,data=Boston)
cooks.distance(lm.Boston)
nrow(Boston) ## cooks.distance returns 506 values as expected which matches the obs in the dataset.
newBoston<-Boston[Boston$age>50,] ## Now arbitrarily remove some rows. The number of records is now 359
lm.newBoston<-lm(medv~crim+indus+age+tax,data=newBoston)
cooks.distance(lm.newBoston) ## cooks.distance still returns 506 values. It seems to be "Stuck" on the previous dataset
有人知道我做错了什么吗?
为方便起见,设
CD <- cooks.distance(lm.Boston)
CDnew <- cooks.distance(lm.newBoston)
不要被向量的 "names" 字段所迷惑。改为检查 length(CD)
和 length(CDnew)
。
您可以通过names(CD)
和names(CDnew)
提取"names"属性。它们分别与row.names(Boston)
和row.names(newBoston)
一致。
不只是 cooks.distance
有这种行为; predict
、residuals
、rstandard
、fitted
和 fitted.values
等其他通用函数是相同的。
代码似乎 return 等于下面的数字:
library (MASS)
# Case - 1
lm.Boston<-lm(medv~crim+indus+age+tax,data=Boston)
nrow(Boston)
length(cooks.distance(lm.Boston))
# Case - 2
newBoston<-Boston[Boston$age>50,]
lm.newBoston<-lm(medv~crim+indus+age+tax,data=newBoston)
nrow(newBoston)
length(cooks.distance(lm.newBoston))
我了解如何通过在数据集中获取更少的值。但这是一个可重复的示例,其中 cooks.distance
返回更多。除非我的 R 版本完全损坏,否则我完全不知道这是怎么可能的。
考虑
library (MASS)
lm.Boston<-lm(medv~crim+indus+age+tax,data=Boston)
cooks.distance(lm.Boston)
nrow(Boston) ## cooks.distance returns 506 values as expected which matches the obs in the dataset.
newBoston<-Boston[Boston$age>50,] ## Now arbitrarily remove some rows. The number of records is now 359
lm.newBoston<-lm(medv~crim+indus+age+tax,data=newBoston)
cooks.distance(lm.newBoston) ## cooks.distance still returns 506 values. It seems to be "Stuck" on the previous dataset
有人知道我做错了什么吗?
为方便起见,设
CD <- cooks.distance(lm.Boston)
CDnew <- cooks.distance(lm.newBoston)
不要被向量的 "names" 字段所迷惑。改为检查 length(CD)
和 length(CDnew)
。
您可以通过names(CD)
和names(CDnew)
提取"names"属性。它们分别与row.names(Boston)
和row.names(newBoston)
一致。
不只是 cooks.distance
有这种行为; predict
、residuals
、rstandard
、fitted
和 fitted.values
等其他通用函数是相同的。
代码似乎 return 等于下面的数字:
library (MASS)
# Case - 1
lm.Boston<-lm(medv~crim+indus+age+tax,data=Boston)
nrow(Boston)
length(cooks.distance(lm.Boston))
# Case - 2
newBoston<-Boston[Boston$age>50,]
lm.newBoston<-lm(medv~crim+indus+age+tax,data=newBoston)
nrow(newBoston)
length(cooks.distance(lm.newBoston))