从r中的函数中提取T统计量

  • 本文关键字:统计 提取 函数 r
  • 更新时间 :
  • 英文 :


我从一本教科书中得到了这个函数,它运行了几个线性回归,然后保存了每个回归的p值。

我也想保存T-Statistic,但是我很难找到正确的语法来输入select函数。

这是当前函数。

models <- lapply(paste(factors, ' ~  a + b + c + d + e + f + g + h+ j -',factors),
function(f){ lm(as.formula(f), data = df) %>%               # Call lm(.)
summary() %>%                               # Gather the output
"$"(coef) %>%                               # Keep only the coefs
data.frame() %>%                            # Convert to dataframe
filter(rownames(.) == "(Intercept)") %>%    # Keep only the Intercept
dplyr::select(Estimate,`Pr...t..`)})         # Keep the coef & p-value

我知道我必须改变功能的最后一部分:dplyr::select(Estimate,`Pr...t..`),但经过我所有的研究和试错,我仍然卡住了。

下面是一个使用mtcars数据的可重复示例。

library(dplyr)
df <- mtcars
df <- df %>% 
select(1,2,3,4,5,6,7)
factors <- c("mpg", "cyl", "disp", "hp", "drat", "wt")
models <- lapply(paste(factors, ' ~  mpg + cyl + disp + hp + drat + wt -',factors),
function(f){ lm(as.formula(f), data = df) %>%               # Call lm(.)
summary() %>%                               # Gather the output
"$"(coef) %>%                               # Keep only the coefs
data.frame() %>%                            # Convert to dataframe
filter(rownames(.) == "(Intercept)") %>%    # Keep only the Intercept
dplyr::select(Estimate,`Pr...t..`)}         # Keep the coef & p-value
)

final <- matrix(unlist(models), ncol = 2, byrow = T) %>%       # Switch from list to dataframe
data.frame(row.names = factors

你的例子对我有用。你可以让它更"整洁"一点。如下:

library(broom)
sumfun <- function(f) {
lm(as.formula(f), data = df) %>%          
tidy() %>%
filter(term == "(Intercept)") %>%
dplyr::select(estimate, p.value)
}
pp <- paste(factors, ' ~  mpg + cyl + disp + hp + drat + wt -',factors)
names(pp) <- factors
final <- purrr::map_dfr(pp, sumfun, .id = "factor")

最新更新