使用lapply进行具有公式更改的多元回归,而不是数据集 [英] Use lapply for multiple regression with formula changing, not the dataset

查看:81
本文介绍了使用lapply进行具有公式更改的多元回归,而不是数据集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经看到一个列表适用的示例(lapply),可以很好地获取数据对象的列表, 并返回回归输出列表,我们可以将其传递给Stargazer以获取格式正确的输出. 将stargazer与lm对象列表结合使用,这些对象是通过对拆分后的data.frame进行叠加而创建的.

I have seen an example of list apply (lapply) that works nicely to take a list of data objects, and return a list of regression output, which we can pass to Stargazer for nicely formatted output. Using stargazer with a list of lm objects created by lapply-ing over a split data.frame

library(MASS)
library(stargazer)
data(Boston)

by.river <- split(Boston, Boston$chas)
class(by.river)

fit <- lapply(by.river, function(dd)lm(crim ~ indus,data=dd))
stargazer(fit, type = "text")

我想做的是,而不是传递数据集列表对每个数据集进行相同的回归(如上所述), 传递自变量列表以对同一数据集进行不同的回归.从长远来看,它看起来像这样:

What i would like to do is, instead of passing a list of datasets to do the same regression on each data set (as above), pass a list of independent variables to do different regressions on the same data set. In long hand it would look like this:

fit2 <- vector(mode = "list", length = 2)
fit2[[1]] <- lm(nox ~ indus, data = Boston)
fit2[[2]] <- lm(crim ~ indus, data = Boston)
stargazer(fit2, type = "text")

使用lapply,我尝试了此操作,但它不起作用.我哪里出问题了?

with lapply, i tried this and it doesn't work. Where did I go wrong?

myvarc <- c("nox","crim")
class(myvarc)
myvars <- as.list(myvarc)
class(myvars)
fit <- lapply(myvars, function(dvar)lm(dvar ~ indus,data=Boston))
stargazer(fit, type = "text")

推荐答案

这应该有效:

fit <- lapply(myvars, function(dvar) lm(eval(paste0(dvar,' ~ wt')), data = Boston))

这篇关于使用lapply进行具有公式更改的多元回归,而不是数据集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