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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。