我了解如何通过包含在数据集中获得更少的值。但是,这是一个可重复的示例,其中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
有人知道我在做什么错吗?
答案 0 :(得分:2)
为方便起见,设置
CD <- cooks.distance(lm.Boston)
CDnew <- cooks.distance(lm.newBoston)
不要被向量的“名称”字段所欺骗。改为选中length(CD)
和length(CDnew)
。
您可以通过names(CD)
和names(CDnew)
提取“名称”属性。它们分别与row.names(Boston)
和row.names(newBoston)
一致。
不仅cooks.distance
有这种行为;其他通用函数,例如predict
,residuals
,rstandard
,fitted
和fitted.values
是相同的。
答案 1 :(得分:1)