如何重复单变量回归并提取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)
我正在使用 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)