使用 tidyverse 提取估计系数和标准误差
Extract estimated coefficients and the standard error using tidyverse
我有一个这样的数据框:
set.seed(560)
df<-data.frame(lag= rep(1:40, each=228), psit= rep(rnorm(228, 20,
10)),var=rnorm(9120, 50, 10))
对于 lag
的每个子集,我想 运行 线性回归,其中 psit
由 var
预测(例如 lm(psit~var, df) ).我想输出每个值的系数信息。具体来说,将 beta Estimate
和 Std. error
放入一个 datatframe 中。然后计算标准化的效果大小。输出应该是:
output<-data.frame(lag= rep(1:40, each=1), estimate= rep(rnorm(40,
.5, 0.01)),std.error=rnorm(40,0.01, 0.01))
output$strd.effect <- output$estimate /output$std.error
我试过:
models <-
df %>%
group_by(lag) %>%
do(model = lm(psit ~ var,data = .))
coeff<-
models %>%
ungroup()%>%
group_by(variable) %>%
do(glance(estimate=summary(model[i]$coeff[,1],
std.error=summary(model[i]$coeff[,2])
coeff<-
coeff %>%
group_by(variable) %>%
mutate(std.effect=estimate[[i]]/coeff[[i]]
broom
包在这里可以提供帮助。尝试
models %>%
rowwise() %>%
do({cbind(broom::tidy(.$model), lag=.$lag)}) %>%
filter(term=="var") %>%
mutate(std.effect=estimate/std.error ) %>%
select(lag, estimate, std.error, std.effect)
我有一个这样的数据框:
set.seed(560)
df<-data.frame(lag= rep(1:40, each=228), psit= rep(rnorm(228, 20,
10)),var=rnorm(9120, 50, 10))
对于 lag
的每个子集,我想 运行 线性回归,其中 psit
由 var
预测(例如 lm(psit~var, df) ).我想输出每个值的系数信息。具体来说,将 beta Estimate
和 Std. error
放入一个 datatframe 中。然后计算标准化的效果大小。输出应该是:
output<-data.frame(lag= rep(1:40, each=1), estimate= rep(rnorm(40,
.5, 0.01)),std.error=rnorm(40,0.01, 0.01))
output$strd.effect <- output$estimate /output$std.error
我试过:
models <-
df %>%
group_by(lag) %>%
do(model = lm(psit ~ var,data = .))
coeff<-
models %>%
ungroup()%>%
group_by(variable) %>%
do(glance(estimate=summary(model[i]$coeff[,1],
std.error=summary(model[i]$coeff[,2])
coeff<-
coeff %>%
group_by(variable) %>%
mutate(std.effect=estimate[[i]]/coeff[[i]]
broom
包在这里可以提供帮助。尝试
models %>%
rowwise() %>%
do({cbind(broom::tidy(.$model), lag=.$lag)}) %>%
filter(term=="var") %>%
mutate(std.effect=estimate/std.error ) %>%
select(lag, estimate, std.error, std.effect)