www.crosshyou.info

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

プロ野球の勝敗データの分析6 - R言語でクロス表(2 x 2)のファイ係数を計算する関数を作成する。整数の桁あふれは as.numeric関数で対応。

 

www.crosshyou.info

 の続きです。

今回は、ファイ係数を計算する関数を作ってみます。

実は、

 

www.crosshyou.info

のときにも関数を作ってみたのですが、何故かエラーになったんです。

そのとき作った関数が

f:id:cross_hyou:20191031185657p:plain

 

これです。

そして、この関数を実行したら、

f:id:cross_hyou:20191031185814p:plain

と「整数の桁あふれにより NA が生成されました」となってしまいました。

その後、試行錯誤してみたらうまく計算できる関数になりましたので、忘れないようにここに記録しておきます。

どうやら計算の過程で整数の桁が大きくなりすぎたようです。なので、データの型をinteger型からnumeric型に変更すればよかったようです。

f:id:cross_hyou:20191031193150p:plain

このように、マトリックスの各要素をas.numeri関数でデータ型をnumeric型に変換してからファイ係数を計算するようにしました。

これで実行すると、

f:id:cross_hyou:20191031193621p:plain

fai2関数で実行した結果も公式で計算した結果も同じ-0.1485559になりました。

整数の桁あふれは、as.numeric関数で対応すればよいのですね。

今回は以上です。

都道府県別の凶悪犯認知件数の分析3 - R言語で回帰分析。今回は対数値で回帰分析。可住地面積が広いほうが件数は少ない。

 

www.crosshyou.info

 の続きです。

今回は対数値のavgArea, avgGDPで回帰分析してみます。

f:id:cross_hyou:20191026141837j:plain

log(avgArea):log(avgGDP)の項目はいらないですね。削除します。

f:id:cross_hyou:20191026141944j:plain

model2を採用します。

f:id:cross_hyou:20191026142027j:plain

I(log(avgGDP)^2)はいらないですね。

f:id:cross_hyou:20191026142126j:plain

model3を採用します。

f:id:cross_hyou:20191026142218j:plain

I(log(avgArea)^2)はいらないですね。

f:id:cross_hyou:20191026142307j:plain

model4を採用します。

f:id:cross_hyou:20191026142355j:plain

Intercept, log(avgArea), log(avgGDP)の3つともPr(>|t|)が0.05より小さいので有意です。モデル全体のp-valueは2.124e-10なので有意なモデルです。

対数値をとるとavgArea, 可住地面積も凶悪犯認知件数に関連があることがわかります。

面積が広いほど、件数は減ります。GDPは大きいほど件数は増えます。これは前回と同じですね。

実際の凶悪犯認知件数とモデルの推測値を比べてみましょう。

f:id:cross_hyou:20191026143225j:plain

model4$fitted.valuesで上のようにモデルの推測値が出ます。

散布図を描いてみましょう。

f:id:cross_hyou:20191026143949j:plain

f:id:cross_hyou:20191026144001j:plain

横軸が実際の件数、縦軸が予測の件数、赤い直線が45度の線です。赤い直線の下にある都道府県が実際の件数が予測値よりも多い都道府県、赤い直線の上にあるのが実際の件数が予測値よりも少ない県です。

大阪府は実際の件数のほうが予測値よりも多く、東京都は実際の件数は予測値よりも少ないとわかります。

今回は以上です。

 

都道府県別の凶悪犯認知件数の分析2 - R言語で人口10万人当りの凶悪犯認知件数を計算して回帰分析。経済活動が活発なほど件数は多い。

 

www.crosshyou.info

 の続きです。

今回は、人口10万人当りの凶悪犯認知件数を算出して、これを可住地面積と県内総生産額で回帰分析してみます。

f:id:cross_hyou:20191026104129j:plain

大阪府は人口10万人当りの件数でも一番多いですね。

一番少ないのは山形県です。

グラフにしてみます。

f:id:cross_hyou:20191026104351j:plain

f:id:cross_hyou:20191026104401j:plain

大阪府の件数の多さは突出していることがわかります。

それでは、回帰分析してみます。lm関数を使います。

f:id:cross_hyou:20191026104712j:plain

avgArea:avgGDPの項目は不要ですね。削除します。

f:id:cross_hyou:20191026105005j:plain

Pr(>F)が0.9377と0.05よりも大きいので、model1とmodel2では有意な違いはありません。より単純なmodel2を採用してさらに調べます。

