《R語言實(shí)戰(zhàn)》自學(xué)筆記70-廣義線性模型

第四部分 高級(jí)方法

第13章 廣義線性模型

廣義線性模型適用條件

假設(shè)因變量為正態(tài)分布不成立的情況,如:

?結(jié)果變量可能是類別型的二值變量(比如:是/否、通過/失敗、活著/死亡)和多分類變量(比如差/良好/優(yōu)秀)都顯然不是正態(tài)分布。

?結(jié)果變量可能是計(jì)數(shù)型的:(比如,一周交通事故的數(shù)目,每日酒水消耗的數(shù)量)。這類變量都是非負(fù)的有限值,而且它們的均值和方差通常都是相關(guān)的(正態(tài)分布變量間不是如此,而是相互獨(dú)立)。

廣義線性模型擴(kuò)展了線性模型的框架,它包含了非正態(tài)因變量的分析。

常見廣義線性模型

1、標(biāo)準(zhǔn)線性模型:是廣義線性模型的一個(gè)特例,因變量服從正態(tài)分布;
2、Logistic回歸:因變量服從二項(xiàng)分布,相應(yīng)變量是二值型(0和1);
3、泊松回歸:因變量服從泊松分布,相應(yīng)變量是計(jì)數(shù)型。

廣義線性模型定義:

廣義線性模型(generalize linear model,GLM)是線性模型的擴(kuò)展,通過聯(lián)結(jié)函數(shù)建立響應(yīng)變量的數(shù)學(xué)期望值與線性組合的預(yù)測變量之間的關(guān)系。其特點(diǎn)是不強(qiáng)行改變數(shù)據(jù)的自然度量,數(shù)據(jù)可以具有非線性和非恒定方差結(jié)構(gòu)。是線性模型在研究響應(yīng)值的非正態(tài)分布以及非線性模型簡潔直接的線性轉(zhuǎn)化時(shí)的一種發(fā)展。

線性回歸和邏輯回歸都是廣義線性模型的一種特殊形式。

13.1 廣義線性模型和glm()函數(shù)

廣義線性模型擬合的形式為:

{\rm{g(}}{\mu _Y}{\rm{)}} = {\beta _0} + {\sum\nolimits_{j = 1}^p \beta _j}{X_j}
其中g(μ_Y)是條件均值的函數(shù)(稱為連接函數(shù))。另外,你可放松Y為正態(tài)分布的假設(shè),改為Y服從指數(shù)分布族中的一種分布即可。設(shè)定好連接函數(shù)和概率分布后,便可以通過最大似然估計(jì)的多次迭代推導(dǎo)出各參數(shù)值。

13.1.1 glm()函數(shù)

R中可通過glm函數(shù)(還可用其他專門的函數(shù))擬合廣義線性模型。

glm(formula, family = gaussian, data, weights, subset,
na.action, start = NULL, etastart, mustart, offset,
control = list(...), model = TRUE, method = "glm.fit",
x = FALSE, y = TRUE, singular.ok = TRUE, contrasts = NULL, ...)

表13-1列出了概率分布(family)和相應(yīng)默認(rèn)的連接函數(shù)(function)。

image.png

假設(shè)你有一個(gè)響應(yīng)變量(Y)、三個(gè)預(yù)測變量(X1、X2、X3)和一個(gè)包含數(shù)據(jù)的數(shù)據(jù)框(mydata)。
Logistic回歸適用于二值響應(yīng)變量(0,1)。模型假設(shè)Y服從二項(xiàng)分布,線性模型的擬合形式為:
ln(\frac {\pi}{1-\pi})=\beta_0 + \sum\nolimits_{j = 1}^p{\beta_jX_j}

其中\pi = \mu_Y是Y的條件均值(即給定一系列X的值時(shí)Y = 1的概率),\frac {\pi}{1-\pi}為Y = 1時(shí)的優(yōu)勢比,log(\frac {\pi}{1-\pi})為對數(shù)優(yōu)勢比,或logit。本例中,log(\frac {\pi}{1-\pi})為連接函數(shù),概率分布為二項(xiàng)分布,可用如下代碼擬合Logistic回歸模型:

glm(Y~x1+x2+x3,family=binomial(link="logit"),data=mydata)

