簡體   English   中英

predict.glmnet() 使用 family = "binomial" 對 type = "link" 和 "response" 給出相同的預測

[英]predict.glmnet() gives same predictions for type = "link" and "response" using family = "binomial"

以這種情況為例(邏輯回歸的經典螃蟹數據):

> library(glmnet)
> X <- read.table("http://www.da.ugent.be/datasets/crab.dat", header=T)[1:10,]
> Y <- factor(ifelse(X$Sa > 0, 1, 0))
> Xnew <- data.frame('W'=20,'Wt'=2000)
> fit.glmnet <- glmnet(x = data.matrix(X[,c('W','Wt')]), y = Y, family = "binomial")

現在我想從Xnew預測新值:

根據文檔,我可以使用predict.glmnet

類型

所需的預測類型。 “鏈接”類型給出了“二項式”、“多項式”、“泊松”或“cox”模型的線性預測器; 對於“高斯”模型,它給出了擬合值。 “響應”類型給出了“二項式”或“多項式”的擬合概率,[...]

所以這就是我所做的:

> predict.glmnet(object = fit.glmnet, type="response", newx = as.matrix(Xnew))[,1:5]
        s0         s1         s2         s3         s4 
-0.8472979 -0.9269763 -1.0057390 -1.0836919 -1.1609386 
> predict.glmnet(object = fit.glmnet, type="link", newx = as.matrix(Xnew))[,1:5]
        s0         s1         s2         s3         s4 
-0.8472979 -0.9269763 -1.0057390 -1.0836919 -1.1609386 

兩個link值與response預測相同,這不是我所期望的。 使用predict似乎給了我正確的值:

> predict(object = fit.glmnet, type="response", newx = as.matrix(Xnew))[,1:5]
       s0        s1        s2        s3        s4 
0.3000000 0.2835386 0.2678146 0.2528080 0.2384968 
> predict(object = fit.glmnet, type="link", newx = as.matrix(Xnew))[,1:5] 
        s0         s1         s2         s3         s4 
-0.8472979 -0.9269763 -1.0057390 -1.0836919 -1.1609386 

這是一個錯誤,還是我以錯誤的方式使用predict.glmnet

在數據包glmnet ,您的對象屬於lognet類:

> class(object)
[1] "lognet" "glmnet"

這就是為什么您沒有使用predict.glmnet獲得正確結果的原因,它內部不支持type="response" ,但如果您使用predict.lognet ,您會得到它:

> predict.lognet(object = fit.glmnet, newx = as.matrix(Xnew), type="response")[,1:5]
       s0        s1        s2        s3        s4 
0.3000000 0.2835386 0.2678146 0.2528080 0.2384968 
> predict.lognet(object = fit.glmnet, newx = as.matrix(Xnew), type="link")[,1:5]
        s0         s1         s2         s3         s4 
-0.8472979 -0.9269763 -1.0057390 -1.0836919 -1.1609386 

無論如何,我建議您使用predict ,並讓 R 在內部解析要使用的函數。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM