R の glm で予測関数を使用する方法 (例あり)
R のglm()関数を使用して、一般化線形モデルを近似することができます。この機能は、 ロジスティック回帰モデル、ポアソン回帰モデル、およびその他の複雑なモデルをフィッティングする場合に特に役立ちます。
モデルを適合させたら、 predict()関数を使用して新しい観測値の応答値を予測できます。
この関数は次の構文を使用します。
予測(オブジェクト、新しいデータ、タイプ = “応答”)
金:
- オブジェクト: glm() 関数を使用したモデル調整の名前
- newdata:予測を行う新しいデータ フレームの名前
- type:行う予測のタイプ。
次の例は、R で一般化線形モデルを近似する方法と、そのモデルを使用してこれまでに見たことのない新しい観測の応答値を予測する方法を示しています。
例: R で glm を使用した予測関数の使用
この例では、 mtcarsという組み込みの R データセットを使用します。
#view first six rows of mtcars data frame
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
次のロジスティック回帰モデルを当てはめます。このモデルでは、変数dispとhpを使用して応答変数am (車のトランスミッション タイプ: 0 = オートマチック、1 = マニュアル) を予測します。
#fit logistic regression model model <- glm(am ~ disp + hp, data=mtcars, family=binomial) #view model summary summary(model) Call: glm(formula = am ~ disp + hp, family = binomial, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -1.9665 -0.3090 -0.0017 0.3934 1.3682 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.40342 1.36757 1.026 0.3048 available -0.09518 0.04800 -1.983 0.0474 * hp 0.12170 0.06777 1.796 0.0725 . --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 43,230 on 31 degrees of freedom Residual deviance: 16,713 on 29 degrees of freedom AIC: 22,713 Number of Fisher Scoring iterations: 8
次に、このモデルを使用して、次のコードを使用して、新車がオートマチック トランスミッション (am=0) またはマニュアル トランスミッション (am=1) を搭載する確率を予測できます。
#define new observation
newdata = data. frame (disp=200, hp=100)
#use model to predict value of am
predict(model, newdata, type=" response ")
1
0.00422564
このモデルは、新車がマニュアル トランスミッション (am=1) を搭載している確率は0.004であると予測します。これは、この新車にはオートマチックトランスミッションが搭載される可能性が非常に高いことを意味します。
複数の新車を含むデータベースがある場合は、一度に複数の予測を行うこともできることに注意してください。
たとえば、次のコードは、適合モデルを使用して 3 台の新車のマニュアル トランスミッションの確率を予測する方法を示しています。
#define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
hp=c(100, 90, 108))
#view data frame
newdata
hp disp
1,200 100
2 180 90
3,160,108
#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")
1 2 3
0.004225640 0.008361069 0.335916069
結果を解釈する方法は次のとおりです。
- 車 1 がマニュアル トランスミッションを備えている確率は0.004です。
- 車 2 がマニュアル トランスミッションを備えている確率は0.008です。
- 車 3 がマニュアル トランスミッションを備えている確率は0.336です。
コメント
新しいデータ フレームの列名は、モデルの作成に使用されたデータ フレームの列名と正確に一致する必要があります。
前の例では、モデルの作成に使用したデータ フレームに、予測変数の次の列名が含まれていたことに注意してください。
- 画面
- HP
そのため、newdata という新しいデータ フレームを作成するときは、列にも名前を付けるようにしました。
- 画面
- HP
列名が一致しない場合は、次のエラー メッセージが表示されます。
eval (predvars、data、env) のエラー
detect()関数を使用するときは、このことに留意してください。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。