泊松回歸適用于在給定時(shí)間內(nèi)響應(yīng)變量為事件發(fā)生數(shù)目的情形。它假設(shè)Y服從泊松分布,線性模型的擬合形式為:

ln(\lambda)=\beta_0 + \sum\nolimits_{j = 1}^p{\beta_jX_j}

其中λ是Y的均值(也等于方差)。此時(shí),連接函數(shù)為log(λ),概率分布為泊松分布,可用如下代碼擬合泊松回歸模型:
glm(Y~x1+x2+x3,family=poisson(link="log"),data=mydata)

值得注意的是,標(biāo)準(zhǔn)線性模型也是廣義線性模型的一個(gè)特例。如果令連接函數(shù)g(μY) =μY或恒等函數(shù),并設(shè)定概率分布為正態(tài)(高斯)分布,那么:
glm(Y~x1+x2+x3,family=gaussian(link="identity"),data=mydata)
生成的結(jié)果與下列代碼的結(jié)果相同:
lm(Y~x1+x2+x3,data=mydata)
總之,廣義線性模型通過擬合響應(yīng)變量的條件均值的一個(gè)函數(shù)(不是響應(yīng)變量的條件均值),假設(shè)響應(yīng)變量服從指數(shù)分布族中的某個(gè)分布(并不僅限于正態(tài)分布),極大地?cái)U(kuò)展了標(biāo)準(zhǔn)線性模型。模型參數(shù)估計(jì)的推導(dǎo)依據(jù)的是極大似然估計(jì),而非最小二乘法。

13.1.2 連用的函數(shù)

與分析標(biāo)準(zhǔn)線性模型時(shí)lm()連用的許多函數(shù)在glm()中都有對應(yīng)的形式,其中一些常見的函數(shù)見表13-2。

image.png

13.1.3 模型擬合和回歸診斷

當(dāng)評(píng)價(jià)模型的適用性時(shí),你可以繪制初始響應(yīng)變量的預(yù)測值與殘差的圖形。例如,如下代碼可繪制一個(gè)常見的診斷圖:
plot(predict(model,type="response"),residuals(model,type="deviance"))
其中,model為glm()函數(shù)返回的對象。
R將列出帽子值(hat value)、學(xué)生化殘差值和Cook距離統(tǒng)計(jì)量的近似值。

car包繪制診斷圖
library(car)
influencePlot(model)
它可以創(chuàng)建一個(gè)綜合性的診斷圖。在后面的圖形中,橫軸代表杠桿值,縱軸代表學(xué)生化殘差值,而繪制的符號(hào)大小與Cook距離大小成正比。

13.2 Logistic回歸

當(dāng)通過一系列連續(xù)型和/或類別型預(yù)測變量來預(yù)測二值型結(jié)果變量時(shí),Logistic回歸是一個(gè)非常有用的工具。

Logistic回歸模型的適用條件
1 因變量為二分類的分類變量或某事件的發(fā)生率,并且是數(shù)值型變量。但是需要注意,重復(fù)計(jì)數(shù)現(xiàn)象指標(biāo)不適用于Logistic回歸。
2 殘差和因變量都要服從二項(xiàng)分布。二項(xiàng)分布對應(yīng)的是分類變量,所以不是正態(tài)分布,進(jìn)而不是用最小二乘法,而是最大似然法來解決方程估計(jì)和檢驗(yàn)問題。
3 自變量和Logistic概率是線性關(guān)系。
4 各觀測對象間相互獨(dú)立。

logistic回歸和線性回歸

邏輯回歸(Logistic Regression)與線性回歸(Linear Regression)都是一種廣義線性模型(generalized linear model)。
邏輯回歸假設(shè)因變量 y 服從伯努利分布,而線性回歸假設(shè)因變量 y 服從高斯分布。

Sigmoid函數(shù)
也稱為邏輯函數(shù)(Logistic function)
g(z)=\frac{1}{1+e^{-z}}

image.png

從上圖可以看到sigmoid函數(shù)是一個(gè)s形的曲線,它的取值在[0,1]之間,在遠(yuǎn)離0的地方函數(shù)的值會(huì)很快接近0或者1。

《R語言實(shí)戰(zhàn)》例子,AER包Affairs數(shù)據(jù)集為例。