f:id:cross_hyou:20191026105204j:plain

I(avgArea^2)は不要ですね。削除します。

f:id:cross_hyou:20191026105358j:plain

Pr(>F)が0.08373なのでmodel3を採用してさらに調べます。

f:id:cross_hyou:20191026105521j:plain

avgAreaのPr(>|t|)が0.0671と0.05より大きいので、avgAreaはいらないですね。削除します。

f:id:cross_hyou:20191026105746j:plain

model4を採用してさらに詳しく調べます。

f:id:cross_hyou:20191026105919j:plain

これで、切片(Intercept)、avgGDP, I(avgGDP^2)のすべてのPr(>|t|)が0.05以下になりました。p-valueは2.04e-10なので有意な統計モデルです。Adjusted R-squaredは0.6208なので、このモデルで人口10万人当りの凶悪犯認知件数の62%が説明できます。

散布図とモデルの回帰曲線を描いてみます。

f:id:cross_hyou:20191026110451j:plain

まず、上のように、回帰曲線のxvとyvを用意します。xvはavgGDPの最小値から最大値を100個に区切ったベクトルです。yvはpredict関数でxvに対応するyv、つまり凶悪犯認知件数を算出しています。

f:id:cross_hyou:20191026110831j:plain

f:id:cross_hyou:20191026110842j:plain

avgGDPの右端のプロットは東京都ですね。東京都が無ければ単純にavgGDPが大きいほど凶悪犯件数は多いようですね。経済活動が活発なほうが強盗する機会も多いでしょうからね。

今回は以上です。

 

都道府県別の凶悪犯認知件数の分析1 - R言語で基本統計値を調べる。大阪府では1年で1000件以上も発生している。

今回は都道府県別の凶悪犯認知件数を分析します。

e-stat, 政府統計の総合窓口からデータを取得しました。

f:id:cross_hyou:20191024204103j:plain

説明変数として、総人口、可住地面積、県内総生産額も一緒に取得しました。

f:id:cross_hyou:20191024204202j:plain

このようなExcelファイルを作成しました。これをread.csv関数でR言語に読込ませ分析します。

f:id:cross_hyou:20191025063450j:plain

Badが凶悪犯認知件数です。一番少なくて12件、多くて1255件、平均値は163件、中央値は66件です。平均値と中央値に大きな差がありますね。偏りのあるデータ分布なのでしょう。グラフにしてみてみます。

f:id:cross_hyou:20191025063522j:plain

まず、gpという名前の3つのグラフを描く自作関数を作成しました。

f:id:cross_hyou:20191025063714j:plain

f:id:cross_hyou:20191025063728j:plain

ヒストグラムの分布の形状を見ると、右側に裾野が広がっている形状です。

年度を見てみましょう。

f:id:cross_hyou:20191025064044j:plain

2006年度から2015年度までの10年間のデータがあることがわかります。

1975年度などの不要なファクタ水準を削除します。

f:id:cross_hyou:20191025064313j:plain

全ての年度でデータが47個あるので、47都道府県すべてのデータが揃っている。ということですね。

都道府県ごとの過去10年間の平均の人口、可住地面積、県内総生産、凶悪犯認知件数を作成します。

f:id:cross_hyou:20191025064855j:plain

人口は鳥取県が一番少ないです。多いのは東京です。

f:id:cross_hyou:20191025065140j:plain

可住地面積の一番狭いのは奈良県なんですね。一番広いのは北海道です。

f:id:cross_hyou:20191025070146j:plain

県内総生産が一番少ないのは、鳥取県です。一番多いのは東京都です。

f:id:cross_hyou:20191025070431j:plain

凶悪犯認知件数が一番少ないのは島根県です。一番多いのは大阪府です。

このavgBadのグラフを見てみましょう。

f:id:cross_hyou:20191025070935j:plain

f:id:cross_hyou:20191025070946j:plain

今回は以上です。

 

プロ野球の勝敗データの分析5 - 引き分けが多いのは粘り強さの証なのか?勝ちきれない詰めの甘さなのか? >>> どちらでもない。

 

www.crosshyou.info

 の続きです。

今回は勝利数を引き分け数で回帰分析してみます。

引き分け数が多いチームほど勝利数が多ければ、引き分けが多いのは粘り強さの証になりますし、逆に引き分けが多いチームほど勝利数が少なければ、引き分けが多いのは勝ちきれない詰めの甘さとなるでしょう。

