Rデータ分析の例:タイタニック号の生存者予測で学ぶデータ分析の基礎

1912年のタイタニック号の事故は、歴史上最も有名な海難事故の一つであり、多くの人の記憶に残っています。 しかし、タイタニック号に乗船していた乗客が誰だったのか、そしてどのような要因が彼らの生死を決定したのか分析できることをご存知ですか?

今回の記事では Rデータ分析の例として、タイタニック号の生存者データを活用して、どのような特徴が生存確率に影響を与えたかを予測する方法。この記事では、データのロードから分析、可視化、そして予測モデリングまで、段階的に学んでいきますので、最後まで集中して見てください!

R 데이터분석 예제-타이타닉 데이터 시각화

タイタニック号の生存者予測の重要性

タイタニック号のデータは、データ分析の学習において非常に重要な例としてよく使われます。このデータセットは、乗客の性別、年齢、搭乗クラス、運賃など様々な情報を含んでおり、これらの特徴が乗客の生存にどのような影響を与えたかを分析するのに適しています。今回のデータ分析の例では、この情報をもとに生存の有無を予測する簡単なロジスティック回帰モデルを構築してみましょう。

このコースでは、データ前処理、探索的データ分析(EDA)、可視化、そして予測モデリングに至るデータ分析の全過程を実習することができます。

データのロードとナビゲーション

まず、タイタニックデータをRで読み込んで探索してみます。 このデータには カグルが提供する代表的な学習用データセットで、乗客の様々な特性が記録されています。

Rでデータを読み込む

# データセットの読み込み
install.packages("titanic")
library(titanic)

#タイタニックデータを読み込みます。
data("titanic_train")
titanic <- titanic_train

#データ探索
str(titanic)
summary(titanic)
head(titanic)

上記のコードで titanic_train データをRで読み込んで、データの構造と基礎統計量を確認することができます。データは 生き残った, Pクラス, 性別, 年齢, 運賃, 乗船 などの変数を含んでいます。

R 데이터분석 예제-타이타닉 데이터 탐색1
[str(titanic)実行結果画面 ]。
R 데이터분석 예제-타이타닉 데이터 탐색2
[summary(titanic)実行結果画面 ]。
R 데이터분석 예제-타이타닉 데이터 탐색3
[head(titanic)実行結果画面 ]。

データ構造の説明

  • 生き残った生存の有無(0 = 死亡、1 = 生存)
  • Pクラス搭乗クラス(1 = 1等、2 = 2等、3 = 3等)。
  • 性別性別 (male, female)
  • 年齢年齢
  • 運賃料金 : 運賃
  • 乗船乗船した港 (C = Cherbourg, Q = Queenstown, S = Southampton)

このデータにより、各乗客が持つ特性が生存にどのような影響を与えたかを分析することができます。

データ前処理と可視化

タイタニックデータは一部欠測値(missing value)が含まれています。 特に 年齢 列に欠損値が多いので、これを処理する必要があります。基本的な前処理を行った後、乗客の年齢と性別、搭乗クラス別の生存率を視覚化してみましょう。

データ前処理

#欠損値処理 (欠損値を中央値に置き換える)
titanic$Age[is.na(titanic$Age)] <- median(titanic$Age, na.rm = TRUE)

#のデータ構造確認
summary(titanic$Age)

# 上記のコードを実行した結果 #
   Min.1st Qu.  Median Mean 3rd Qu.    Max.
   0.42 22.00 28.00 29.00 29.36 35.00 80.00 

上のコードでは、年齢の 欠測値を中央値に置き換えるとしました。データを前処理して年齢についてデータ構造を確認してみると、平均が29.36歳、中央年齢は28歳ですね。 最大最小年齢を見ると、その間隔が80年にもなりますね。 さて、年齢と性別、搭乗クラスによる生存率を視覚化してみましょう。

Rで生存率を可視化する

# ggplot2のインストールとロード
install.packages("ggplot2") #がインストールされている場合は削除してください。
library(ggplot2)

#の性別と搭乗クラスによる生存率を視覚化します。
ggplot(titanic, aes(x=Pclass, fill=as.factor(Survived)))) + ggplot(titanic, aes(x=Pclass, fill=as.factor(Survived)))
  geom_bar(position="fill") + +...
  facet_wrap(~Sex) + +...
  labs(title="性別と搭乗クラスによる生存率", x="搭乗クラス", y="比率", fill="生存するかどうか")