該數(shù)據(jù)從601個(gè)參與者身上收集了9個(gè)變量,包括一年來婚外私通的頻率以及參與者性別、年齡、婚齡、是否有小孩、宗教信仰程度(5分制,1分表示反對,5分表示非常信仰)、學(xué)歷、職業(yè)(逆向編號(hào)的戈登7種分類),還有對婚姻的自我評(píng)分(5分制,1表示非常不幸福,5表示非常幸福)。

數(shù)據(jù)的描述統(tǒng)計(jì)

data(Affairs, package="AER") # 調(diào)用AER包數(shù)據(jù)集Affairs。
head(Affairs) # 顯示數(shù)據(jù)前6行。
##    affairs gender age yearsmarried children religiousness education occupation
## 4        0   male  37        10.00       no             3        18          7
## 5        0 female  27         4.00       no             4        14          6
## 11       0 female  32        15.00      yes             1        12          1
## 16       0   male  57        15.00      yes             5        18          6
## 23       0   male  22         0.75       no             2        17          6
## 29       0 female  32         1.50       no             2        17          5
##    rating
## 4       4
## 5       4
## 11      4
## 16      5
## 23      3
## 29      5
summary(Affairs) # 數(shù)據(jù)描述。
##     affairs          gender         age         yearsmarried    children 
##  Min.   : 0.000   female:315   Min.   :17.50   Min.   : 0.125   no :171  
##  1st Qu.: 0.000   male  :286   1st Qu.:27.00   1st Qu.: 4.000   yes:430  
##  Median : 0.000                Median :32.00   Median : 7.000            
##  Mean   : 1.456                Mean   :32.49   Mean   : 8.178            
##  3rd Qu.: 0.000                3rd Qu.:37.00   3rd Qu.:15.000            
##  Max.   :12.000                Max.   :57.00   Max.   :15.000            
##  religiousness     education       occupation        rating     
##  Min.   :1.000   Min.   : 9.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:14.00   1st Qu.:3.000   1st Qu.:3.000  
##  Median :3.000   Median :16.00   Median :5.000   Median :4.000  
##  Mean   :3.116   Mean   :16.17   Mean   :4.195   Mean   :3.932  
##  3rd Qu.:4.000   3rd Qu.:18.00   3rd Qu.:6.000   3rd Qu.:5.000  
##  Max.   :5.000   Max.   :20.00   Max.   :7.000   Max.   :5.000
table(Affairs$affairs) # 數(shù)據(jù)集Affairs中affairs列頻數(shù)統(tǒng)計(jì)。
## 
##   0   1   2   3   7  12 
## 451  34  17  19  42  38

將affairs轉(zhuǎn)化為二值型因子ynaffair

Affairs$ynaffair[Affairs$affairs > 0] <- 1 # 添加新列ynaffairs,原affairs列中值大于0,賦值1。
Affairs$ynaffair[Affairs$affairs == 0] <- 0 # 添加新列ynaffairs,原affairs列中值等于0,賦值0。
Affairs$ynaffair <- factor(Affairs$ynaffair, 
                           levels=c(0,1),
                           labels=c("No","Yes")) # 新列轉(zhuǎn)為因子。
table(Affairs$ynaffair) # 統(tǒng)計(jì)因子頻數(shù)。
## 
##  No Yes 
## 451 150

factor函數(shù)
factor(x, levels = sort(unique(x), na.last = TRUE),labels = levels, exclude = NA, ordered = is.ordered(x), nmax = NA)
x是要?jiǎng)?chuàng)建因子的向量,
levels用來指定因子水平值(不指定時(shí)由向量x不同值求得);
labels用來指定水平的名字(不指定時(shí)由用水平值的對應(yīng)字符串);exclude表示從向量x中剔除的水平值;
ordered是一個(gè)邏輯型選項(xiàng),用來指定因子的水平是否有次序。
nmax是水平的上限數(shù)量。

對二值型因子變量進(jìn)行l(wèi)ogistic回歸

fit.full <- glm(ynaffair ~ gender + age + yearsmarried + children + 
                  religiousness + education + occupation +rating,
                data=Affairs,family=binomial()) # Logistic回歸,響應(yīng)變量為ynaffair,預(yù)測變量為gender,age,yearsmarried,children,religiousness,education,occupation,rating。
