在不使用 tidy 的情况下提取受限制的回归系数
Extract restricted regression coefficients without using tidy
我正在使用 restriktor 包来执行受限回归;然而,与此同时,我正在使用 dplyr 按组进行受限回归。为了提取系数并将它们格式化为漂亮的面板格式,我使用了 tidy 和 broom,但是 tidy 包在限制器上不起作用,所以我不确定如何提取系数:
library(restriktor)
library(dplyr)
reg =
mtcars %>%
group_by(cyl) %>%
do(model = restriktor(lm(mpg ~ wt + hp, data =.), constraints = ' wt < -4 '))
我想要b.restr,它是要为每个组提取的受限模型系数,并且通常一起格式化成一个面板我会使用以下内容:
reg =
mtcars %>%
group_by(cyl) %>%
do({model = restriktor(lm(mpg ~ wt + hp, data =.), constraints = ' wt < -4 ') # create your model
data.frame(tidy(model), # get coefficient info
glance(model))})
但我收到以下错误:
Error: No tidy method for objects of class restriktor
我只想从列表中提取以下元素,并将它们与它们的组标识符一起放在一个面板格式中:
reg[[2]][[1]][["b.restr"]]
将 group_modify
(现在优于 do
)与 coef
/as.list
/as_tibble
.
一起使用
library(dplyr)
library(restriktor)
# coefficients and R2's or NAs if too few rows for restriktor
co <- function(fo, data) {
fm <- lm(fo, data)
coef_lm <- coef(fm)
min_rows <- length(coef_lm)
if (nrow(data) <= min_rows) NA * c(coef_lm, R2.org = NA, R2.reduced = NA)
else {
r <- restriktor(fm, constraints = ' wt < -4 ')
c(coef(r), R2.org = r$R2.org, R2.reduced = r$R2.reduced)
}
}
mtcars %>%
group_by(cyl) %>%
group_modify(~ {
.x %>%
co(mpg ~ wt + hp, .) %>%
as.list %>%
as_tibble
}) %>%
ungroup
给予:
tibble: 3 x 6
cyl `(Intercept)` wt hp R2.org R2.reduced
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4 45.8 -5.12 -0.0905 0.681 0.681
2 6 35.3 -4 -0.0256 0.589 0.667
3 8 33.9 -4 -0.0132 0.497 0.652
我正在使用 restriktor 包来执行受限回归;然而,与此同时,我正在使用 dplyr 按组进行受限回归。为了提取系数并将它们格式化为漂亮的面板格式,我使用了 tidy 和 broom,但是 tidy 包在限制器上不起作用,所以我不确定如何提取系数:
library(restriktor)
library(dplyr)
reg =
mtcars %>%
group_by(cyl) %>%
do(model = restriktor(lm(mpg ~ wt + hp, data =.), constraints = ' wt < -4 '))
我想要b.restr,它是要为每个组提取的受限模型系数,并且通常一起格式化成一个面板我会使用以下内容:
reg =
mtcars %>%
group_by(cyl) %>%
do({model = restriktor(lm(mpg ~ wt + hp, data =.), constraints = ' wt < -4 ') # create your model
data.frame(tidy(model), # get coefficient info
glance(model))})
但我收到以下错误:
Error: No tidy method for objects of class restriktor
我只想从列表中提取以下元素,并将它们与它们的组标识符一起放在一个面板格式中:
reg[[2]][[1]][["b.restr"]]
将 group_modify
(现在优于 do
)与 coef
/as.list
/as_tibble
.
library(dplyr)
library(restriktor)
# coefficients and R2's or NAs if too few rows for restriktor
co <- function(fo, data) {
fm <- lm(fo, data)
coef_lm <- coef(fm)
min_rows <- length(coef_lm)
if (nrow(data) <= min_rows) NA * c(coef_lm, R2.org = NA, R2.reduced = NA)
else {
r <- restriktor(fm, constraints = ' wt < -4 ')
c(coef(r), R2.org = r$R2.org, R2.reduced = r$R2.reduced)
}
}
mtcars %>%
group_by(cyl) %>%
group_modify(~ {
.x %>%
co(mpg ~ wt + hp, .) %>%
as.list %>%
as_tibble
}) %>%
ungroup
给予:
tibble: 3 x 6
cyl `(Intercept)` wt hp R2.org R2.reduced
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4 45.8 -5.12 -0.0905 0.681 0.681
2 6 35.3 -4 -0.0256 0.589 0.667
3 8 33.9 -4 -0.0132 0.497 0.652