R語(yǔ)言有序多分類(lèi)Logistic回歸

? ? ? ? 常見(jiàn)的二分類(lèi)結(jié)局變量,如事件是否發(fā)生、是否死亡等,我們可以用二分類(lèi)logistics回歸分析結(jié)局變量和自變量因素之間的關(guān)系,在R語(yǔ)言中也很容易實(shí)現(xiàn),結(jié)果也非常容易解釋。但有時(shí)候我們會(huì)遇到這樣的結(jié)局指標(biāo),如病情的嚴(yán)重程度、對(duì)服務(wù)質(zhì)量的評(píng)價(jià)、患者滿意度等,這些指標(biāo)都是有序的都分類(lèi)指標(biāo),如輕度、中度、重度;差、一般、好等。此時(shí),如果要探究結(jié)局變量的影響因素,就會(huì)用到有序多分類(lèi)Logistic回歸(Ordinal Logistic Regression)。這里我們以一個(gè)簡(jiǎn)單的例子介紹在R中如何進(jìn)行有序Logistic回歸的分析。

? ? ? ? ? ? ? 我們一個(gè)500人的數(shù)據(jù),變量有年齡(Age)、性別(Sex)、血壓(blood.pressure)和自評(píng)的健康狀況(outcome,差、一般、好)。要分析自評(píng)的健康狀況的影響因素,我們要用到有序多分類(lèi)Logistic回歸。在R語(yǔ)言中完成這個(gè)過(guò)程:

#####載入需要的包

install.packages("MASS")

install.packages("brant")

library(MASS)

library(brant)

###生成模擬數(shù)據(jù)

n <-1000? # define sample size

set.seed(2022) # so can reproduce the results

age? ? ? ? ? ? <- rnorm(n, 60, 10)

blood.pressure <- rnorm(n, 125, 15)

sex? ? ? ? ? ? <- factor(sample(c('female','male'), n,TRUE))

outcome<- factor(sample(c(1,2,3),n,TRUE),levels = c("1","2","3"),

? ? ? ? ? ? ? ? ? labels = c("poor","fair","good"))

data<-data.frame(age,blood.pressure,sex,outcome)

head(data)

#####單因素分析------------

fit0<-polr(ordered(outcome)~ 1, data=data)#####空模型

fit1<-polr(ordered(outcome)~ +sex, data=data)

summary(fit1)


#####平行線檢驗(yàn)---

brant(fit1) ###p>0.1,滿足平行線檢驗(yàn)


####檢驗(yàn)?zāi)P驼w是否有意義

anova(fit0,fit1)? ####p=0.0687,接近有意義


#####生成OR、95%CI和P值

#####生成OR、95%CI和P值

OR<-round(exp(fit1$coefficients),2)

CI <- round(exp(confint(fit1)), 2)

CI<-data.frame(CI[1],CI[2])

colnames(CI) <- c("Lower", "Higher")

P <- (pnorm(abs( coef(summary(fit1))[,"t value"]),lower.tail = FALSE)*2)[1]

out<- as.data.frame(cbind(OR, CI, P))

out

#####輸出的即為我們需要的OR、95%CI和P value

######多因素分析,方法類(lèi)似-----------------------------

fit2<-polr(ordered(outcome)~ +sex+age+blood.pressure, data=data)

summary(fit2)


#####平行線檢驗(yàn)---

brant(fit2) ###p>0.1,三個(gè)變量都滿足平行線檢驗(yàn)


####檢驗(yàn)?zāi)P驼w是否有意義

anova(fit0,fit2)?

#####生成OR、95%CI和P值,和單因素的有些區(qū)別

OR_CI<-exp(cbind(OR=coef(fit2),confint(fit2)))

colnames(OR_CI) <- c("OR","Lower", "Higher")

P <- (pnorm(abs( coef(summary(fit2))[,"t value"]),lower.tail = FALSE)*2)

P


#TI

P<-P[1:3] ###提取前三個(gè)

out<- as.data.frame(cbind(OR_CI, P))

out


######結(jié)果輸出即可

write.table(out, file ="/STR_2.csv", sep = ",",? ? col.names = NA,qmethod = "double",append=TRUE)? ??

? ? ? ? ? ? 得到結(jié)果后如何解釋呢,以性別為例(僅解釋結(jié)果,先暫時(shí)忽略掉其沒(méi)有意義),我們可以說(shuō):“和女性相比,男性對(duì)自身的健康狀況評(píng)價(jià)更低 (OR=0.82, 95%CI=0.65-1.02)”,或者是“男性認(rèn)為自身健康好的OR值是女性的0.82倍 (OR=0.82, 95%CI=0.65-1.02)”。

? ? ? ? ? ?總結(jié)以上,對(duì)于有序多分類(lèi)結(jié)局變量,我們可以用有序多分類(lèi)Logistic回歸,但是要滿足平行線假設(shè)的條件,如果不滿足的話,可以用無(wú)序多分類(lèi)Logistic回歸或者轉(zhuǎn)化為二分類(lèi)Logistic回歸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容