0

我有一个多重插补数据集(使用 Amelia 插补),并且想导出一个函数,它可以一次性运行多个回归(具有相同的结果和不同的预测变量)。原因是我需要对不同的结果变量进行多次回归(使用相同的预测变量)。

我已经定义了函数,但是当我运行它时,我收到一条错误消息:

model.frame.default 中的错误(公式 = 结果〜国家,数据 = as.data.frame(.),:可变长度不同(为“国家”找到)

我认为这是因为估算的数据集是“amelia”对象而不是典型的数据框,因此很难索引变量“国家”。但我不知道该怎么做。

下面是一个可重现的示例。我真的很感激任何建议。

library(Amelia)
library(Zelig)

# Use africa dataset
data(africa)
# Impute data
imp.out <- amelia(x = africa, cs = "country", ts = "year", logs = "gdp_pc", m=5)
summary(imp.out)

# Define function to run regression predicting an outcome from country, gdp_pc, civlib, and population
reg_function <- function(outcome, data) {
  
  # Run regressions using the zelig function
  country <- zelig(outcome ~ country, model = "normal", data=data, cite=FALSE)
  gdp_pc <- zelig(outcome ~ gdp_pc, model = "normal", data=data, cite=FALSE)
  population <- zelig(outcome ~ population, model = "normal", data=data, cite=FALSE)
  
  # Put results into a vector 
  results <- ( c(combine_coef_se(country)[2,1], combine_coef_se(country)[2,2], 
                 combine_coef_se(gdp_pc)[2,1], combine_coef_se(gdp_pc)[2,2],
                 combine_coef_se(population)[2,1], combine_coef_se(population)[2,2]))
  
  # Return results in a matrix
  return(matrix(results, nrow=1, ncol=6, dimnames=list(c(""), 
                                                        c("Est_country", "SE_country", 
                                                          "Est_gdp_pc", "SE_gdp_pc", 
                                                          "Est_population", "SE_population"))))
  
}
  
# Run regression for outcome variables "year", "infl", and "trade" 
# This is where I get the error messages that the variable lengths differ for 'country'
year <- reg_function(year, imp.out$imputations)
year <- reg_function(infl, imp.out$imputations)
year <- reg_function(trade, imp.out$imputations)
4

0 回答 0