glm
位於 stats
包(package)。 說明
glm
用於擬合廣義線性模型,通過給出線性預測變量的符號說明和誤差分布的說明來指定。
用法
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, ...)
glm.fit(x, y, weights = rep.int(1, nobs),
start = NULL, etastart = NULL, mustart = NULL,
offset = rep.int(0, nobs), family = gaussian(),
control = list(), intercept = TRUE, singular.ok = TRUE)
## S3 method for class 'glm'
weights(object, type = c("prior", "working"), ...)
參數
formula |
|
family |
模型中使用的誤差分布和鏈接函數的說明。對於 |
data |
包含模型中變量的可選 DataFrame 、列表或環境(或由 |
weights |
擬合過程中使用的“先驗權重”的可選向量。應該是 |
subset |
一個可選向量,指定要在擬合過程中使用的觀測子集。 |
na.action |
一個函數,指示當數據包含 |
start |
線性預測器中參數的起始值。 |
etastart |
線性預測器的起始值。 |
mustart |
均值向量的起始值。 |
offset |
這可用於指定在擬合期間要包含在線性預測器中的先驗已知分量。這應該是 |
control |
用於控製擬合過程的參數列表。對於 |
model |
一個邏輯值,指示模型框架是否應作為返回值的組成部分包含在內。 |
method |
擬合模型所使用的方法。默認方法 用戶提供的擬合函數可以作為函數或命名函數的字符串提供,其中函數采用與 |
x, y |
對於 對於 |
singular.ok |
邏輯性;如果 |
contrasts |
可選列表。請參閱 |
intercept |
合乎邏輯的。空模型中是否應該包含截距? |
object |
從類 |
type |
字符,允許部分匹配。從擬合模型對象中提取的權重類型。可以縮寫。 |
... |
對於 對於 |
細節
典型的預測變量具有 response ~ terms
形式,其中 response
是(數字)響應向量,terms
是一係列指定 response
線性預測變量的項。對於 binomial
和 quasibinomial
係列,響應也可以指定為 factor
(當第一級表示失敗且所有其他級別表示成功時)或指定為兩列矩陣,其中列給出成功和失敗的數量。 first + second
形式的術語規範指示 first
中的所有術語以及 second
中刪除所有重複項的所有術語。
first:second
形式的規範表示通過 first
中的所有項與 second
中的所有項交互而獲得的項集。規範first*second
表示first
和second
的交叉。這與 first + second +
first:second
相同。
公式中的項將重新排序,以便主效應排在第一位,然後是交互作用、所有二階、所有三階等等:為了避免這種情況,請傳遞 terms
對象作為公式。
非NULL
weights
可用於表示不同的觀測值具有不同的離散度(weights
中的值與離散度成反比);或者等效地,當 weights
的元素是正整數 時,每個響應 是 unit-weight 觀測值的平均值。對於二項式 GLM,當響應是成功比例時,先驗權重用於給出試驗次數:它們很少用於泊鬆 GLM。
glm.fit
是主力函數:通常不直接調用它,但在已經計算出響應向量、設計矩陣和族的情況下可以更有效。
如果指定了多個 etastart
、 start
和 mustart
,則將使用列表中的第一個。通常建議為 quasi
係列以及具有異常鏈接(例如 gaussian("log")
)的係列提供起始值。
所有 weights
、 subset
、 offset
、 etastart
和 mustart
的計算方式與 formula
中的變量相同,即首先在 data
中,然後在 formula
環境中。
有關二項式 GLM 的“出現數字 0 或 1 的擬合概率”的警告消息的背景,請參閱 Venables 和 Ripley(2002 年,第 197-8 頁)。
值
glm
返回繼承自 "glm"
的類的對象,而 "glm"
又繼承自類 "lm"
。請參閱本節後麵的內容。如果使用非標準method
,該對象也將從該函數返回的類(如果有)繼承。
函數summary
(即summary.glm
)可用於獲取或打印結果摘要,函數anova
(即anova.glm
)可用於生成方差分析表。
通用訪問器函數 coefficients
、 effects
、 fitted.values
和 residuals
可用於提取 glm
返回值的各種有用特征。
weights
提取一個權重向量,一個權重向量對應擬合中的每種情況(在子集化和 na.action
之後)。
"glm"
類的對象是至少包含以下組件的列表:
coefficients |
命名的係數向量 |
residuals |
工作殘差,即 IWLS 擬合的最終迭代中的殘差。由於忽略了權重為零的情況,因此它們的工作殘差為 |
fitted.values |
擬合平均值,通過鏈接函數的反函數變換線性預測變量獲得。 |
rank |
擬合線性模型的數值等級。 |
family |
使用的 |
linear.predictors |
鏈接尺度上的線性擬合。 |
deviance |
最大為一個常數,減去最大對數似然的兩倍。在合理的情況下,選擇常數以使飽和模型的偏差為零。 |
aic |
Akaike 的信息準則的一個版本,減去兩倍的最大對數似然加上兩倍的參數數量,通過係列的 |
null.deviance |
空模型的偏差,與 |
iter |
使用的 IWLS 迭代次數。 |
weights |
工作權重,即 IWLS 擬合的最終迭代中的權重。 |
prior.weights |
最初提供的權重,如果沒有,則為 |
df.residual |
剩餘自由度。 |
df.null |
零模型的剩餘自由度。 |
y |
如果請求(默認),則使用 |
x |
如果需要,模型矩陣。 |
model |
如果需要(默認),模型框架。 |
converged |
合乎邏輯的。 IWLS算法是否被判斷為收斂了? |
boundary |
合乎邏輯的。擬合值是否在可達到值的邊界上? |
call |
匹配的調用。 |
formula |
提供的公式。 |
terms |
使用的 |
data |
|
offset |
使用的偏移向量。 |
control |
使用的 |
method |
使用的擬合函數的名稱(當作為 |
contrasts |
(如果相關)使用的對比。 |
xlevels |
(如果相關)擬合中使用的因子水平的記錄。 |
na.action |
(如果相關) |
此外,非空擬合將具有與最終加權線性擬合相關的組件 qr
、 R
和 effects
。
類 "glm"
的對象通常屬於類 c("glm",
"lm")
,即從類 "lm"
繼承,並且類 "lm"
的 well-designed 方法將在 IWLS 的最終迭代中應用於加權線性模型。但是,需要小心,因為類 "glm"
的提取器函數(例如 residuals
和 weights
)不僅僅會挑選出具有相同名稱的擬合組件。
如果通過給出兩列響應來指定 binomial
glm
模型,則 prior.weights
返回的權重是案例總數(由提供的案例權重分解),結果的分量 y
為成功的比例。
擬合函數
參數 method
有兩個目的。一種是允許在不擬合的情況下重新創建模型框架。另一種是允許默認擬合函數 glm.fit
替換為采用相同參數並使用不同擬合算法的函數。如果 glm.fit
作為字符串提供,它將用於從 stats
命名空間開始搜索該名稱的函數。
擬合器返回的對象的類(如果有)將添加到 glm
返回的類之前。
例子
## Dobson (1990) Page 93: Randomized Controlled Trial :
counts <- c(18,17,15,20,10,20,25,13,12)
outcome <- gl(3,1,9)
treatment <- gl(3,3)
data.frame(treatment, outcome, counts) # showing data
glm.D93 <- glm(counts ~ outcome + treatment, family = poisson())
anova(glm.D93)
summary(glm.D93)
## Computing AIC [in many ways]:
(A0 <- AIC(glm.D93))
(ll <- logLik(glm.D93))
A1 <- -2*c(ll) + 2*attr(ll, "df")
A2 <- glm.D93$family$aic(counts, mu=fitted(glm.D93), wt=1) +
2 * length(coef(glm.D93))
stopifnot(exprs = {
all.equal(A0, A1)
all.equal(A1, A2)
all.equal(A1, glm.D93$aic)
})
## an example with offsets from Venables & Ripley (2002, p.189)
utils::data(anorexia, package = "MASS")
anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
family = gaussian, data = anorexia)
summary(anorex.1)
# A Gamma example, from McCullagh & Nelder (1989, pp. 300-2)
clotting <- data.frame(
u = c(5,10,15,20,30,40,60,80,100),
lot1 = c(118,58,42,35,27,25,21,19,18),
lot2 = c(69,35,26,21,18,16,13,12,12))
summary(glm(lot1 ~ log(u), data = clotting, family = Gamma))
summary(glm(lot2 ~ log(u), data = clotting, family = Gamma))
## Aliased ("S"ingular) -> 1 NA coefficient
(fS <- glm(lot2 ~ log(u) + log(u^2), data = clotting, family = Gamma))
tools::assertError(update(fS, singular.ok=FALSE), verbose=interactive())
## -> .. "singular fit encountered"
## Not run:
## for an example of the use of a terms object as a formula
demo(glm.vr)
## End(Not run)
作者
The original R implementation of glm
was written by Simon
Davies working for Ross Ihaka at the University of Auckland, but has
since been extensively re-written by members of the R Core team.
The design was inspired by the S function of the same name described in Hastie & Pregibon (1992).
參考
Dobson, A. J. (1990) An Introduction to Generalized Linear Models. London: Chapman and Hall.
Hastie, T. J. and Pregibon, D. (1992) Generalized linear models. Chapter 6 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.
McCullagh P. and Nelder, J. A. (1989) Generalized Linear Models. London: Chapman and Hall.
Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. New York: Springer.
也可以看看
anova.glm
、 summary.glm
等用於 glm
方法,以及泛型函數 anova
、 summary
、 effects
、 fitted.values
和 residuals
。
lm
用於非廣義線性模型(SAS 將其稱為 GLM,用於 ‘general’ 線性模型)。
loglin
和 loglm
(包 MASS
)用於將對數線性模型(二項式和泊鬆 GLM 屬於)擬合到列聯表。
biglm
包中的 bigglm
是一種將 GLM 擬合到大型數據集(尤其是具有許多情況的數據集)的替代方法。
esoph
、 infert
和 predict.glm
有擬合二項式 glms 的示例。
相關用法
- R glm.summaries 訪問廣義線性模型擬合
- R glm.control 控製 GLM 擬合的輔助裝置
- R getInitial 獲取初始參數估計
- R stlmethods STL 對象的方法
- R medpolish 矩陣的中值波蘭(穩健雙向分解)
- R naprint 調整缺失值
- R summary.nls 總結非線性最小二乘模型擬合
- R summary.manova 多元方差分析的匯總方法
- R formula 模型公式
- R nls.control 控製 nls 中的迭代
- R aggregate 計算數據子集的匯總統計
- R deriv 簡單表達式的符號和算法導數
- R kruskal.test Kruskal-Wallis 秩和檢驗
- R quade.test 四方測試
- R decompose 移動平均線的經典季節性分解
- R plot.stepfun 繪製階躍函數
- R alias 查找模型中的別名(依賴項)
- R qqnorm 分位數-分位數圖
- R eff.aovlist 多層方差分析的計算效率
- R pairwise.t.test 成對 t 檢驗
- R loglin 擬合對數線性模型
- R predict.smooth.spline 通過平滑樣條擬合進行預測
- R bartlett.test 方差齊性的 Bartlett 檢驗
- R influence.measures 回歸刪除診斷
- R loess.control 設置黃土參數
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Fitting Generalized Linear Models。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。