當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R loglm 通過迭代比例縮放擬合對數線性模型


R語言 loglm 位於 MASS 包(package)。

說明

此函數為標準函數 loglin 提供了一個前端,允許以類似於其他擬合函數(例如 glm )的方式指定和擬合對數線性模型。

用法

loglm(formula, data, subset, na.action, ...)

參數

formula

指定對數線性模型的線性模型公式。

如果左側為空,則需要 data 參數,並且必須是(完整)頻率數組。在這種情況下,右側的變量可以是頻率數組的 dimnames 屬性的名稱,也可以是正整數:1, 2, 3, ...用作第一個的替代名稱,第二、第三、...維度(分類因子)。如果左側不為空,則它指定頻率向量。在這種情況下,數據參數(如果存在)必須是一個數據幀,(優先)從該數據幀獲得左側向量和右側分類因子。允許使用 . 的常用縮寫來表示“ DataFrame 中的所有其他變量”。公式右側的任何非因子都將被強製進行因子分解。

data

數字數組或 DataFrame (或列表或環境)。在第一種情況下,它指定頻率數組;在第二個中,它提供了 DataFrame ,從該 DataFrame 中優先以通常的方式獲得公式中出現的變量。

此參數可能是調用 xtabs 的結果。

subset

指定 DataFrame 中要使用的行的子集。默認值是獲取所有行。

na.action

指定處理缺失觀測值的方法。如果存在缺失值,默認情況下會失敗。

...

可以向函數 loglm1 提供其他參數。

細節

如果公式的左側為空,則 data 參數提供頻率數組,而公式的右側用於構造 loglin 所需的固定麵列表。結構零可以通過給出 start 參數並將這些條目設置為零來指定,如 loglin 的幫助信息中所述。

如果左側不為空,則將右側的所有變量視為分類因子,並構建頻率數組。如果未指定完整數組中的某些單元格,它們將被視為結構零。公式的右側再次用於構造觀察和擬合總數必須一致的麵列表,如 loglin 的要求。因此,a:ba*ba/b 等術語都是等效的。

"loglm" 類的對象,傳遞擬合對數線性模型的結果。通用函數 printsummarydeviancefittedcoefresidanovaupdate 存在方法,它們執行預期的任務。僅允許使用 anova 進行對數似然比測試。

偏差隻是對數似然比統計量的替代名稱,用於根據廣義線性模型中的標準用法測試飽和模型中的當前模型。

警告

如果存在結構零點,自由度的計算可能不正確。 loglin 本身不采取任何措施來允許結構零。 loglm 為每個結構零扣除一個自由度,但無法考慮到由於模型空間維度損失而導致的誤差自由度增益。 (這需要檢查模型矩陣的秩,但由於迭代比例縮放方法主要是為了避免顯式構造模型矩陣而開發的,因此計算至少很困難。)

當存在結構零點(或零擬合值)時,由於無限估計,估計係數將不可用。不過,偏差通常仍然是正確的。

例子

# The data frames  Cars93, minn38 and quine are available
# in the MASS package.

# Case 1: frequencies specified as an array.
sapply(minn38, function(x) length(levels(x)))
## hs phs fol sex f
##  3   4   7   2 0
##minn38a <- array(0, c(3,4,7,2), lapply(minn38[, -5], levels))
##minn38a[data.matrix(minn38[,-5])] <- minn38$f

## or more simply
minn38a <- xtabs(f ~ ., minn38)

fm <- loglm(~ 1 + 2 + 3 + 4, minn38a)  # numerals as names.
deviance(fm)
## [1] 3711.9
fm1 <- update(fm, .~.^2)
fm2 <- update(fm, .~.^3, print = TRUE)
## 5 iterations: deviation 0.075
anova(fm, fm1, fm2)

# Case 1. An array generated with xtabs.

loglm(~ Type + Origin, xtabs(~ Type + Origin, Cars93))

# Case 2.  Frequencies given as a vector in a data frame
names(quine)
## [1] "Eth"  "Sex"  "Age"  "Lrn"  "Days"
fm <- loglm(Days ~ .^2, quine)
gm <- glm(Days ~ .^2, poisson, quine)  # check glm.
c(deviance(fm), deviance(gm))          # deviances agree
## [1] 1368.7 1368.7
c(fm$df, gm$df)                        # resid df do not!
c(fm$df, gm$df.residual)               # resid df do not!
## [1] 127 128
# The loglm residual degrees of freedom is wrong because of
# a non-detectable redundancy in the model matrix.

參考

Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition. Springer.

也可以看看

loglm1 , loglin

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Fit Log-Linear Models by Iterative Proportional Scaling。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。