回归与国家删除

时间:2016-03-14 20:06:58

标签: r loops regression logistic-regression

我试图在R中使用国家/地区删除来运行logit回归。假设我有一个随时间变化的四个变量的数据框:year,countryid(1-12),gdp和population。我想找出一种方法来运行12种不同的回归方法,每种方法都可以删除一个国家/地区,以了解拉出每个国家/地区的效果。我一直试图编写一个循环,将系数放在向量中,但没有取得任何成功。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

这是一个答案,你需要编辑一点才能使用你拥有的确切变量

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)`

}

这也是一个线性模型 - 需要添加&#34;二项式&#34;使它成为logit ...

答案 1 :(得分: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'的矢量:

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 :(得分:0)

variables <- c("year", "countryid1", "id2", ..., "id12", "gdp", "population")

for (i in 2:13) {
variables.to.fit <- variables[-i]
}

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