我有一个多重插补数据集(使用 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)