早速、R言語で散布図を描きます。

f:id:cross_hyou:20191024201613j:plain

なんとなく、引き分けが多いと勝利数少ないですね。詰めの甘さということですね。回帰分析してみます。

f:id:cross_hyou:20191024201822j:plain

p-value = 0.4716ですから有意なモデルではないですね。I(Tie^2)を削除します。

f:id:cross_hyou:20191024201954j:plain

p値が0.8971なので、model1もmodel2も大差ないです。model2を見てみます。

f:id:cross_hyou:20191024202104j:plain

p-値が0.21なので、有意なモデルではないですね。

結論は引き分け数と勝利数には関係性は無い、ということです。

粘り強さの証でもないし、詰めの甘さでもないということですね。

今回は以上です。

プロ野球の勝敗データの分析4 - 2 x 2のクロス表のファイ係数を計算する。

 

www.crosshyou.info

 の続きです。

今回は 2 x 2 のクロス表で関連性の強さを見る指標、ファイ係数を計算しようと思います。

bellcurve.jpこのサイトに

f:id:cross_hyou:20191024194814j:plain

このように計算式が載っていました。これを使って計算します。

まずは、Aクラス・Bクラス x セリーグ・パリーグのクロス表のファイ係数を計算しましょう。

f:id:cross_hyou:20191024195328j:plain

ほとんどファイ係数は絶対値で1に近いほど関連がある、ということですので、この場合はほとんど関連が無いということですね。

Aクラス・Bクラス x 関東・非関東のクロス表はどうでしょうか?

f:id:cross_hyou:20191024195927j:plain

-0.021です。あんまり関連性無いのですね。

セリーグ・パリーグ x 関東・非関東はどうでしょうか?

f:id:cross_hyou:20191024200327j:plain

今回は以上です。

 

プロ野球の勝敗データの分析3 - R言語のtapply関数でクロス表を作成して、chisq.test関数でカイ二乗検定。

 

www.crosshyou.info

 の続きです。

今回はクロス表を作って、カイ二乗検定をしてみます。

勝利数を

Aクラス・Bクラス x セリーグ・パリーグ、

Aクラス・Bクラス x 関東・非関東

セリーグ・パリーグ x 関東・非関東

この3つのクロス表で分類してカイ二乗検定をします。

まずは、Aクラス・Bクラス x セリーグ・パリーグからやってみます。

tapply関数でクロス表は作成できます。

f:id:cross_hyou:20191024062459j:plain

こうなりました。Aクラスのセリーグの球団の勝利数は217です。

chisq.testでこのクロス表に偏りがあるかどうかを調べます。

f:id:cross_hyou:20191024062810j:plain

p-value = 0.6902 > 0.05 ですから、Aクラス・Bクラスとセリーグ・パリーグに関連性はありません。

次は、Aクラス・Bクラス x 関東・非関東を調べてみます。

f:id:cross_hyou:20191024063200j:plain

あ、Aクラスでは、関東・非関東で勝利数は216, 228と同じくらいなのに、Bクラスでは、264, 128と2倍以上の開きがあります。これは関連性がありそうです。

f:id:cross_hyou:20191024063435j:plain

p-value = 4.863e-08 < 0.05 ですから、Aクラス・Bクラスと関東・非関東は関連性がありますね。Bクラスでは、非関東の球団が勝利数が多いです。

実際のクロス表と、関連性がなかった場合の期待値のクロス表を比較してみます。

f:id:cross_hyou:20191024064240j:plain

Aクラス関東、Bクラス非関東 の勝利数が期待値よりも多いことがわかります。

次は、セリーグ・パリーグ x 関東・非関東のクロス表です。

f:id:cross_hyou:20191024064636j:plain

セリーグでは、関東・非関東の勝利数は207で同数ですが、パリーグでは非関東の勝利数が273, 関東の勝利数が149と大きく違います。

f:id:cross_hyou:20191024064856j:plain

p-value = 1.745e-05 < 0.05 なので有意ですね。セリーグ・パリーグと関東・非関東は関連性があります。

f:id:cross_hyou:20191024065245j:plain

実際のクロス表と、関連性が無かった場合の期待値を比較すると、上のようになります。セリーグ・関東、パリーグ・非関東の勝利数が期待値よりも実際は多いことがわかります。

今回は以上です。