在R中进行回归建模的策略

时间:2018-11-07 12:38:14

标签: r data.table linear-regression data-analysis

我不确定这是否是问的正确地方,但是无论如何,让我尝试一下。 我想使用线性回归对数据集进行结构化分析。我认为从创建一个数据框/表开始是一个好主意,其中每一行都包含我要分析的模型之一。然后,我将继续定义因变量(y)和自变量(x)。定义公式,等等。基于该表,我想对每个模型进行回归,并使用这些模型来计算模型表中的新列(如R2或AIC)以比较模型。我也想这样做,因为我可能不得不将原始数据的不同子集与其他列进行比较。 作为MWE,我正在考虑这样的事情。

rm(list=ls())
library(data.table)
#data
dt<-data.table(mtcars)
#define possible models
models<-data.table(Number=1:2, y="mpg", x=c("cyl", "cyl + gear"))
models[,formula:=paste0(y," ~ ", x)]
#List for model objects
model.objects<-list()
model.objects[models$Number]<-list(NULL)

#my regression function
myreg.function<-function(model){
   summary(lm(models[Number==model,formula],data=dt))
}
#run regression models for each model number
model.objects<-lapply(models$Number,myreg.function)
#Extract R2 from each model and write it into the data tabele
models$R2<-lapply(model.objects, function(x) x[["r.squared"]])

这是明智的做法吗?我应该使用更多列表吗?我认为为每个模型创建具有特定描述的对象会很繁琐。我有什么建议可以阅读,以便以结构良好的方式学习实现此目的的更好方法?

这纯粹是一个应用程序/实现问题,而不是抽象的问题。 R平方只是一个例子。我非常了解模型选择等的计量经济学,并且模型的数量可以成倍增加。至少我希望如此。我宁愿指定3-5种类型的模型,并通过使用日志值或数据的不同子集的变体来扩展这3-5种模型,从而以结构化的方式与一个表或列表进行比较,以使表扩展时间2-5次。

0 个答案:

没有答案