r语言 - 使用插入符号的岭逻辑回归系数的标准误差



我在R中使用caret包来执行Ridge Logistic Regression。 现在我能够找到每个变量的系数。

问题是:如何使用岭逻辑回归知道每个变量产生的系数标准误差?

这是我拥有的示例代码:-

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值等?

您无法从岭或 glmnet 回归中获得 p 值和置信区间,因为当存在惩罚项时,很难估计估计器的分布。R包hmi出版物的第一部分涉及这一点,您可以查看诸如此和该的帖子

我们可以尝试下面的方法,例如从插入符号中获取最佳 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

最新更新