Cooks.distance函数返回的值少于数据集

时间:2018-01-23 09:59:49

标签: r

我正在进行物流回归,并希望在厨师的帮助下删除异常值。所以我试图找到我的数据集并烹饪d值。 我已经删除了缺失的值,所以这不是一个问题。我的摘要中没有(由于缺失而删除x观察)行。 以下是我的代码 -

fit<-glm(CHURN~CHILDREN+CREDITA+CREDITAA+CREDITB+   CREDITC+CREDITDE+CREDITGY+  CREDITZ+PRIZMRUR+
       PRIZMUB+PRIZMTWN+REFURB+WEBCAP+TRUCK+RV+OCCPROF+OCCCLER+ OCCCRFT+OCCSTUD+OCCHMKR+
       OCCRET+  OCCSELF+OWNRENT+MARRYUN+MARRYYES+MARRYNO+   MAILORD+MAILRES+MAILFLAG+TRAVEL+PCOWN+
       CREDITCD+    NEWCELLY+NEWCELLN+INCMISS   +MCYCLE+SETPRCM + REVENUE   +MOU+RECCHRGE+
       DIRECTAS+OVERAGE+ROAM+CHANGEM+CHANGER+DROPVCE+BLCKVCE+   UNANSVCE+CUSTCARE+THREEWAY+
       MOUREC+OUTCALLS+INCALLS+PEAKVCE+OPEAKVCE+DROPBLK+    CALLFWDV+CALLWAIT+MONTHS+UNIQSUBS+
       ACTVSUBS+PHONES+MODELS+EQPDAYS+AGE1+AGE2+REFER+INCOME+   CREDITAD+SETPRC,data = mydata1,
     family = binomial(logit))
summary(fit)
cd <- cooks.distance(fit)
mydata2<-cbind(mydata1,cd)

我得到错误 - data.frame(...,check.names = FALSE)出错:   参数意味着不同的行数:40000,38941

我的数据集(mydata1)有40000个值,cd有38941。 为什么会这样?

1 个答案:

答案 0 :(得分:1)

根据评论中建议的JDL,由于缺少或不适当的数据,这“很可能”。

要解释我稍微改变了cooks.distance函数的帮助示例,方法是将yi变量编辑为具有单个NA值。

xi <- 1:5
yi <- c(0,2,14,19,NA)    # number of mice responding to dose xi
mi <- rep(40, 5)         # number of mice exposed
glmI <- glm(cbind(yi, mi -yi) ~ xi, family = binomial)
summary(glmI)

如果您运行此操作,您可以注意到所有代码仍然有效。但是,如果您运行该帮助示例的下一行而不是获得与xiyi相同长度的5个输出值由于NA中的yi值,您将获得4。

signif(cooks.distance(glmI), 3)
     1      2      3      4 
 0.311  0.258  1.430 13.100 

如果Inf或其他不可能的值“破坏”glm,则可能会出现类似的问题。请注意,如果您查看summary(glmI),则其中包含以下行:

 (1 observation deleted due to missingness)