R 循环通过许多多元回归

R 循环通过许多多元回归,r,loops,regression,linear-regression,R,Loops,Regression,Linear Regression,我正在尝试从以下帖子运行此代码: 使用修改过的变量和数据帧名称,因为它似乎完全符合我的要求,并且使用了非常相似的数据集。然而,它一直给我一个错误,我不知道为什么,所以如果有人能帮助我理解错误或相应的代码行,我会非常感激,这样我就可以尝试找出错误 for(i in 1:n) { vars = names(output)[names(output) %in% paste0(c(".PRE", ".POST"), i)] models[[as.character(i)]] = lm(paste

我正在尝试从以下帖子运行此代码: 使用修改过的变量和数据帧名称,因为它似乎完全符合我的要求,并且使用了非常相似的数据集。然而,它一直给我一个错误,我不知道为什么,所以如果有人能帮助我理解错误或相应的代码行,我会非常感激,这样我就可以尝试找出错误

for(i in 1:n) {
  vars = names(output)[names(output) %in% paste0(c(".PRE", ".POST"), i)]
  models[[as.character(i)]] = lm(paste("growth_rate ~ ", paste(vars, collapse=" +   ")),
                                 data = output)
}

Error in parse(text = x, keep.source = FALSE) : 
  <text>:2:0: unexpected end of input
1: growth_rate ~  
   ^
for(1:n中的i){
vars=名称(输出)[名称(输出)%in%paste0(c(“.PRE”、“.POST”),i)]
模型[[as.character(i)]]=lm(粘贴(“生长速率”),粘贴(变量,塌陷=“+”),
数据=输出)
}
分析错误(text=x,keep.source=FALSE):
:2:0:输入意外结束
1:增长率~
^
除了我的“RDPI_T”和“DRY_T”变量是交替顺序(我认为在这种情况下这并不重要)之外,我的数据集看起来几乎与上述文章中给出的数据集相似。我有69个类似的变量,叫做id1.PRE,id2.PRE。。。id69.PRE和69个POST变量称为id1.POST、id2.POST。。。id69.POST在输出数据集中。此外,增长率位于同一个名为output的数据集中

此外,我还想再添加两个独立变量,这两个变量是常规变量,不是来自列表:国家和年份,但我不确定如何在这里合并这些变量


任何帮助都将不胜感激。谢谢大家!

如果您的列名为id1.PRE、id2.PRE,则上面的粘贴函数将不起作用,这很可能引发错误

请执行
dput(head(output))
并粘贴输出,这样我们就可以看到列名以及它不起作用的原因

根据您对列名的描述,尝试以下内容:

#simulate data
output=data.frame(
"growth_rate"=rnorm(100),
matrix(rnorm(100*69*2),nrow=100)
)
colnames(output)[-1] = c(paste("id",1:69,".PRE",sep=""),paste("id",1:69,".POST",sep=""))
output$year = 1901:2000
output$country = sample(letters,nrow(output),replace=TRUE)

n=69
#create list to hold models
models = vector("list",n)

for(i in 1:n) {
  vars = paste0("id",i,c(".PRE", ".POST"))
# i think it works without as.formula, but better to be safe
  FORMULA = as.formula(paste("growth_rate ~ ", paste(vars, collapse=" +  ")))
  models[[i]] = lm(FORMULA,data = output)
}
如果要包括其他变量:

for(i in 1:n) {
  vars = paste0("id",i,c(".PRE", ".POST"))
  # add other variables
  vars = c(vars,"country","year")
  FORMULA = paste("growth_rate ~ ", paste(vars, collapse=" +  "))
  models[[i]] = lm(FORMULA,data = output)
}

使用新创建的模型,我试图运行一个Wald测试,但它似乎无法同时在69个模型上运行,只有当我选择对列表中的单个模型执行Wald测试时。有什么想法吗<代码>#install.packages(“aod”)library(aod)wald.test(b=coef(models[[1]]),Sigma=vcov(models[[1]]),Terms=1:2)#这一个只起作用wald.test(b=coef(models),Sigma=vcov(models,Terms=1:2))#这一个不起作用通过模型循环进行wald测试是统计上的不当行为。你最需要的是统计咨询。我正在复制一篇被引用了1000多次并发表在《经济学季刊》上的论文,因此我不是真的质疑统计数据,而是试图找到一种方法。我很高兴听到你的建议,而不是关于我多么需要统计咨询的人生教训。有没有适当地考虑过这种过程中产生的多重比较问题?恐怕他们在论文中没有提到类似的内容。但在运行了69个模型后,他们得出了一个chi2值和一个p值。基本上,他们希望使用69个回归模型来比较id.PRE是否与id.POST相同(我在上一篇文章中解释的数据:),从而得出总体结论。