科学の箱

科学・IT・登山の話題

R

一対比較法によるリーグ戦の分析

投稿日:

一対比較法を利用すると2者の比較から全体の重要度や実力を数字で表現できる。

一対比較法を使った分析の手順は以下のようにすすめる。

  1. データを取得する。
    一対比較法のデータは複数の項目から2者を選び比較した結果となる。比較は優劣の対立でもよいし、点数による差でもよい。例えばサッカーや野球のリーグ戦の結果は点数による差となっている。相撲の結果は優劣の比較になる。
  2. データを回帰分析用に変換する。
    取得したデータを質的データを回帰分析するときの手順と同じようにダミー変数を使ってテーブルに変換する。
  3. 自由度の調整
    いづれかの列を削除して自由度を調整する。
  4. 回帰分析を実行する。
  5. モデルにデータを入力して実力差を比較する。また偏差値で表現をしてわかりやすくする。

インターネット上で利用できるリーグ戦の結果を利用して一対比較法で分析してみる。

第48回関西サッカーリーグ Division1の結果が下記のリンクから取得できる。

http://football-system.jp/fss/pub_matrix.php?lid=DicyXwJKc6o=

result

 

データを回帰分析用に変換する。以下のようなった。

FCO AMI RAY BAN NARA ARU LARA AI SCORE
1 -1 5
1 -1 6
1 -1 0
1 -1 2
1 -1 7
1 -1 6
1 -1 5
-1 1 1
1 -1 1
1 -1 4
1 -1 9
1 -1 4
1 -1 8
1 -1 0
1 -1 7
1 -1 1
1 -1 3
1 -1 4
1 -1 1
1 -1 2
1 -1 3
1 -1 6
1 -1 1
1 -1 1
1 -1 1
-1 1 1
1 -1 1
1 -1 0

自由度を調整する。AI列を削除した。

FCO AMI RAY BAN NARA ARU LARA SCORE
1 -1 5
1 -1 6
1 -1 0
1 -1 2
1 -1 7
1 -1 6
1 5
-1 1 1
1 -1 1
1 -1 4
1 -1 9
1 -1 4
1 8
1 -1 0
1 -1 7
1 -1 1
1 -1 3
1 4
1 -1 1
1 -1 2
1 -1 3
1 6
1 -1 1
1 -1 1
1 1
-1 1 1
1 1
1 0

Rにデータを読み込む。

kansai_fc_div <- read.csv("kansai_fc_div.csv")
kansai_fc_div

   FCO AMI RAY BAN NARA ARU LARA SCORE
1    1  -1  NA  NA   NA  NA   NA     5
2    1  NA  -1  NA   NA  NA   NA     6
3    1  NA  NA  -1   NA  NA   NA     0
4    1  NA  NA  NA   -1  NA   NA     2
5    1  NA  NA  NA   NA  -1   NA     7
6    1  NA  NA  NA   NA  NA   -1     6

NAがある。このままでは回帰分析を実行できないので0に変換する。

kansai_fc_div[is.na(kansai_fc_div)] <- 0
kansai_fc_div
   FCO AMI RAY BAN NARA ARU LARA SCORE
1    1  -1   0   0    0   0    0     5
2    1   0  -1   0    0   0    0     6
3    1   0   0  -1    0   0    0     0
4    1   0   0   0   -1   0    0     2
5    1   0   0   0    0  -1    0     7
6    1   0   0   0    0   0   -1     6
7    1   0   0   0    0   0    0     5
8    0  -1   1   0    0   0    0     1
9    0   1   0  -1    0   0    0     1

回帰分析を実行する。

result <- lm(SCORE ~ FCO + AMI + RAY + BAN + NARA + ARU + LARA, data=kansai_fc_div)
summary(result)

以下の結果になった。

Call:
lm(formula = SCORE ~ FCO + AMI + RAY + BAN + NARA + ARU + LARA, 
    data = kansai_fc_div)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.2500 -1.0625 -0.2857  1.1652  4.1607 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   0.8571     0.8696   0.986  0.33604   
FCO           5.5000     1.9076   2.883  0.00919 **
AMI           4.5536     1.5826   2.877  0.00931 **
RAY           3.0893     1.7391   1.776  0.09089 . 
BAN           3.6429     1.4420   2.526  0.02007 * 
NARA          1.1071     1.3223   0.837  0.41233   
ARU           0.4107     1.1707   0.351  0.72938   
LARA          0.6964     1.2297   0.566  0.57747   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 2.301 on 20 degrees of freedom
Multiple R-squared: 0.4563,     Adjusted R-squared: 0.2661 
F-statistic: 2.398 on 7 and 20 DF,  p-value: 0.05908

チームの実力を比較してみる。結果はcoefficientから取得できる。

score <- coefficients(result)
score <- score[-1]
plot(score,rep(0, length(score)), pch=19, xlab="", main="", , xaxt="n",
                xlim=range(pretty(score)), ylab="", yaxt="n", ylim=c(0,0.2),
                bty="n", xpd=TRUE)
text(score, 0.0, names(score), pos=3, cex=0.5)
axis(1, pos=0)

score

グラフは下記を参考にした。

サーストンの一対比較法

偏差値を計算してみた。

tosd <- function(x){
 x_mean <- mean(x);
 x_sd <- sqrt(mean((x - x_mean)^2));
 x_z <- (x - x_mean)/x_sd;
 print(x_z);
}

tosd(score)*10+50

結果は以下である。

> tosd(score)*10+50
     FCO      AMI      RAY      BAN     NARA      ARU     LARA 
65.01111 59.91118 52.02073 55.00370 41.33975 37.58697 39.12657 

メタ情報

inarticle



メタ情報

inarticle



-R
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Rによるやさしい統計学/3-2つの変数の記述統計

散布図を作成 Rで散布図を作成する。データはrunifで10個ずつ作成する。データのレンジは50~100. x_test <- as.integer(runif(10, 50, 100)) y_ …

no image

データの縦・横展開

stack()関数を用いて横長のデータを縦長にできることを教わった。このようなデータ形式の変換はよくあることなのでもう少し調べてみた。 scoreデータは以下のような形式となっている。 > he …

no image

ジニ係数

計量経済学の本を読んでいたら、ジニ係数の利用について記述されていたのでRで実データを使って計算してみる。 経済学の勉強でジニ係数というのは知っていたが、その利用方法としては所得の分配がどの程度平等であ …

no image

R Dataset – bone

データの説明 261人の子供たちから得られた年齢別骨密度。 フォーマット idnum: 識別コード age: 測定時の年齢 gender: 性別 spnbmd: 骨密度 チェック テーブル全体について …

no image

Rによるやさしい統計学/6-2つの平均値を比較する

(1) 統計が好きか嫌いかで統計テスト1の得点について有意な差はあるか。 指導法データは score.csvに作成する。 ID,名前,性別,数学,統計,心理学テスト,統計テスト1,統計テスト2,指導法 …

2014年5月
« 4月   6月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

side bar top



アーカイブ

カテゴリー