6.3 線形回帰モデルの構築
ore.lm
関数およびore.stepwise
関数は、最小二乗回帰およびステップワイズ最小二乗回帰をそれぞれore.frame
オブジェクトに表されたデータで実行します。
モデル適合は、埋込みRマップ/リデュース処理を使用して生成されますが、このときマップ処理によって、評価される係数の数に応じてQR分解またはマトリクスのクロス積のいずれかが作成されます。基礎となるモデル・マトリクスは、モデルのスパーシティに応じてmodel.matrix
オブジェクトまたはsparse.model.matrix
オブジェクトのいずれかを使用して作成されます。モデルの係数が推定されると、データの別のパスが実行されて、モデル水準統計が推定されます。
前方、後方またはステップワイズ検索が実行されるとき、XtXおよびXtyマトリクスがサブセット化され、XtXサブセット・マトリクスのコレスキー分解を使用して生成された係数推定に基づくF検定のp値が生成されます。
モデルに共線的な項がある場合、関数ore.lm
およびore.stepwise
は一連の共線的な項に対する係数値を推定しません。ore.stepwise
では、共線的な項セットは、手順全体から除外されます。
ore.lm
およびore.stepwise
の詳細は、help(ore.lm)
を呼び出してください。
例6-2 ore.lmの使用方法
この例では、longley
データセットを一時データベース表にプッシュしますが、これにはプロキシore.frame
オブジェクトのlongley_of
が含まれています。この例では、ore.lm
を使用して線形回帰モデルを構築します。
longley_of <- ore.push(longley) # Fit full model oreFit1 <- ore.lm(Employed ~ ., data = longley_of) class(oreFit1) summary(oreFit1)
この例のリスト
R> longley_of <- ore.push(longley) R> # Fit full model R> oreFit1 <- ore.lm(Employed ~ ., data = longley_of) R> class(oreFit1) [1] "ore.lm" "ore.model" "lm" R> summary(oreFit1) Call: ore.lm(formula = Employed ~ ., data = longley_of) Residuals: Min 1Q Median 3Q Max -0.41011 -0.15767 -0.02816 0.10155 0.45539 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -3.482e+03 8.904e+02 -3.911 0.003560 ** GNP.deflator 1.506e-02 8.492e-02 0.177 0.863141 GNP -3.582e-02 3.349e-02 -1.070 0.312681 Unemployed -2.020e-02 4.884e-03 -4.136 0.002535 ** Armed.Forces -1.033e-02 2.143e-03 -4.822 0.000944 *** Population -5.110e-02 2.261e-01 -0.226 0.826212 Year 1.829e+00 4.555e-01 4.016 0.003037 ** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.3049 on 9 degrees of freedom Multiple R-squared: 0.9955, Adjusted R-squared: 0.9925 F-statistic: 330.3 on 6 and 9 DF, p-value: 4.984e-10
例6-3 ore.stepwise関数の使用方法
この例では、longley
データセットを一時データベース表にプッシュしますが、これにはプロキシore.frame
オブジェクトのlongley_of
が含まれています。この例では、ore.stepwise
関数を使用して線形回帰モデルを構築します。
longley_of <- ore.push(longley) # Two stepwise alternatives oreStep1 <- ore.stepwise(Employed ~ .^2, data = longley_of, add.p = 0.1, drop.p = 0.1) oreStep2 <- step(ore.lm(Employed ~ 1, data = longley_of), scope = terms(Employed ~ .^2, data = longley_of))
この例のリスト
R> longley_of <- ore.push(longley) R> # Two stepwise alternatives R> oreStep1 <- + ore.stepwise(Employed ~ .^2, data = longley_of, add.p = 0.1, drop.p = 0.1) R> oreStep2 <- + step(ore.lm(Employed ~ 1, data = longley_of), + scope = terms(Employed ~ .^2, data = longley_of)) Start: AIC=41.17 Employed ~ 1 Df Sum of Sq RSS AIC + GNP 1 178.973 6.036 -11.597 + Year 1 174.552 10.457 -2.806 + GNP.deflator 1 174.397 10.611 -2.571 + Population 1 170.643 14.366 2.276 + Unemployed 1 46.716 138.293 38.509 + Armed.Forces 1 38.691 146.318 39.411 <none> 185.009 41.165 Step: AIC=-11.6 Employed ~ GNP Df Sum of Sq RSS AIC + Unemployed 1 2.457 3.579 -17.960 + Population 1 2.162 3.874 -16.691 + Year 1 1.125 4.911 -12.898 <none> 6.036 -11.597 + GNP.deflator 1 0.212 5.824 -10.169 + Armed.Forces 1 0.077 5.959 -9.802 - GNP 1 178.973 185.009 41.165 ... The rest of the output is not shown.