summary(fit.full) # 返回回歸結(jié)果。
## 
## Call:
## glm(formula = ynaffair ~ gender + age + yearsmarried + children + 
##     religiousness + education + occupation + rating, family = binomial(), 
##     data = Affairs)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.5713  -0.7499  -0.5690  -0.2539   2.5191  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    1.37726    0.88776   1.551 0.120807    
## gendermale     0.28029    0.23909   1.172 0.241083    
## age           -0.04426    0.01825  -2.425 0.015301 *  
## yearsmarried   0.09477    0.03221   2.942 0.003262 ** 
## childrenyes    0.39767    0.29151   1.364 0.172508    
## religiousness -0.32472    0.08975  -3.618 0.000297 ***
## education      0.02105    0.05051   0.417 0.676851    
## occupation     0.03092    0.07178   0.431 0.666630    
## rating        -0.46845    0.09091  -5.153 2.56e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 675.38  on 600  degrees of freedom
## Residual deviance: 609.51  on 592  degrees of freedom
## AIC: 627.51
## 
## Number of Fisher Scoring iterations: 4

結(jié)果解讀:從回歸系數(shù)的p值(最后一欄)可以看到,性別、是否有孩子、學(xué)歷和職業(yè)對方程的貢獻(xiàn)都不顯著(你無法拒絕參數(shù)為0的假設(shè))。原假設(shè)為所有預(yù)測變量對方程均有貢獻(xiàn)且相同

去除不顯著因子,重新擬合

fit.reduced <- glm(ynaffair ~ age + yearsmarried + religiousness + 
                     rating, data=Affairs, family=binomial()) # 去除不顯著預(yù)測變量,重新擬合模型。
summary(fit.reduced) # 返回結(jié)果。
## 
## Call:
## glm(formula = ynaffair ~ age + yearsmarried + religiousness + 
##     rating, family = binomial(), data = Affairs)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.6278  -0.7550  -0.5701  -0.2624   2.3998  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    1.93083    0.61032   3.164 0.001558 ** 
## age           -0.03527    0.01736  -2.032 0.042127 *  
## yearsmarried   0.10062    0.02921   3.445 0.000571 ***
## religiousness -0.32902    0.08945  -3.678 0.000235 ***
## rating        -0.46136    0.08884  -5.193 2.06e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 675.38  on 600  degrees of freedom
## Residual deviance: 615.36  on 596  degrees of freedom
## AIC: 625.36
## 
## Number of Fisher Scoring iterations: 4

兩回歸模型的比較,對于廣義線性回歸,可用卡方檢驗(yàn)。

anova(fit.reduced, fit.full, test="Chisq") # 兩個(gè)擬合模型的對比。
## Analysis of Deviance Table
## 
## Model 1: ynaffair ~ age + yearsmarried + religiousness + rating
## Model 2: ynaffair ~ gender + age + yearsmarried + children + religiousness + 
##     education + occupation + rating
##   Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1       596     615.36                     
## 2       592     609.51  4   5.8474   0.2108

卡方值不顯著(p=0.21),表明四個(gè)預(yù)測變量的新模型與九個(gè)完整預(yù)測變量的模型擬合程度一樣好。

13.2.1 解釋模型參數(shù)

在Logistic回歸中,響應(yīng)變量是Y=1的對數(shù)優(yōu)勢比(log)?;貧w系數(shù)含義是當(dāng)其他預(yù)測變量不變時(shí),一單位預(yù)測變量的變化可引起的響應(yīng)變量對數(shù)優(yōu)勢比的變化。
對于二值型Logistic回歸,某預(yù)測變量n單位的變化引起的較高值上優(yōu)勢比的變化為exp(βj)^n,它反映的信息可能更為重要。

優(yōu)勢比
優(yōu)勢比(odds ratio;OR)是另外一種描述概率的方式。優(yōu)勢比將會(huì)告訴我們某種推測的概率比其反向推測的概率大多少。換句話說,優(yōu)勢比是指某種推測為真的概率與某種推測為假的概率的比值。比如下雨的概率為0.25,不下雨的概率為0.75。0.25與0.75的比值可以約分為1比3。因此,我們可以說今天將會(huì)下雨的優(yōu)勢比為1:3(或者今天不會(huì)下雨的概率比為3:1)。

