如何重复单变量回归并提取P值?

How to repeat univariate regression and extract P values?

我正在使用 lapply 一次通过一个自变量对一个因变量执行多个 glm 回归。但我不确定如何一次提取 P 值。

我的数据集中有 200 个特征,但下面的代码只给出了特征#1 的 P 值。如何得到 200 个特征的所有 P 值的矩阵?

valName<- as.data.frame(colnames(repeatData))
featureName<-valName[3,]
lapply(featureName,
       function(var) {       
         formula    <- as.formula(paste("outcome ~", var))
         fit.logist <- glm(formula, data = repeatData, family = binomial)
         summary(fit.logist)
         Pvalue<-coef(summary(fit.logist))[,'Pr(>|z|)'] 
       })

我 我稍微简化了你的代码; (1) 使用 reformulate()(并没有什么不同,只是更漂亮) (2) 仅返回焦点变量的 p 值(不是截距 p 值)。 (如果您省略 2,您将得到一个包含截距和焦点变量 p 值的 2 行矩阵。)

我的示例使用内置的 mtcars 数据集,并添加了(假的)二项式响应。

repeatData <- data.frame(outcome=rbinom(nrow(mtcars), size=1, prob=0.5), mtcars)
ff <-   function(var) {       
         formula    <- reformulate(var, response="outcome")
         fit.logist <- glm(formula, data = repeatData, family = binomial)
         coef(summary(fit.logist))[2, 'Pr(>|z|)'] 
       }
## skip first column (response variable).
sapply(names(repeatData)[-1], ff)