R言語での、データの抽出方法について紹介します。
以下で使用するデータは、batter_YY にYY年の打者成績が入っています。
※使用するデータはすべてプロ野球データFreak様からお借りしています。
プロ野球データFreak
~目次~
1. 合計と中央値と平均
中央値と平均値はそれぞれ以下で求められます。
中央値:median(配列)
平均値:mean(配列)
以下で例を示します。
最大値の例は以下です。安打数の合計を計算しています。
[1] 6331
次に、平均と中央値の例です。
[1] 0.255
> mean(batter_17$打率)
[1] 0.254027
打率は平均値と中央値が大体同じですね。
基本的にデータの分布が正規分布の場合には、平均値と中央値が同じ値を示します。
平均値と中央値が異なる有名な例として年収があります。(一部の高額所得者が平均を押し上げているため、平均 > 中央値となる)
ちなみに、以下が2009年~2018年の打率の平均値と中央値です(上が平均値)。
2009,2010年あたりが打高だったのが伺えますね。
※basic_staは自作関数です。
> values[2,] <-round(basic_sta("打率", "median"), digit=3)
> colnames(values) <- batter
> values
batter_09 batter_10 batter_11 batter_12 batter_13 batter_14 batter_15 batter_16 batter_17 batter_18
[1,] 0.267 0.268 0.252 0.255 0.263 0.263 0.255 0.262 0.254 0.253
[2,] 0.267 0.267 0.259 0.252 0.264 0.263 0.256 0.264 0.255 0.261
なお、中央値の要素数が偶数の場合は、直近の二つの数字の平均をとります。
> median(test)
> test
3.5
2. 分散と標準偏差
要素数nの配列の分散と標準偏差の定義は、それぞれ以下になります。
"分散が大きい"とは、配列の各要素間の差が大きいことを示します。
標準偏差: s=√分散
※nは配列の要素数
※は分散を算出する配列
※は対象の配列の平均
ちなみに、なぜ標準偏差という分散にルートをかけただけの統計量が存在するかというと、標準偏差は元の要素と次元を合わせているため使い勝手が良い事が多いためです。
Rでは以下になります。
標準偏差 = sd(配列) = sqrt(分散)
※正確にはvar(及びsd)で求められる値は"不偏分散"といい、nで割るのではなくn-1で割っています。
nで割るのは"標準分散"といい、var(配列)*(n-1)/n とする必要があります。
以下では具体例を示します。
[1] 0.001509424
> sd(batter_17$打率)
[1] 0.03885131
先ほどの、不偏分散と標準分散については、以下のように確認ができます。
n-1で割った値が、var関数で計算した値と同じになっている事が確認できます。
> sum((batter_17$打率 - mean(batter_17$打率))^2) / n
[1] 0.001489026
> #不偏分散
> sum((batter_17$打率 - mean(batter_17$打率))^2) / (n-1)
[1] 0.001509424
> #不偏分散
> var(batter_17$打率)
[1] 0.001509424
以上です。