coef(fit.reduced) # 查看fit.reduced模型的回歸系數(shù)。
##   (Intercept)           age  yearsmarried religiousness        rating 
##    1.93083017   -0.03527112    0.10062274   -0.32902386   -0.46136144
exp(coef(fit.reduced)) # 指數(shù)化結(jié)果。
##   (Intercept)           age  yearsmarried religiousness        rating 
##     6.8952321     0.9653437     1.1058594     0.7196258     0.6304248
exp(confint(fit.reduced)) # 在優(yōu)勢比尺度上得到系數(shù)95%的置信區(qū)間。
##                   2.5 %     97.5 %
## (Intercept)   2.1255764 23.3506030
## age           0.9323342  0.9981470
## yearsmarried  1.0448584  1.1718250
## religiousness 0.6026782  0.8562807
## rating        0.5286586  0.7493370

13.2.2 評(píng)價(jià)預(yù)測變量對結(jié)果概率的影響

使用predict()函數(shù),你可觀察某個(gè)預(yù)測變量在各個(gè)水平時(shí)對結(jié)果概率的影響。

創(chuàng)建一個(gè)虛擬數(shù)據(jù)集,設(shè)定年齡、婚齡和宗教信仰為它們的均值,婚姻評(píng)分的范圍為1~5。

testdata <- data.frame(rating = c(1, 2, 3, 4, 5),
                       age = mean(Affairs$age),
                       yearsmarried = mean(Affairs$yearsmarried),
                       religiousness = mean(Affairs$religiousness)) # 虛擬數(shù)據(jù)集testdata的創(chuàng)建。

predict函數(shù)預(yù)測數(shù)據(jù)集testdata中rating變量的概率

testdata$prob <- predict(fit.reduced, newdata=testdata, type="response") # 數(shù)據(jù)集testdata中rating變量的概率預(yù)測。
testdata # 顯示數(shù)據(jù)集。
##   rating      age yearsmarried religiousness      prob
## 1      1 32.48752     8.177696      3.116473 0.5302296
## 2      2 32.48752     8.177696      3.116473 0.4157377
## 3      3 32.48752     8.177696      3.116473 0.3096712
## 4      4 32.48752     8.177696      3.116473 0.2204547
## 5      5 32.48752     8.177696      3.116473 0.1513079

predict函數(shù)預(yù)測數(shù)據(jù)集testdata中age變量的概率

testdata <- data.frame(rating = mean(Affairs$rating),
                       age = seq(17, 57, 10), 
                       yearsmarried = mean(Affairs$yearsmarried),
                       religiousness = mean(Affairs$religiousness)) # age變量定義。
testdata$prob <- predict(fit.reduced, newdata=testdata, type="response") # 數(shù)據(jù)集testdata中age變量的概率預(yù)測。
testdata # 顯示結(jié)果。
##    rating age yearsmarried religiousness      prob
## 1 3.93178  17     8.177696      3.116473 0.3350834
## 2 3.93178  27     8.177696      3.116473 0.2615373
## 3 3.93178  37     8.177696      3.116473 0.1992953
## 4 3.93178  47     8.177696      3.116473 0.1488796
## 5 3.93178  57     8.177696      3.116473 0.1094738

13.2.3 過度離勢

抽樣于二項(xiàng)分布的數(shù)據(jù)的期望方差是σ2 = nπ(1-π),n為觀測數(shù),π為屬于Y = 1組的概率。
所謂過度離勢,即觀測到的響應(yīng)變量的方差大于期望的二項(xiàng)分布的方差。過度離勢會(huì)導(dǎo)致奇異的標(biāo)準(zhǔn)誤檢驗(yàn)和不精確的顯著性檢驗(yàn)。
當(dāng)出現(xiàn)過度離勢時(shí),仍可使用glm()函數(shù)擬合Logistic回歸,但此時(shí)需要將二項(xiàng)分布改為類二項(xiàng)分布(quasibinomial distribution)
檢測過度離勢的一種方法是比較二項(xiàng)分布模型的殘差偏差與殘差自由度。
\phi = \frac {殘差偏差}{殘差自由度}
當(dāng)比值比1大很多,你便可認(rèn)為存在過度離勢。

