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