
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() でのロジスティクス回帰のほうが実用的かもしれないです。
今回は以上です。
次回は、
です。
初めから読むには、
です。