日本語訳

R - ロジスティック回帰

回帰モデルの作成

Rでのロジスティック回帰の世界にようこそ!このチュートリアルでは、Rを使用してロジスティック回帰モデルを作成する基本的な手順を説明します。まずは基本的な概念から始め、その後コードに進みます。これはプログラミングの経験がない初心者向けに設計されていますので、最初は少し戸惑うかもしれませんが、心配しないでください。では、始めましょう!

R - Logistic Regression

ロジスティック回帰とは?

ロジスティック回帰は、データを分析し、一つまたは複数の予測変数に基づいて予測を行う統計的手法です。これはしばしば二値分類問題で使用され、結果が「はい」(1)または「いいえ」(0)のいずれかになります。ロジスティック回帰と線形回帰の主な違いは、ロジスティック回帰が結果が発生する確率を予測する一方、線形回帰が連続値を予測することです。

ロジスティック回帰を使用する理由

ロジスティック回帰は、医療、金融、マーケティング、社会科学など多くの分野で広く使用されています。特に二値結果と一つまたは複数の予測変数との関係を理解したい場合に特に有用です。例えば、顧客が製品を購入するかどうかを予測するために、その年齢、収入、過去の購入履歴を使用してロジスティック回帰を使用することができます。

Rでのロジスティック回帰モデルの作成

Rでロジスティック回帰モデルを作成するためには、glm()関数を使用します。これは一般化線形モデル(Generalized Linear Models)を意味します。以下の手順に従ってください:

ステップ1: 必要なライブラリのインストールと読み込み

まず、必要なライブラリをインストールし読み込みます。データ操作と可視化にはtidyverseライブラリ、モデル化にはcaretライブラリを使用します。

install.packages("tidyverse")
install.packages("caret")

library(tidyverse)
library(caret)

ステップ2: データの読み込み

次にデータを読み込みます。この例では、内蔵のmtcarsデータセットを使用します。これはさまざまな車のモデルに関する情報を含んでいます。ここでは、車がスポーツカーかどうかを予測するために重量と馬力を使用します。

data(mtcars)
head(mtcars)

ステップ3: データの前処理

ロジスティック回帰モデルを構築する前に、データを前処理する必要があります。これはカテゴリ変数のエンコード、欠損値の処理、特徴のスケーリングを含みます。私たちのケースでは、数値変数しかないので、エンコードやスケーリングは必要ありません。しかし、新しい二値変数is_sports_carを作成し、車がスポーツカーかどうかを示します。

mtcars <- mtcars %>%
mutate(is_sports_car = ifelse(hp > 150, 1, 0))

ステップ4: データをトレーニングセットとテストセットに分割

モデルの性能を評価するために、データをトレーニングセットとテストセットに分割することが重要です。caretパッケージのcreateDataPartition()関数を使用してパートションを作成します。

set.seed(123)
trainIndex <- createDataPartition(mtcars$is_sports_car, p = 0.8, list = FALSE)
trainSet <- mtcars[trainIndex, ]
testSet <- mtcars[-trainIndex, ]

ステップ5: ロジスティック回帰モデルの構築

今、私たちはロジスティック回帰モデルを構築する準備ができています。glm()関数を使用し、family引数をbinomialに設定してロジスティック回帰を行います。

model <- glm(is_sports_car ~ wt + hp, data = trainSet, family = binomial)
summary(model)

summary()関数は、モデルの概要を提供し、係数、標準誤、z値、p値を含みます。これらの統計量は、各予測変数の重要性と統計的有意性を理解するのに役立ちます。

ステップ6: 予測を行いモデルを評価

モデルが完成したら、テストセットで予測を行い、その性能を評価します。predict()関数を使用して予測確率を生成し、0.5の閾値を使用して二値結果に変換します。

predictions <- predict(model, newdata = testSet, type = "response")
predicted_classes <- ifelse(predictions > 0.5, 1, 0)

次に、予測クラスとテストセットの実際のクラスを比較してモデルの精度を計算します。

accuracy <- mean(predicted_classes == testSet$is_sports_car) * 100
cat("Accuracy:", accuracy, "%")

これで、glm()関数を使用してRでロジスティック回帰モデルを作成することができました!これは基本的な例であり、特徴選択、正則化、モデルチューニングなど、ロジスティック回帰モデルの構築と評価に考慮すべき多くの要素があります。しかし、これはRでのロジスティック回帰の旅の良い出発点となるでしょう。

Credits: Image by storyset