当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。