このRデータ分析例では、性別と搭乗クラス別の生存率を直感的に確認することができます。例えば、1等席に乗った女性乗客の生存率が非常に高いという事実を視覚的に確認することができ、これは生存かどうかに大きな影響を与えた要因の一つであることを示しています。男性の場合は、クラスによる生存の有無がそれほど大きく影響していないことがわかります。

R 데이터분석 예제-타이타닉 데이터 시각화1

ロジスティック回帰を用いた生存予測モデル

それでは、本格的に予測モデルを作成してみましょう。 今回は ロジスティック回帰を使用して生存の有無を予測する簡単なモデルを構築します。 ロジスティック回帰は、バイナリ分類問題でよく使われる手法で、データに基づいて乗客の生存の有無を予測することができます。

Rでロジスティック回帰モデルを構築する

#ロジスティック回帰モデルの構築
model |z|)
(切片) 4.6553374 0.5085945 9.153 < 2e-16 ***.
Pclass -1.1529180 0.1355637 -8.505 < 2e-16 ***.
Sexmale -2.6072959 0.1872514 -13.924 < 2e-16 ***.
年齢 -0.0331244 0.0073991 -4.477 7.58e-06 ***.
運賃 0.0005922 0.0020347 0.291 0.771
--- 0.771 0.771 0.771
Signif. コード:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.0.1 ' ' 1

(2項系列の分散パラメータは1とする)

    ヌル偏差: 890自由度で 1186.7
残留偏差: 886自由度で805.5
AIC: 815.5

フィッシャースコアリングの反復回数: 5回

このコードにより、搭乗クラス、性別、年齢、運賃を独立変数として設定し、生存の有無を予測するロジスティック回帰モデルを作成することができます。 summary() 関数は、モデルの係数を示し、どの変数が生存に有意な影響を与えるかを知ることができます。

統計数値の説明

(モデル説明)
glm(formula = Survived ~ Pclass + Sex + Age + Fare, family = binomial, data = titanic)
Survived(生き残ったかどうか)を 従属変数で置き、Pclass(搭乗クラス), Sex(性別), Age(年齢), Fare(運賃)を 独立変数として使用しました。 family = binomial は、このモデルが バイナリ分類 つまり、生存の有無が0(死亡)または1(生存)に分類されることを意味します。
(Coefficients係数の説明)
- インターセプト(y切片)
Estimate(推定値):4.655
意味: この値は、すべての独立変数が0の場合の生存確率を表します。ロジスティック回帰では、この値を解釈するのはやや複雑な場合がありますが、基本的には、特定の変数がない場合の生存確率を表します。
- Pclass(搭乗クラス)
Estimate(推定値):-1.153
意味:クラスが1等席から3等席になるほど生存確率が減少することを意味します。係数が負であるため、搭乗クラスが高い(1等席)ほど生存確率が高く、低い(3等席)ほど生存確率が低くなります。
- Sex (性別: 男性)
Estimate(推定値):-2.607
意味:性別が男性の場合、生存確率が低くなることを示しています。男性が女性よりも生き残る確率が低いことを示しており、これはタイタニック号事故当時の「女性優先」の救助原則と一致する結果です。
- Age(年齢)
Estimate(推定値):-0.033
意味: 年齢が高いほど、生存確率が若干減少します。年齢の係数は負の値なので、年齢が高くなるほど生存確率が若干減少します。
- Fare(運賃)
Estimate(推定値):0.000592
意味:運賃が高いほど生存確率が高くなる傾向がありますが、この値は非常に小さく、統計的に有意ではないと判断されます。実際にp-value(Pr(>|z|))が0.771で、運賃が生存の有無に与える影響はほとんどないことを示しています。
- p値(Pr(>|z|))
p-valueは、各変数の統計的有意性を示しています。 値が0.05より小さい場合、その変数は生存するかどうかに統計的に有意な影響を与えると見ることができます。 結果から、3つの変数は非常に有意な影響を及ぼし、それぞれのp-valueは次のとおりです:
Pclass: < 2e-16 (非常に有意) | Sex: < 2e-16 (非常に有意) | Age: 7.58e-06 (非常に有意)
一方、Fareはp-valueが0.771で、生存の有無に統計的に有意な影響を与えません。
- 無逸脱度と残留逸脱度
ヌル偏差:1186.7
モデルを適用せず、平均値のみで予測した場合の誤差です。
残留偏差:805.5
モデルを適用した後に残った誤差です。 この2つの値を比較すると、モデルがどれだけうまく機能したかを確認することができます。誤差が減ったので、このモデルが有意な性能を示したと言えます。
-AIC(アカイケ情報基準):815.5
AICはモデルの適合度を示し、値が低いほど良いモデルです。AICは他のモデルと比較するときに便利です。
(総合まとめ)
搭乗クラス、性別、年齢はいずれも生存確率に非常に有意な影響を及ぼし、特に搭乗クラスと性別が最も大きな影響を与えた要因です。運賃は生存に有意な影響を与えませんでした。 全体的に、このモデルはタイタニック号の生存者を予測するのに適したモデルであると言えます。