你還可以對過度離勢進(jìn)行檢驗(yàn)。為此,你需要擬合模型兩次,第一次使用 family =
"binomial",第二次使用family = "quasibinomial"。假設(shè)第一次glm()返回對象記為fit,
第二次返回對象記為fit.od,那么:
pchisq(summary(fit.od) dispersion * fit df.residual, fit df.residual, lower = F))
提供的p值即可對零假設(shè)H0:Φ = 1與備擇假設(shè)H1:Φ≠ 1進(jìn)行檢驗(yàn)。若p很小(小于0.05),你便可拒絕零假設(shè)。

對Affairs數(shù)據(jù)集過度離勢的判斷

fit.aff <- glm(ynaffair ~ age + yearsmarried + religiousness +
             rating, family = binomial(), data = Affairs) # 模型fit.aff構(gòu)建。
fit.od <- glm(ynaffair ~ age + yearsmarried + religiousness +
                rating, family = quasibinomial(), data = Affairs) # 模型fit.od構(gòu)建。
pchisq(summary(fit.od)$dispersion * fit.aff$df.residual,  
       fit.aff$df.residual, lower = F) # 過度離勢檢驗(yàn)。
## [1] 0.340122

13.2.4 擴(kuò)展

13.3 泊松回歸

當(dāng)通過一系列連續(xù)型和/或類別型預(yù)測變量來預(yù)測計(jì)數(shù)型結(jié)果變量時(shí),泊松回歸是一個(gè)非常有用的工具。
泊松回歸(英語:Poisson regression)是用來為計(jì)數(shù)資料和列聯(lián)表建模的一種回歸分析。泊松回歸假設(shè)反應(yīng)變量Y是泊松分布,并假設(shè)它期望值的對數(shù)可被未知參數(shù)的線性組合建模。泊松回歸模型有時(shí)(特別是當(dāng)用作列聯(lián)表模型時(shí))又被稱作對數(shù)-線性模型。
泊松回歸常用來研究單位時(shí)間/單位面積/單位空間內(nèi)某事件的發(fā)生數(shù)的影響因素。
泊松回歸要求響應(yīng)變量滿足泊松分布。Poisson分布的概率密度函數(shù):
P(y|x=k)=\frac{\lambda^k}{k!}e^{-\lambda}
P表示單位時(shí)間/單位面積/單位空間內(nèi)某事件發(fā)生k次的概率。λ是這個(gè)分布唯一的參數(shù),λ是該分布的均值,也是該分布的方差,即均值等于方差,λ越大Poisson分布越逼近正態(tài)分布。

泊松回歸的模型:

ln\lambda=\beta_0+\beta_1x_1+\beta_2x_2+....\beta_ix_i

β0表示各個(gè)“自變量取值為0”時(shí)觀測頻數(shù)的自然對數(shù)值;βi則表示其他自變量取值不變時(shí),自變量xi每改變一個(gè)單位,所引起的觀測頻數(shù)λ的自然對數(shù)值的改變量,βi為正表示自變量每增加一個(gè)單位觀測頻數(shù)λ會(huì)增加,βi為負(fù)值表示自變量每增加一個(gè)單位觀測頻數(shù)λ會(huì)減少。

《R語言實(shí)戰(zhàn)》例子
遭受輕微或嚴(yán)重間歇性癲癇的病人的年齡和癲癇發(fā)病數(shù)收集了數(shù)據(jù),包含病人被隨機(jī)分配到藥物組或者安慰劑組前八周和隨機(jī)分配后八周兩種情況。響應(yīng)變量為sumY(隨機(jī)化后八周內(nèi)癲癇發(fā)病數(shù)),預(yù)測變量為治療條件(Trt)、年齡(Age)和前八周內(nèi)的基礎(chǔ)癲癇發(fā)病數(shù)(Base)。之所以包含基礎(chǔ)癲癇發(fā)病數(shù)和年齡,是因?yàn)樗鼈儗憫?yīng)變量有潛在影響。在解釋這些協(xié)變量后,我們感興趣的是藥物治療是否能減少癲癇發(fā)病數(shù)。

數(shù)據(jù)統(tǒng)計(jì)匯總信息查詢:

