我想运行一个logit回归与国家明智的删除R.说我有一个数据框与四个变量随着时间的推移:year,countryid(1-12),gdp和人口。我想找出一种方法来运行12个不同的回归,每个去除一个国家,看看每个回归的效果是什么。我一直在试图编写一个循环,将矢量中的系数下降,但没有取得任何成功。回归与国家明智的删除
任何帮助将不胜感激!
我想运行一个logit回归与国家明智的删除R.说我有一个数据框与四个变量随着时间的推移:year,countryid(1-12),gdp和人口。我想找出一种方法来运行12个不同的回归,每个去除一个国家,看看每个回归的效果是什么。我一直在试图编写一个循环,将矢量中的系数下降,但没有取得任何成功。回归与国家明智的删除
任何帮助将不胜感激!
这里有一个答案,你需要编辑一点具有确切变量工作,你必须
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想要删除行,而不是列。 –
variables <- c("year", "countryid1", "id2", ..., "id12", "gdp", "population")
for (i in 2:13) {
variables.to.fit <- variables[-i]
}
然后你必须把你的logit放在这个循环中。在每个循环中。这会在每个drop中删除每个id变量。
欧特专门说有四列... – Heroka
下面是我该怎么做。
假数据:
的 '国家'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
})
这工作完美!非常感谢! –
请出示你的一些努力。 – Heroka
使用'iris',像这样:'lapply(levels(iris $ Species),function(x)lm(Sepal.Length〜Sepal.Width,data = iris [iris $ Species!= x,]))''。你可以获得不同的'data.frame's,并移除感兴趣的变量的级别,并从每个变量中运行一个线性模型('lm')。猜猜你可以将这个想法适应你的实际数据。 – nicola