R で aic を計算する方法 (例を含む)
赤池情報量基準 (AIC) は、重回帰モデルの適合度を比較するために使用される指標です。
次のように計算されます。
AIC = 2K – 2 ln (長さ)
金:
- K:モデルパラメータの数。 K のデフォルト値は 2 であるため、予測変数が 1 つだけあるモデルの K 値は 2+1 = 3 になります。
- ln (L) : モデルの対数尤度。ほとんどの統計ソフトウェアは、この値を自動的に計算できます。
AIC は、過剰な数のパラメーターを使用するモデルにペナルティを課しながら、データの変動を最も多く説明するモデルを見つけるように設計されています。
複数の回帰モデルを適合させたら、各モデルの AIC 値を比較できます。 AIC が低いほど、モデルはより適切になります。
R で重回帰モデルの AIC を計算するには、 AICcmodavgパッケージのaictab()関数を使用できます。
次の例は、この関数を使用して、R のさまざまな回帰モデルの AIC を計算および解釈する方法を示しています。
例: R で AIC を計算および解釈する
mtcarsデータセットの変数を使用して 3 つの異なる重線形回帰モデルを近似したいとします。
各モデルで使用する予測変数は次のとおりです。
- モデル 1 の予測変数: disp、hp、wt、qsec
- モデル 2 の予測子変数: disp、qsec
- モデル 3 の予測子変数: disp、wt
次のコードは、これらの各回帰モデルを当てはめる方法を示しています。
#fit three models
model1 <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars)
model2 <- lm(mpg ~ disp + qsec, data = mtcars)
model3 <- lm(mpg ~ disp + wt, data = mtcars)
次に、モデルをリストに入れ、 aictab()関数を使用して各モデルの AIC を計算します。
library (AICcmodavg) #define list of models models <- list(model1, model2, model3) #specify model names mod.names <- c('disp.hp.wt.qsec', 'disp.qsec', 'disp.wt') #calculate AIC of each model aictab(cand.set = models, modnames = mod.names) Model selection based on AICc: K AICc Delta_AICc AICcWt Cum.Wt LL disp.hp.wt.qsec 6 162.43 0.00 0.83 0.83 -73.53 available wt 4 165.65 3.22 0.17 1.00 -78.08 disp.qsec 4 173.32 10.89 0.00 1.00 -81.92
結果を解釈する方法は次のとおりです。
- K:モデル内のパラメータの数。
- AICc:モデルの AIC 値。小文字の「c」は、AIC が小さなサンプルに対して補正された AIC から計算されたことを示します。
- Delta_AICc:最良のモデルの AIC と比較された現在のモデルの AIC の差。
- AICcWt:モデル内で見つかる合計予測力の割合。
- Cum.Wt : AIC 重みの累積合計。
- LL:モデルの対数尤度。これにより、使用したデータを考慮してモデルがどの程度可能性が高いかがわかります。
AIC 値が最も低いモデルが常に最初にリストされます。結果から、次のモデルは AIC 値が最も低いため、最も適合するモデルであることがわかります。
mpg = β 0 + β 1 (disp) + β 2 (hp) + β 3 (重量) + β 4 (qsec)
このモデルが最適であると特定したら、モデルのフィッティングを進め、R 二乗値やベータ係数を含む結果を分析して、一連の予測変数と応答変数の間の正確な関係を決定できます。
追加リソース
R で単純な線形回帰を実行する方法
R で重回帰を実行する方法
R の調整済み R 二乗を計算する方法
R でマローズ Cp を計算する方法