タイタニックをネタにRの使い方を学ぶ(その1)

Kaggle*1でTitanicの生存者予測というものがあるので、これを使ってRの自習をします。

  • 環境
    • Mac OS X 10.10 + Rアプリケーション

まず、csvの読み込み方法。

titanic <- read.table(file="train.csv", header=TRUE, sep=",")
titanic <- read.csv("train.csv")

簡単でした。

次に、表示確認
最初の3行を表示、というコマンド。

head(titanic_table, 3)

年齢のヒストグラムを出してみます。

require(ggplot2)
hist(titanic$Age, main="AgeHistgram", xlab="Age")

散布図を出してみます。(生き死にと、年齢の関係)

plot(Survived ~ Age, data=titanic)

生き死に、性別ごとの年齢の平均値と中央値を出してみる
(グルーピング)

aggregate(Age ~ Survived + Sex, titanic, mean)
* Survived Sex Age
1 0 female 25.04688
2 1 female 28.84772
3 0 male 31.61806
4 1 male 27.27602

aggregate(Age ~ Survived + Sex, titanic, median)
* Survived Sex Age
1 0 female 24.5
2 1 female 28.0
3 0 male 29.0
4 1 male 28.0

女性は若い人の方が亡くなっているということでしょうか、、、?
検定とかしてみたいところではありますが、、、、

まずは相関係数を求めてみます。
"complete.obj"を指定することでNA値をすっ飛ばした相関が得られるようです。
Survivedが0,1なのであんまりぱっとした結果はでないと思いますが、、、、

> cor(titanic$Survived, titanic$Age, use = "complete.obs")
[1] -0.07722109

wikipediaによると、<0.2は相関なしとのこと。

ちなみに、年齢と兄弟の数は0.2<, <0.4なので軽い相関があるとなるようです。

> cor(titanic$Age, titanic$SibSp, use = "complete.obs")
[1] -0.3082468

一気に確認。(共分散)
列番号を入力すればいいらしいです。(ただし数値のみ)。Sex列はfemale/maleなので使えません。
あんまり関連があるものがないですね、、、、

> cor(titanic[,c(2,6:8,10)], use = "complete.obs")
Survived Age SibSp Parch Fare
Survived 1.00000000 -0.07722109 -0.01735836 0.09331701 0.26818862
Age -0.07722109 1.00000000 -0.30824676 -0.18911926 0.09606669
SibSp -0.01735836 -0.30824676 1.00000000 0.38381986 0.13832879
Parch 0.09331701 -0.18911926 0.38381986 1.00000000 0.20511888
Fare 0.26818862 0.09606669 0.13832879 0.20511888 1.00000000

ちなみに、性別でグルーピング後に共分散を求めてみると、、、、
かろうじて0.2を越えるのが、
女性の生き死にに対して兄弟の人数(負の相関)と料金、年齢に対して兄弟の人数、兄弟の人数に対してParch(これなんだっけ)
男性の年齢に対して兄弟の人数とParch、兄弟の人数に対してParch, Parchに対しての料金。
なかなか生死の予測は難しそう、、、、

> cor(titanic[titanic$Sex == "female",c(2,6:8,10)], use = "complete.obs")
Survived Age SibSp Parch Fare
Survived 1.0000000 0.1161086 -0.20229269 -0.19770659 0.23096192
Age 0.1161086 1.0000000 -0.24144162 -0.11853911 0.17146779
SibSp -0.2022927 -0.2414416 1.00000000 0.28202709 0.07041957
Parch -0.1977066 -0.1185391 0.28202709 1.00000000 0.05437894
Fare 0.2309619 0.1714678 0.07041957 0.05437894 1.00000000
> cor(titanic[titanic$Sex == "male",c(2,6:8,10)], use = "complete.obs")
Survived Age SibSp Parch Fare
Survived 1.00000000 -0.11961752 -0.01690827 0.09872617 0.18342132
Age -0.11961752 1.00000000 -0.33498250 -0.23241943 0.07733091
SibSp -0.01690827 -0.33498250 1.00000000 0.47816126 0.16382938
Parch 0.09872617 -0.23241943 0.47816126 1.00000000 0.31189871
Fare 0.18342132 0.07733091 0.16382938 0.31189871 1.00000000