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