使用插入符号的岭逻辑回归系数的标准误差
Posted
技术标签:
【中文标题】使用插入符号的岭逻辑回归系数的标准误差【英文标题】:Standard Error of Ridge Logistic Regression Coefficient using caret 【发布时间】:2020-05-27 14:18:09 【问题描述】:我在 R 中使用caret
包来执行岭逻辑回归。
现在我可以找到每个变量的系数了。
问题是:如何知道使用岭逻辑回归产生的每个变量的系数标准误?
这是我的示例代码:-
Ridge1 <- train(Group ~., data = train, method = 'glmnet',
trControl = trainControl("cv", number = 10),
tuneGrid = expand.grid(alpha = 0,
lambda = lambda),
family="binomial")
岭逻辑回归系数
coef(Ridge1$finalModel, Ridge1$bestTune$lambda)
如何获得逻辑回归模型中的结果(即:标准误差、wald 统计量、p 值等?)
【问题讨论】:
【参考方案1】:您不会从岭回归或 glmnet 回归中获得 p 值和置信区间,因为当存在惩罚项时,很难估计估计量的分布。 the publication for R package hmi的第一部分涉及到这一点,您可以查看this和this等帖子
我们可以尝试以下方法,例如从 caret 获取最佳 lambda 并在另一个包 hmi
中使用它来估计置信区间和 p 值,但我会谨慎解释这些,它们与自定义的非常不同逻辑glm。
library(caret)
library(mlbench)
data(PimaIndiansDiabetes)
X = as.matrix(PimaIndiansDiabetes[,-ncol(PimaIndiansDiabetes)])
y = as.numeric(PimaIndiansDiabetes$diabetes)-1
lambda = 10^seq(-5,4,length.out=25)
Ridge1 <- train(x=X,y=factor(y), method = 'glmnet',family="binomial",
trControl = trainControl("cv", number = 10),
tuneGrid = expand.grid(alpha = 0,
lambda = lambda))
bestLambda = Ridge1$bestTune$lambda
使用 hdi,但请注意系数与使用插入符号或 glmnet 获得的系数不完全相同:
library(hdi)
fit = ridge.proj(X,y,family="binomial",lambda=bestLambda)
cbind(fit$bhat,fit$se,fit$pval)
[,1] [,2] [,3]
pregnant 0.1137868935 0.0314432291 2.959673e-04
glucose 0.0329008177 0.0035806920 3.987411e-20
pressure -0.0122503030 0.0051224313 1.677961e-02
triceps 0.0009404808 0.0067935741 8.898952e-01
insulin -0.0012293122 0.0008902878 1.673395e-01
mass 0.0787408742 0.0145166392 5.822097e-08
pedigree 0.9120151630 0.2927090989 1.834633e-03
age 0.0116844697 0.0092017927 2.041546e-01
【讨论】:
以上是关于使用插入符号的岭逻辑回归系数的标准误差的主要内容,如果未能解决你的问题,请参考以下文章