data(breslow.dat, package="robust") # 調(diào)用數(shù)據(jù)集breslow.dat。
names(breslow.dat) # 查看數(shù)據(jù)集breslow.dat的列名。
##  [1] "ID"    "Y1"    "Y2"    "Y3"    "Y4"    "Base"  "Age"   "Trt"   "Ysum" 
## [10] "sumY"  "Age10" "Base4"
summary(breslow.dat[c(6, 7, 8, 10)]) # 6,7,8,10列描述性統(tǒng)計(jì)。
##       Base             Age               Trt          sumY       
##  Min.   :  6.00   Min.   :18.00   placebo  :28   Min.   :  0.00  
##  1st Qu.: 12.00   1st Qu.:23.00   progabide:31   1st Qu.: 11.50  
##  Median : 22.00   Median :28.00                  Median : 16.00  
##  Mean   : 31.22   Mean   :28.34                  Mean   : 33.05  
##  3rd Qu.: 41.00   3rd Qu.:32.00                  3rd Qu.: 36.00  
##  Max.   :151.00   Max.   :42.00                  Max.   :302.00

響應(yīng)變量圖形考察。

opar <- par(no.readonly=TRUE) # 更改當(dāng)前變量環(huán)境。
par(mfrow=c(1, 2)) # 圖形參數(shù)設(shè)定。
attach(breslow.dat) # 數(shù)據(jù)集加入搜索引擎。
hist(sumY, breaks=20, xlab="Seizure Count", 
     main="Distribution of Seizures") # 直方圖繪制變量sumY。
boxplot(sumY ~ Trt, xlab="Treatment", main="Group Comparisons") # 箱線圖考察變量sumY。
par(opar) # 還原默認(rèn)變量環(huán)境。
image.png

泊松回歸模型擬合

fit24 <- glm(sumY ~ Base + Age + Trt, data=breslow.dat, family=poisson()) # 泊松回歸模型擬合。
summary(fit24) # 返回?cái)M合結(jié)果。
## 
## Call:
## glm(formula = sumY ~ Base + Age + Trt, family = poisson(), data = breslow.dat)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -6.0569  -2.0433  -0.9397   0.7929  11.0061  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   1.9488259  0.1356191  14.370  < 2e-16 ***
## Base          0.0226517  0.0005093  44.476  < 2e-16 ***
## Age           0.0227401  0.0040240   5.651 1.59e-08 ***
## Trtprogabide -0.1527009  0.0478051  -3.194   0.0014 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 2122.73  on 58  degrees of freedom
## Residual deviance:  559.44  on 55  degrees of freedom
## AIC: 850.71
## 
## Number of Fisher Scoring iterations: 5

13.3.1 解釋模型參數(shù)

coef(fit24) # 獲取模型系數(shù)。
##  (Intercept)         Base          Age Trtprogabide 
##   1.94882593   0.02265174   0.02274013  -0.15270095

在泊松回歸中,因變量以條件均值的對數(shù)形式ln(λ)來建模。年齡的回歸參數(shù)為0.0227,表明保持其他預(yù)測變量不變,年齡增加一歲,癲癇發(fā)病數(shù)的對數(shù)均值將相應(yīng)增加0.03。截距項(xiàng)即當(dāng)預(yù)測變量都為0時(shí),癲癇發(fā)病數(shù)的對數(shù)均值。由于不可能為0歲,且調(diào)查對象的基礎(chǔ)癲癇發(fā)病數(shù)均不為0,因此本例中截距項(xiàng)沒有意義。

exp(coef(fit24)) # 指數(shù)化回歸系數(shù)。
##  (Intercept)         Base          Age Trtprogabide 
##    7.0204403    1.0229102    1.0230007    0.8583864

現(xiàn)在可以看到,保持其他變量不變,年齡增加一歲,期望的癲癇發(fā)病數(shù)將乘以1.023。這意味著年齡的增加與較高的癲癇發(fā)病數(shù)相關(guān)聯(lián)。更為重要的是,一單位Trt的變化(即從安慰劑到治療組),期望的癲癇發(fā)病數(shù)將乘以0.86,也就是說,保持基礎(chǔ)癲癇發(fā)病數(shù)和年齡不變,服藥組相對于安慰劑組癲癇發(fā)病數(shù)降低了20%。
另外需要牢記的是,與Logistic回歸中的指數(shù)化參數(shù)相似,泊松模型中的指數(shù)化參數(shù)對響應(yīng)變量的影響都是成倍增加的,而不是線性相加。

