Bing Image Creator で生成: Early Spring in rural area, peaceful landscape, photo
の続きです。前回はデータを R に読み込んで、分析のための前処理をしました。
今回は実際に予測をしてみます。
はじめに、データの様子を見るためにグラフに描いてみます。
boxplot() 関数で箱ひげ図を描いてみましょう。
M = 1 のほうが全体的に大きな値のように見えます。
ggcorrplot ライブラリの ggcorrplot() 関数で相関マトリックスを描いてみます。
各変数同士は正の相関のものが多いようです。
M との相関を見ると、0.7 以上の相関の変数もいくつかあります。
それでは、判別をしてみます。
まずは、トレーニング用、テスト用のデータにわけます。
t.test() 関数で、df_train と df_test の M の平均値を比較して、統計的に有意な違いが無いことを確認しておきます。
df_train のほうは、M の割合は 0.378, df_test のほうは、0.351 です。p-value が 0.59 なので、両者の比率に統計的に有意な違いはありません。
はじめに、glm() 関数でロジスティクス回帰分析で判別してみましょう。
正解率は、94.7% でした。
続いて、LASSO 回帰で判別してみます。
glmnet パッケージを読み込みします。
glmnet はデータフレームではなくて、マトリックスで動かしますので、df_train, df_test からマトリックスを作成します。
cv.glmnet() 関数で LASSO 回帰を実行します。
fit_lasso をプロットしてみます。
モデルの係数を coef() 関数でみてみましょう。
LASSO 回帰では、モデルで使わない変数の係数は . になります。
predict() 関数で予測します。
正解率を計算しましょう。
96.5% の正解率でした。
LASSO 回帰のほうが正解率は高いですが、glm() 関数では、M = 1 のものを 1 つしか誤って 0 と判別しなかったのに対して、glmnet での LASSO 回帰では、4 つも 0 と判別しています。
本当は悪性腫瘍(M = 1)なのに、0 と見逃してしまったのが 4 つもあるので、glm() でのロジスティクス回帰のほうが実用的かもしれないです。
今回は以上です。
次回は、
です。
初めから読むには、
です。