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


R stepAIC 在逐步算法中通过 AIC 选择模型


R语言 stepAIC 位于 MASS 包(package)。

说明

通过 AIC 执行逐步模型选择。

用法

stepAIC(object, scope, scale = 0,
        direction = c("both", "backward", "forward"),
        trace = 1, keep = NULL, steps = 1000, use.start = FALSE,
        k = 2, ...)

参数

object

代表适当类的模型的对象。这用作逐步搜索中的初始模型。

scope

定义逐步搜索中检查的模型范围。这应该是单个公式,或者是包含组件 upperlower (这两个公式)的列表。请参阅有关如何指定公式及其使用方法的详细信息。

scale

用于定义模型选择的 AIC 统计量,目前仅适用于 lmaov 模型(详细信息请参阅 extractAIC)。

direction

逐步搜索的模式,可以是 "both""backward""forward" 之一,默认为 "both" 。如果缺少 scope 参数,则 direction 的默认值为 "backward"

trace

如果为正,则在 stepAIC 运行期间打印信息。较大的值可以提供有关拟合过程的更多信息。

keep

一个过滤函数,其输入是拟合模型对象和关联的 AIC 统计量,其输出是任意的。通常keep 将选择对象组件的子集并返回它们。默认情况下不保留任何内容。

steps

要考虑的最大步骤数。默认值为 1000(本质上是需要的数量)。它通常用于提前停止该过程。

use.start

如果为 true,则从当前所选模型的线性预测器开始完成更新的拟合。这可能会加快迭代计算速度glm(和其他不适),但它也会减慢它们的速度。未使用R.

k

用于惩罚的自由度数的倍数。只有k = 2 提供真正的AIC:k = log(n) 有时称为BIC 或SBC。

...

extractAIC 的任何其他参数。 (目前尚未使用。)

细节

搜索的模型集由 scope 参数确定。其lower 组件的右侧始终包含在模型中,模型的右侧包含在upper 组件中。如果scope 是单个公式,则它指定upper 组件,并且lower 模型为空。如果scope 缺失,则初始模型将用作upper 模型。

scope 指定的模型可以作为更新 object 的模板,如 update.formula 使用的那样。

使用 glm 与变量 scale 配合存在潜在问题,因为在这种情况下,偏差不仅仅与最大化对数似然相关。 extractAICglm 方法对 gaussian 系列进行了适当的调整,但可能需要针对其他情况进行修改。 (binomialpoisson 系列默认修复了 scale,并且不对应于变量 scale 的特定 maximum-likelihood 问题。)

如果存在常规偏差(例如,lmaovglm 适合),则会在方差分析表中引用:它是未缩放偏差。

返回逐步选择的模型,最多带有两个附加组件。有一个 "anova" 组件对应于搜索中采取的步骤,如果在调用中提供了 keep= 参数,则还有一个 "keep" 组件。偏差表分析的 "Resid. Dev" 列是指一个常数减去两倍最大对数似然:仅在明确定义饱和模型的情况下才会出现偏差(因此不包括 lmaovsurvreg )。

注意

模型拟合必须将模型应用到同一数据集。如果存在缺失值和na.action以外na.fail使用(就像默认的R)。我们建议您先删除缺失值。

例子

quine.hi <- aov(log(Days + 2.5) ~ .^4, quine)
quine.nxt <- update(quine.hi, . ~ . - Eth:Sex:Age:Lrn)
quine.stp <- stepAIC(quine.nxt,
    scope = list(upper = ~Eth*Sex*Age*Lrn, lower = ~1),
    trace = FALSE)
quine.stp$anova

cpus1 <- cpus
for(v in names(cpus)[2:7])
  cpus1[[v]] <- cut(cpus[[v]], unique(quantile(cpus[[v]])),
                    include.lowest = TRUE)
cpus0 <- cpus1[, 2:8]  # excludes names, authors' predictions
cpus.samp <- sample(1:209, 100)
cpus.lm <- lm(log10(perf) ~ ., data = cpus1[cpus.samp,2:8])
cpus.lm2 <- stepAIC(cpus.lm, trace = FALSE)
cpus.lm2$anova

example(birthwt)
birthwt.glm <- glm(low ~ ., family = binomial, data = bwt)
birthwt.step <- stepAIC(birthwt.glm, trace = FALSE)
birthwt.step$anova
birthwt.step2 <- stepAIC(birthwt.glm, ~ .^2 + I(scale(age)^2)
    + I(scale(lwt)^2), trace = FALSE)
birthwt.step2$anova

quine.nb <- glm.nb(Days ~ .^4, data = quine)
quine.nb2 <- stepAIC(quine.nb)
quine.nb2$anova

参考

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

也可以看看

addterm , dropterm , step

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Choose a model by AIC in a Stepwise Algorithm。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。