【问题标题】:Regression with country-wise deletion国家删除回归
【发布时间】:2016-06-30 01:15:32
【问题描述】:

我正在尝试在 R 中使用按国家/地区删除的 logit 回归。假设我有一个包含四个变量的数据框:年份、countryid (1-12)、gdp 和人口。我想找出一种方法来运行 12 次不同的回归,每次都删除一个国家,看看将每个退出的效果是什么。我一直在尝试编写一个循环来删除向量中的系数,但没有任何成功。

任何帮助将不胜感激!

【问题讨论】:

  • 请展示你的一些努力。
  • 使用iris,类似这样:lapply(levels(iris$Species),function(x) lm(Sepal.Length~Sepal.Width,data=iris[iris$Species!=x,]))。您获得了不同的data.frames,并移除了感兴趣的变量的水平,并从每个模型中运行一个线性模型 (lm)。猜猜你可以根据你的实际数据调整这个想法。
  • 我已经回滚了您刚刚说“问题已被删除”的编辑。一旦您的问题得到回答,就不能直接删除它,因为这必然会删除其他人花费时间和精力提供的答案。既然您说 Herka 的回答“效果很好”,那么您应该做的是支持并接受他们的回答。
  • 如果您真的想删除问题,则需要先关闭它。似乎没有任何密切的原因适用,因此不太可能从高声誉用户那里获得所需的 5 票...

标签: r loops regression logistic-regression


【解决方案1】:

我会这样做。

假数据:

set.seed(123)
nobs=500
dat <- data.frame(y = rbinom(nobs,1,0.5),
                  var1=rnorm(nobs),
                  var2=sample(LETTERS[1:12],nobs,T))

“国家”的向量:

countries <- unique(dat$var2)
names(countries) <- countries

模型列表(便于以后提取):

models <- lapply(countries, function(x){
  fit <- glm(y~var1+var2, data=dat[dat$var2!=x,], family=binomial)
  fit
})

【讨论】:

    【解决方案2】:
    variables <- c("year", "countryid1", "id2", ..., "id12", "gdp", "population")
    
    for (i in 2:13) {
    variables.to.fit <- variables[-i]
    }
    

    然后你必须把你的 logit fit 放在这个循环中。在每个循环中。这将删除每个 drop 中的每个 id 变量。

    【讨论】:

      【解决方案3】:

      这是一个答案,您需要稍微编辑一下才能使用您拥有的确切变量

      data(mtcars)
      
      
      y_var<-'mpg'
      x_vars<-setdiff(names(mtcars),y_var)
      
      for(i in x_vars){
      
        variables<-setdiff(x_vars,i)
        fm <- as.formula(paste(y_var, " ~", paste(variables, collapse = "+")))
        linear_model<-glm(fm, data = mtcars)
        assign(paste0('model_wout_',i),linear_model) #this will store your different linear models so you can call them with `summary(model.name)`
      
      }
      

      这也是一个线性模型 - 需要添加“二项式”使其对数...

      【讨论】:

      • OP 想要删除行,而不是列。
      猜你喜欢
      • 2020-06-15
      • 2021-08-29
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多