廣義線性模型是線性模型的擴充套件,主要是對非正態因變數的分析擬合模型如下 μy廣義線性擬合的核心是最大似然估計,而不是最小二乘
=β0+
∑pj=
1βjx
j 其中,beta是係數,mu是優勢比的對數,beta係數是對優勢比的影響。通過擬合求得的就是
我們可以通過兩個例子看一下兩種變數
類別型:
自變數x:人口統計資訊、人際關係資訊、個人資訊
因變數y:婚姻狀況
計數型:
自變數x:藥物使用狀況
因變數y:八周以來累計的癲癇次數
glm(formula, family=family(link=function), data=)
今天用到的兩個分布
概率分布
連線函式
binomial
logit
poisson
log
通過一系列的連續型或者類別型的**變數來**二值型結果變數。我們主要使用aer包裡的affairs資料框為例。
data
(affairs, package = "aer")
summary
(affairs)
table
(affairs$affairs)
但是其實我們需要的是二值型的**結果,我們可以做乙個轉換,把affair變為ynaffair
affairs$ynaffair[affairs$affairs > 0] <- 1
affairs$ynaffair[affairs$affairs == 0] <- 0
affairs$ynaffair
<- factor(affairs$ynaffair,
levels = c(0,1),
labels = c("no","yes"))
table(affairs$ynaffair)
然後我們來做**,把ynaffair作為結果變數進行擬合
fit.full <- glm(ynaffair ~ gender + age + yearsmarried + children +
religiousness + education + occupation + rating,
data= affairs, family = binomial())
summary(fit.full)
從回歸係數的p值可以排除幾個不顯著的變數,再重新擬合
fit.reduce <- glm(ynaffair ~ age + yearsmarried + religiousness +
rating, data= affairs, family = binomial())
summary(fit.reduce)
我們可以用anova函式對兩次擬合進行比較,廣義線性回歸應該用卡方檢驗
anova(fit.reduce, fit.full, test="chisq")
兩次擬合的效果顯然相同
先看看**值和殘差的圖形
plot(predict(fit.reduce, type="response"),
residuals(fit.reduce,type= "deviance"))
遺憾的是,下面這個最方便的診斷函式用不了,只能針對lm物件
gvmodel <- gvlma(fit.reduce)
summary(gvmodel)
coef(fit.reduce)
exp(coef(fit.reduce))
其中,intercept是截距
+2.3.2 看看概率的影響(更加直觀)
觀察某個**變數在各個水平對結果概率的影響(需要把其他變數設為均值)
testdata
<- data.frame(rating=c(1, 2, 3 ,4 ,5), age=mean(affairs$age),
yearsmarried=mean(affairs$yearsmarried),
religiousness=mean(affairs$religiousness))
testdata
使用測試資料集進行**,可以看出不太婚姻幸福水平的人婚變的可能
testdata$prob
<- predict(fit.reduce,newdata=testdata, type="response")
testdata
以此類推還可以**年齡的影響概率
關於過度離勢的內容放在最後一起講
過度離勢指的是觀測變數的方差大於所屬分布的方差,主要後果是會造成顯著性檢驗不精確,導致可解釋性降低
通過一系列的連續型或者類別型的**變數來**計數型結果變數。我們主要使用robust包裡的breslow資料框為例。
先看看資料
data(breslow.dat, package = "robust")
names(breslow.dat)
summary(breslow.dat[c(6,7,8,10)])
我們只關注前四個變數。結合前四個變數,我們看一下影象
opar <- par(no.readonly = true)
par(mfrow=c(1,2))
attach(breslow.dat)
hist(sumy, breaks=20, xlab="seizure count",
main="distribution of seizures")
boxplot(sumy ~ trt, xlab= "treatment", main="group comparisons")
par(opar)
可以看出藥物的作用導致發病數和極差都變小了(判斷出是泊松分布)
接下來我們開始擬合
然後我們來做**,把ynaffair作為結果變數進行擬合
fit
<- glm(sumy ~ base + age + trt, data= breslow.dat, family = poisson())
summary(fit)
coef(fit)
exp(coef(fit))
其中,intercept是截距
+3.3.2 也可以看看概率的影響(同上,不寫了,讀者請自己練習)
這裡需要用到qcc包
我們先進行判斷
qcc.overdispersion
.test(breslow.dat$sumy, type="poisson")
因為p值小於0.005,所以顯然存在過度離勢。
這時候,你需要使用另一種family引數來擬合,那就是quasipoisson
fit.od <- glm(sumy ~ base + age + trt, data= breslow.dat, family = quasipoisson())
qcc.overdispersion.test(breslow.dat$sumy, type="quasipoisson")
廣義線性模型
之前提到過,線性回歸模型有三個限制 響應變數服從正態分佈,響應變數和解釋變數之間服從線性關係,方差不變。其實在構建乙個線性模型的時候,除了上述的兩個要求,我們還需要對解釋變數進行具體的分析,主要有幾點,首先是解釋變數之間的相互作用 interaction 對結果的影響,簡單來說就是模型不僅僅受因素a...
1 1 廣義線性模型
下面介紹的是一組用於回歸的方法,這些方法的目標值是輸入變數的線性組合。用 作為 值。貫穿模組,我們指定向量 為coef 係數 為intercept 截距 要使用廣義線性模型實現分類,詳見logistic回歸。線性回歸擬合以係數 最小化可觀測到的資料的響應與線性模型 的響應的殘差和的平方,用數學公式表...
廣義線性模型和線性回歸
首先術語廣義線性模型 glm 通常是指給定連續和 或分類 變數的連續響應變數的常規線性回歸模型。它包括多元線性回歸,以及anova和ancova 僅具有固定效果 形式為 yi n x 2 其中xi包含已知的協變數,包含要估計的係數。這些模型使用最小二乘和加權最小二乘擬合。術語廣義線性模型 glim或...