В настоящее время у меня есть модель различий, и я хотел бы эффективно измерить различные показатели для одной и той же модели.
Например, у меня есть фрейм данных со столбцами для количества пройденных миль, отработанных часов, состояния, группы, времени.
В настоящее время есть код, куда я копирую и вставляю модель для каждой метрики:
# Create DID models
model_miles <- lm(df$miles_driven ~ df$Group
+ df$Time
+ df$Group * df$Time, data = df)
model_hours <- lm(df$hours_worked ~ df$Group
+ df$Time
+ df$Group * df$Time, data = df)
# Select results using clustered standard errors. The purpose of this is to
# avoid making distributional assumptions about the errors in the models.
results_miles <- clubSandwich::coef_test(model_miles,
vcov = "CR2",
cluster = df$state,
test = "Satterthwaite")
results_hours <- clubSandwich::coef_test(model_hours,
vcov = "CR2",
cluster = df$state,
test = "Satterthwaite")
results <- data.table::rbindlist(list(results_miles, results_hours))
View(results)
Я хотел бы каким-то образом создать список имен моих метрик и выполнить цикл по этому списку, используя пользовательскую функцию, чтобы сделать этот процесс более быстрым и более автоматизированным, но я не смог заставить его работать правильно:
#list of metrics
metrics <- c("miles_driven", "hours_worked")
udf <- function(metric, dataframe){
# Create DID model
model <- lm(dataframe$metric ~ df$Group
+ dataframe$Time
+ dataframe$Group * df$Time, data = dataframe)
# Select results using clustered standard errors. The purpose of this
is to
# avoid making distributional assumptions about the errors in the
models.
results_miles <- clubSandwich::coef_test(model_miles,
vcov = "CR2",
cluster = dataframe$state,
test = "Satterthwaite")[4,]
View(results)
}
lapply(metrics, udf)
Любое понимание будет оценено. Спасибо!