13.3.2 過度離勢

泊松分布的方差和均值相等。當(dāng)響應(yīng)變量觀測的方差比依據(jù)泊松分布預(yù)測的方差大時(shí),泊松回歸可能發(fā)生過度離勢。
可能發(fā)生過度離勢的原因有如下幾個(gè)(Coxe et al.,2009)。
?遺漏了某個(gè)重要的預(yù)測變量。
?可能因?yàn)槭录嚓P(guān)。在泊松分布的觀測中,計(jì)數(shù)中每次事件都被認(rèn)為是獨(dú)立發(fā)生的。以癲癇數(shù)據(jù)為例,這意味著對于任何病人,每次癲癇發(fā)病的概率與其他癲癇發(fā)病的概率相互獨(dú)立。但是這個(gè)假設(shè)通常都無法滿足。對于某個(gè)的病人,在已知他已經(jīng)發(fā)生了39次癲癇時(shí),第一次發(fā)生癲癇的概率不可能與第40次發(fā)生癲癇的概率相同。
?在縱向數(shù)據(jù)分析中,重復(fù)測量的數(shù)據(jù)由于內(nèi)在群聚特性可導(dǎo)致過度離勢。此處并不討論縱向泊松模型。
與Logistic回歸類似,此處如果殘差偏差與殘差自由度的比例遠(yuǎn)遠(yuǎn)大于1,那么表明存在過度離勢。

殘差偏差與殘差自由度的比例核算

deviance(fit24)/df.residual(fit24) # 殘差偏差與殘差自由度的比例。
## [1] 10.1717

泊松模型過度離勢的檢驗(yàn)

library(qcc) # 調(diào)用qcc包。
qcc.overdispersion.test(breslow.dat$sumY, type="poisson") # 泊松模型過度離勢的檢驗(yàn)。
##                    
## Overdispersion test Obs.Var/Theor.Var Statistic p-value
##        poisson data          62.87013  3646.468       0

通過用family = "quasipoisson"替換family = "poisson",你仍然可以使用glm()
函數(shù)對該數(shù)據(jù)進(jìn)行擬合。

泊松回歸模型構(gòu)建

fit.od1 <- glm(sumY ~ Base + Age + Trt, data=breslow.dat,
              family=quasipoisson()) # 泊松回歸模型。
summary(fit.od1) # 返回模型結(jié)果。
## 
## Call:
## glm(formula = sumY ~ Base + Age + Trt, family = quasipoisson(), 
##     data = breslow.dat)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -6.0569  -2.0433  -0.9397   0.7929  11.0061  
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.948826   0.465091   4.190 0.000102 ***
## Base          0.022652   0.001747  12.969  < 2e-16 ***
## Age           0.022740   0.013800   1.648 0.105085    
## Trtprogabide -0.152701   0.163943  -0.931 0.355702    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasipoisson family taken to be 11.76075)
## 
##     Null deviance: 2122.73  on 58  degrees of freedom
## Residual deviance:  559.44  on 55  degrees of freedom
## AIC: NA
## 
## Number of Fisher Scoring iterations: 5

13.3.3 擴(kuò)展

13.4 小結(jié)

參考資料:

  1. 《R語言實(shí)戰(zhàn)》(中文版),人民郵電出版社,2013.
  2. 廣義線性模型-百度,https://baike.baidu.com/item/%E5%B9%BF%E4%B9%89%E7%BA%BF%E6%80%A7%E6%A8%A1%E5%9E%8B
  3. 廣義線性模型一(Generalized Linear Models,GLM),http://www.itdecent.cn/p/97368848f727
  4. 泊松回歸-百度,https://baike.baidu.com/item/%E6%B3%8A%E6%9D%BE%E5%9B%9E%E5%BD%92
  5. 泊松分布,https://zhuanlan.zhihu.com/p/279330443
  6. 優(yōu)勢比,百度,https://baike.baidu.com/item/%E4%BC%98%E5%8A%BF%E6%AF%94
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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