RでAKBの年齢、身長、スリーサイズを分析する
今回は、普段Rで解析を行っているような人にはなんてことない話です。
データの題材を変えると興味が俄然湧いてくるような人もいるんじゃないの、って感じのテーマです。
データは↓こちらのものを使わせてもらいました。
アイドルプロフィール(スリーサイズ、カップ情報) - AKB48
ページ自体はHTMLのテーブルですが、大抵のブラウザではコピー&ペーストすれば、タブ区切りやカンマ区切りのテキストに簡単に変えられるんじゃないでしょうか。そんな感じでタブ区切りのデータファイルを作りました↓
"AKB.txt"
サイトからデータを取得したのが2013年なので、情報が古くなっていると思われます。まず年齢はそうだし、あと激太りした人とか(いるのか?)。
平面上に各メンバーをマッピングしてみるなんてのが、なんとなく面白そうですね。
多次元尺度構成法を使ってみました。データを(年齢、身長、バスト、ウエスト、ヒップ)の5次元だととらえて距離を算出し、なるべくその距離感が再現されるように、2次元に落として(5次元のままじゃ表現しづらいので)プロットされた図という感じでしょうか。
結果はあまりあてにできないと思います。距離の算出方法もいろいろな手法があったり、正規化する/しないでも結果は変わるし。描画された結果を見て、適切な処理を選ぶといいと思いますが、なにせ私はAKBのメンバーは5人くらいしか知らないので、結果の妥当性を検証できません。AKBに詳しい人は、ぽっちゃりゾーン、のっぽゾーン、お局ゾーン(いちおう年齢という要素も入っているので)などを見つけられるかもしれません。
単純なplotは、x座標、y座標を指定すると散布図が描かれるような使い方ですが、このような多次元のデータの場合はいきなりplotを使うだけで、それぞれのデータの組み合わせの散布図をマトリックスで描いてくれます。痒いところに手が届く。
ざっとみたところ、ウエストとヒップの相関が強そうです。場所が近いからね。
数値でも見てみましょう。
予想通り、WとHの相関係数が約0.68で一番高いですね。
これだけ取り出してplotしてみましょう。
見えるぞ、見えるぞ、右肩上がりの直線が。
○だと味気ないので、名前でプロットしてみました↓
プロット位置が重ならないようにy軸方向にランダム要素を入れてみました。
もし、少しでも重なるのは嫌だという場合は、
Rの自己組織化マップ(SOM)で文字が重ならないようにする方法 - Rプログラミングの小ネタ
の方法を参考にしてみてください。
というわけで、練習でRを使うにしても、架空のデータより実際のデータの方がやる気が増したりするのではないでしょうか。
データの題材を変えると興味が俄然湧いてくるような人もいるんじゃないの、って感じのテーマです。
データは↓こちらのものを使わせてもらいました。
アイドルプロフィール(スリーサイズ、カップ情報) - AKB48
ページ自体はHTMLのテーブルですが、大抵のブラウザではコピー&ペーストすれば、タブ区切りやカンマ区切りのテキストに簡単に変えられるんじゃないでしょうか。そんな感じでタブ区切りのデータファイルを作りました↓
"AKB.txt"
名前 年齢 身長 B W H 岩田華怜 15 159 82 62 85 菊地あやか 20 160 74 58 82 佐藤すみれ 20 166 78 57 84 篠田麻里子 27 168 87 57 85 高橋みなみ 22 148.5 74 56.5 81 ・・・
サイトからデータを取得したのが2013年なので、情報が古くなっていると思われます。まず年齢はそうだし、あと激太りした人とか(いるのか?)。
平面上に各メンバーをマッピングしてみるなんてのが、なんとなく面白そうですね。
RでAKBの多次元尺度構成法 |
多次元尺度構成法を使ってみました。データを(年齢、身長、バスト、ウエスト、ヒップ)の5次元だととらえて距離を算出し、なるべくその距離感が再現されるように、2次元に落として(5次元のままじゃ表現しづらいので)プロットされた図という感じでしょうか。
結果はあまりあてにできないと思います。距離の算出方法もいろいろな手法があったり、正規化する/しないでも結果は変わるし。描画された結果を見て、適切な処理を選ぶといいと思いますが、なにせ私はAKBのメンバーは5人くらいしか知らないので、結果の妥当性を検証できません。AKBに詳しい人は、ぽっちゃりゾーン、のっぽゾーン、お局ゾーン(いちおう年齢という要素も入っているので)などを見つけられるかもしれません。
単純なplotは、x座標、y座標を指定すると散布図が描かれるような使い方ですが、このような多次元のデータの場合はいきなりplotを使うだけで、それぞれのデータの組み合わせの散布図をマトリックスで描いてくれます。痒いところに手が届く。
plot関数一発で複数の散布図が描ける |
plot(d1)
ざっとみたところ、ウエストとヒップの相関が強そうです。場所が近いからね。
数値でも見てみましょう。
> cor(d1) 年齢 身長 B W H 年齢 1.00000000 0.1496649 0.4605498 -0.02294316 0.01799732 身長 0.14966489 1.0000000 0.2171821 0.17997791 0.44760344 B 0.46054975 0.2171821 1.0000000 0.47559306 0.50405497 W -0.02294316 0.1799779 0.4755931 1.00000000 0.67685625 H 0.01799732 0.4476034 0.5040550 0.67685625 1.00000000
予想通り、WとHの相関係数が約0.68で一番高いですね。
これだけ取り出してplotしてみましょう。
ウエストとヒップの散布図 |
plot(d1$W, d1$H)
見えるぞ、見えるぞ、右肩上がりの直線が。
○だと味気ないので、名前でプロットしてみました↓
ウエストとヒップの散布図(氏名でプロット) |
プロット位置が重ならないようにy軸方向にランダム要素を入れてみました。
もし、少しでも重なるのは嫌だという場合は、
Rの自己組織化マップ(SOM)で文字が重ならないようにする方法 - Rプログラミングの小ネタ
の方法を参考にしてみてください。
というわけで、練習でRを使うにしても、架空のデータより実際のデータの方がやる気が増したりするのではないでしょうか。
コメント
コメントを投稿