【发布时间】:2020-12-21 09:04:16
【问题描述】:
我想为线性模型制作一个循环,但遇到了问题。
首先,我编写了一个循环(无法运行)来提取我想要的 beta 值。
y <- c('y1', 'y2')
x1 <- c('a1', 'a2', 'a3')
x2 <- c('A', 'B')
for (y in y) {
for (x1 in x1) {
for (x2 in x2) {
m <- lm(as.name(y) ~ as.name(x1) + as.name(x2), data = dat) %>% summary() %>% .$coefficients %>% .[2,1]
}
}
}
y、x1 和 x2 在 for 循环中的组合不是我的预期。 lm 模型中的公式如下:expand.grid(y, x1, x2)。而我所期望的是自变量位置上相同字母的所有组合。这是我的原始代码:
m1 <- lm(y1 ~ a1 + A, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m2 <- lm(y1 ~ a2 + A, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m3 <- lm(y1 ~ a3 + A, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m4 <- lm(y2 ~ a1 + A, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m5 <- lm(y2 ~ a2 + A, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m6 <- lm(y2 ~ a3 + A, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m7 <- lm(y1 ~ b1 + B, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m8 <- lm(y1 ~ b2 + B, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m9 <- lm(y1 ~ b3 + B, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m10 <- lm(y2 ~ b1 + B, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m11 <- lm(y2 ~ b2 + B, dat) %>% summary() %>% .$coefficients %>% .[2,1]
m12 <- lm(y2 ~ b3 + B, dat) %>% summary() %>% .$coefficients %>% .[2,1]```
这是我的数据。
任何帮助将不胜感激!
dat <- structure(list(y1 = c(0.838141931, 0.174850172, 0.116144283,
0.113778511, 0.494270733, 0.874482265, 0.325621743, 0.661045636,
0.452396096), y2 = c(0.487877797, 0.360726955, 0.380614137, 0.169760207,
0.359371965, 0.743837108, 0.156535906, 0.995989192, 0.331058618
), a1 = c(0.336537159, 0.446060609, 0.57586382, 0.09629329, 0.491634112,
0.988226873, 0.929105257, 0.605957031, 0.470720774), a2 = c(0.128615421,
0.831986313, 0.267777151, 0.313178319, 0.7776461, 0.863337292,
0.042818986, 0.830029959, 0.901586271), a3 = c(0.291053766, 0.546719865,
0.918797744, 0.976353885, 0.193777436, 0.953859399, 0.963312236,
0.191449484, 0.825034161), b1 = c(0.31510338, 0.5441007, 0.515466925,
0.030702511, 0.020932599, 0.334734486, 0.586588252, 0.562970761,
0.848337089), b2 = c(0.426787995, 0.350719803, 0.706471337, 0.346462166,
0.099766511, 0.219781154, 0.565047862, 0.50282167, 0.727813725
), b3 = c(0.799666435, 0.07225825, 0.409411895, 0.701122141,
0.529991257, 0.478439097, 0.79467065, 0.442156618, 0.026693511
), A = c(0.43143391, 0.662313075, 0.584967093, 0.866110621, 0.598682492,
0.14665666, 0.454315631, 0.448968611, 0.238969939), B = c(0.060625179,
0.410312393, 0.614411256, 0.127343899, 0.90370096, 0.882024428,
0.681389602, 0.56535592, 0.850829599)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -9L), spec = structure(list(
cols = list(y1 = structure(list(), class = c("collector_double",
"collector")), y2 = structure(list(), class = c("collector_double",
"collector")), a1 = structure(list(), class = c("collector_double",
"collector")), a2 = structure(list(), class = c("collector_double",
"collector")), a3 = structure(list(), class = c("collector_double",
"collector")), b1 = structure(list(), class = c("collector_double",
"collector")), b2 = structure(list(), class = c("collector_double",
"collector")), b3 = structure(list(), class = c("collector_double",
"collector")), A = structure(list(), class = c("collector_double",
"collector")), B = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
【问题讨论】:
-
不完全确定您要在这里做什么。你可以解释吗?也许还显示共享数据的预期输出。
-
@RonakShah 抱歉,我更新了我的问题。