我有一个这样的 Dataframe (真实的的 Dataframe 只是有更多的变量):
data<-data.frame(Country=c("USA","USA","USA","USA","India","India","India","India","China","China","China","China"),
Indicator=rep(c("Population","GDP","Debt","Currency"),times=3),`2011`=rep(c(1,2,3,4),each=3),`2012`=rep(c(4,5,6,7),each=3),`2013`=rep(c(8,9,11,12),each=3))
data<-data %>%
pivot_longer(
starts_with("X"),
names_to = "Year",
names_transform = list(Year = parse_number)
) %>%
pivot_wider(names_from = Indicator, values_from = value) %>%
relocate(Year)
data$y1<-c(1,10,11,3,4,5,2,2,1)
data$y2<-c(1,2,3,4,5,6,6,8,9)
data$y3<-c(10,9,8,7,5,5,11,3,4)
data$y4<-c(1,1,11,3,4,2,2,2,1)
data$y5<-c(5,10,11,3,5,5,5,5,1)
我想每次用一个新的y和x(GDP)与控制变量(在本例中,这些变量是国家、人口、债务和货币)的不同组合来循环线性回归模型,如下所示:
lm_y1_GDP=lm(y1~GDP, data = data)
lm_y1_GDP_year=lm(y1~GDP+year, data = data)
lm_y1_GDP_country=lm(y1~GDP+country, data = data)
...
lm_y5_GDP_country_population_debt_currency=lm(y5~GDP+Country+Population+Debt+Currency, data = data)
并将每个summary(lm_y1), summary(lm_y2),...
存储在一个专用的回归结果列表中。理想情况下,我还希望创建虚拟变量来添加到回归列表中,同时添加国家和时间固定效应。提前感谢!
2条答案
按热度按时间nnsrf1az1#
这一个更倾向于Tidyverse,我也留下了
Country
,据我所知,lm()
确实处理因子,尽管在解释结果时需要考虑它。输入:
创建于2023年1月20日,使用reprex v2.0.2
jjhzyzn02#
像这样的例子怎么样?我在
do_mods()
下面做的函数有几个参数:xvars
是x变量名的字符向量。yvars
是y变量名称的字符向量。other_ctrls
是将始终存在于模型中的其它控制变量的可选字符向量。data
是 Dataframe 。该函数为
yvars
的每个不同值生成xvars
的所有可能组合。输出是一个列表,其中列表的每个元素对应于一个不同的因变量。返回的每个列表元素本身是该因变量的所有模型摘要的列表。由reprex package(v2.0.1)于2023年1月20日创建