予測結果評価

モデルを構築した後は、それを評価する過程が必要です。実際にこのモデルがどれだけ正確に生存の有無を予測するかを評価するために、予測値を生成し、混同行列(confusion matrix)を通じて評価します。

# 予測値の生成
pred <- predict(model, type="response")

# 0.5以上の場合、生存とみなす。
pred_class  0.5, 1, 0)

# 実際の値と比較して混同行列を生成します。
table(pred_class, titanic$Survived)

# コード実行結果 #
pred_class 0 1
         0 469 98
         1 80 244

この データ分析例では、予測値が0.5以上であれば生存(1)、そうでなければ死亡(0)に分類し、実際の値と比較します。混同行列を通じて、モデルの精度と予測性能を評価することができます。モデルはかなり正確(80%)で、ほとんどの乗客の生存状態を正確に予測します。精度(75.3%)が高く、つまり、誰かが生き残るだろうと予測すると、一般的に当たります。 しかし、このモデルは 再現性(71.4%)では、一部の生存者を当てることができず、非生存者と予測することがわかりました。 乗客が生存していないのに生存したと誤って予測する偽陽性率(14.6%)も一部あります。

データ分析でよくあるミスと解決方法

R 데이터분석 예정 - 주요 실수 그림

データ分析を進めていくと、様々な間違いを犯すことがあります。今回のデータ分析例で発生する可能性がある主なミスとその解決方法を見てみましょう。

  1. 欠測値処理のミス欠損値を単純に削除したり、誤って処理すると、分析結果が歪む可能性があります。 欠損値を処理するときは、中央値や平均値、またはモデリング技法を使用して置き換えることをお勧めします。
  2. データスケーリング不足.スケール処理を行う必要があります:ロジスティック回帰モデルでは、データのスケール差が大きいとモデル性能が低下することがあります。 特に、運賃(Fare)のような変数はスケーリング処理が必要な場合があります。
  3. オーバーフィット問題: 学習データだけに適合しすぎたモデルを作成すると、新しいデータに対する予測性能が低下する可能性があります。このような場合、クロス検証(Cross-validation)を通じてモデルの性能を評価することが重要です。

よくある質問

Q1: タイタニックのデータはどこでダウンロードできますか?
A: TitanicデータセットはKaggleからダウンロードできます。様々なデータセットが付属しており、モデリング実習に役立ちます。

Q2: ロジスティック回帰モデルはどのように機能しますか?
A: ロジスティック回帰は、連続変数ではなく、バイナリ変数を予測するために使用されます。確率値を出力し、これに基づいて特定の事象の発生可能性を予測することができます。

Q3: データ前処理で欠損値をどのように処理すればよいですか?
A:欠損値の処理方法は状況によって異なります。中央値や平均値に置き換えるか、欠損値を含むモデリング手法を使用することができます。

整理する

今回の記事では、データ分析の例として、タイタニック号の生存者データを活用して生存予測モデルを構築してみました。 データを前処理し、様々な可視化を通じてインサイトを得て、ロジスティック回帰モデルを使用して予測分析を行いました。タイタニックデータはデータ分析の基礎から実戦応用まで幅広く活用できる優れた学習資料です。

皆さんも今回の例をもとにデータ分析の基礎を固め、様々なデータセットに挑戦してみてください!

類似の投稿