【问题标题】:Removing character level outlier in R删除 R 中的字符级别异常值
【发布时间】:2014-03-24 21:54:11
【问题描述】:

我有一个线性 model1<-lm(divorce_rate~marriage_rate+median_age+population),其杠杆图在 28 处显示异常值(“内华达州”的状态变量 id)。我想在数据集中指定一个没有内华达州的模型。我尝试了以下但卡住了。

data<-read.dta("census.dta")
attach(data)
data1<-data.frame(pop,divorce,marriage,popurban,medage,divrate,marrate)
attach(data1)
model1<-lm(divrate~marrate+medage+pop,data=data1)
summary(model1)
layout(matrix(1:4,2,2))
plot(model1)
dfbetaPlots(lm(divrate~marrate+medage+pop),id.n=50)
vif(model1)

dataNV<-data[!data$state == "Nevada",]
attach(dataNV)
model3<-lm(divrate~marrate+medage+pop,data=dataNV)

上面代码的最后一行给了我

Error in model.frame.default(formula = divrate ~ marrate + medage + pop,  : 
  variable lengths differ (found for 'medage')

【问题讨论】:

  • 这样做后我收到了Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases
  • 你为什么使用attach?数据已“附加”
  • 即使我不附加它,仍然给我同样的错误。变量结构给了我str(state) chr [1:49] "Alabama" "Alaska" "Arizona" "Arkansas" "California" "Colorado" "Connecticut" "Delaware" "Florida" "Georgia" "Hawaii" ... 这可能是问题吗?顺便说一下,我使用的数据来自http://www.stata-press.com/data/r8/census.dta

标签: r lm outliers


【解决方案1】:

我怀疑您的代码中存在一些故障,因此您的环境中仍然存在 attach()ed 副本——这就是为什么最好的做法是使用@987654321 @。以下代码适用于我:

library(foreign)
## best not to call data 'data'
mydata <- read.dta("http://www.stata-press.com/data/r8/census.dta")

我在数据集中没有找到divratemarrate:我推测你想要人均费率:

## best practice to use a new name rather than transforming 'in place'
mydata2 <- transform(mydata,marrate=marriage/pop,divrate=divorce/pop)
model1 <- lm(divrate~marrate+medage+pop,data=mydata2)
library(car)
plot(model1)
dfbetaPlots(model1)

这对我来说在干净的会话中效果很好:

dataNV <- subset(mydata2,state != "Nevada")
## update() may be nice to avoid repeating details of the
##   model specification (not really necessary in this case)
model3 <- update(model1,data=dataNV)

或者您可以使用subset 参数:

model4 <- update(model1,subset=(state != "Nevada"))

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2017-09-25
    • 2021-11-09
    • 2018-10-03
    • 2019-04-11
    • 2018-10-08
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多