簡體   English   中英

警告:使用 VGLM() 擬合非比例賠率序數回歸 model 時出現“交叉線性/加性預測變量”

[英]Warning: "Intersecting linear/additive predictors" when fitting non-proportional odds ordinal regression model with VGLM()

我正在擬合部分比例賠率累積對數序數回歸 model。響應是序數診斷,預測因子是兩個尿液生物標志物。 我使用以下命令安裝 model:

fit=vglm(diagnosis ~ creatinine + LYVE1, data=urine.dat, 
    family=cumulative(parallel=F))
summary(fit)

之后,我經常收到以下警告中的大約 20 條:

In slot(family, "validparams")(eta, y, extra = extra) :
    It seems that the nonparallelism assumption has resulted in    
    intersecting linear/additive predictors.  
    Try propodds() or fitting a partial nonproportional odds model or  
    choosing some other link function, etc.

有誰理解“相交的線性/加法預測變量”是什么意思? 據我所知,非比例賠率 VGLM 模型經常返回此錯誤。 只是想了解 model 有什么問題。

任何見解都會有所幫助。

如果您查看VGAM源代碼,您會發現以下引發警告的部分:

    probs <-
      if ( .reverse ) {
        ccump <- cbind(1, eta2theta(eta, .link , earg = .earg ))
        cbind(-tapplymat1(ccump, "diff"), ccump[, ncol(ccump)])
      } else {
        cump <- cbind(eta2theta(eta, .link , earg = .earg ), 1)
        cbind(cump[, 1], tapplymat1(cump, "diff"))
      }
    okay1 <- all(is.finite(probs)) && all(0 < probs & probs < 1)
    if (!okay1)
      warning("It seems that the nonparallelism assumption has ",
              "resulted in intersecting linear/additive ",
              "predictors.  Try propodds() or fitting a partial ",
              "nonproportional odds model or choosing ",
              "some other link function, etc.")

我們可以將其歸結為幾個不同的部分:

library(VGAM)
#> Loading required package: stats4
#> Loading required package: splines
fit=vglm(cyl ~ wt, data=mtcars, 
         family=cumulative(parallel=F))

eta <- predict(fit, type="link")
cump <- cbind(VGAM:::eta2theta(eta, logitlink ), 1)
probs <- cbind(cump[, 1], tapplymat1(cump, "diff"))

由於cyl具有三個值,因此eta是鏈接尺度上預測值的 Nx2 矩陣。 cump是以有序 logit 的通常方式計算的累積概率矩陣。 probs是以有序 logit 的常用方式計算的類別概率矩陣 - 通過從當前概率中減去先前的累積概率。 一旦計算出這些,就會生成一個標志來標識所有概率是否都是有限的並且在理論范圍內:

okay1 <- all(is.finite(probs)) && all(0 < probs & probs < 1)
#> [1] FALSE

在這種情況下okay1FALSE 我們可以在下面看到原因:

all(is.finite(probs))
#> [1] TRUE
all(0 < probs & probs < 1)
#> [1] FALSE

這是因為一些預測的概率是負的。 我們可以在下面看到哪些:

ind <- which(probs < 0 | probs > 1, arr.ind=TRUE)[,1]
ind
#> row 
#>  16

probs[ind, ]
#>                    logitlink(P[Y<=2])                    
#>       1.253506e-04      -2.167395e-12       9.998746e-01

請注意,第二組的預測概率為負(盡管與零相差不大)。 這里的要點是,即使您指定了parallel=FALSE ,生成的 model 與基礎累積概率假設不兼容。 該警告鼓勵您使用不同的 model,它不會以這種方式計算概率,例如多項式 logit。 例如:

fit2=vglm(cyl ~ wt, data=mtcars, 
         family=multinomial())

這不會引發警告,因為概率的計算方式不允許它們在 [0,1] 之外,只要鏈接尺度上的指數預測值是有限的。

reprex package (v2.0.1) 創建於 2022-04-26

暫無
暫無

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

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