www.crosshyou.info

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

プロ野球の勝敗データの分析2 - R言語で勝利数の平均値の違いを調べる。AクラスとBクラスでは有意な違いがある。

 

www.crosshyou.info

 の続きです。

前回は、セリーグ、パリーグで勝利数の平均値に有意な違いは無いことがわかりました。今回は、関東の球団かそうじゃないか、AクラスかBクラスかで勝利数に違いがあるかを調べます。

f:id:cross_hyou:20191023194613j:plain

var.test関数でvarianceが同じかどうか確認します。

f:id:cross_hyou:20191023194729j:plain

p-value = 0.2262 > 0.05ですから、分散に違いがあるとは言えないです。

分散に違いは無いので、t.test関数で平均値に違いがあるか調べます。

f:id:cross_hyou:20191023194939j:plain

p-value = 0.5409 > 0.05 ですから、平均値に違いがあるとは言えないです。

関東球団の勝利数の平均値は、71.20で関東でない球団の平均値は、68.57です。

それでは、AクラスとBクラスでの勝利数に違いがあるか調べましょう。違いが無かったらびっくりですよね。

f:id:cross_hyou:20191023195339j:plain

Aクラスの平均勝利数は74、Bクラスの平均勝利数は65.3です。9ぐらい差があるのですね。

まずは、var.test関数で分散が同じかどうか確認します。

f:id:cross_hyou:20191023195530j:plain

p-value = 0.9181 ですので、二つの変数の分散に有意な違いはありません。

t.test関数で平均値に違いがあるかどうか調べます。

f:id:cross_hyou:20191023195745j:plain

p-value = 0.006636 < 0.05 ですから、AWとBWの平均値には有意な違いがあります。

Aクラスチームの勝利数とBクラスチームの勝利数では有意な違いがあることが確認できました。

今回は以上です。

 

プロ野球の勝敗データの分析1 - R言語のvar.test関数とt.test関数で二つの変数の分散・平均値が同じかどうかを調べる。

今回はプロ野球の勝敗データを分析してみようと思います。

npb.jpこのサイトにあった

f:id:cross_hyou:20191023072254j:plain

の画像にある勝敗データを使おうと思います。

まず、Excelにデータを転記しました。

f:id:cross_hyou:20191023075228j:plain

 

関東にある球団か、そうでないかという変数、Kantouと各リーグ上位をAクラス、下位をBクラスというClassを加えました。

これをread.csv関数でR言語に読込ませます。

f:id:cross_hyou:20191023075403j:plain



できました。

ここから、いろいろ分析の練習をしましょう。

参考図書は、Michael J. Crawley の Statistcs: An introduction Using R です。

 

Statistics: An Introduction Using R

Statistics: An Introduction Using R

 

 まず、セリーグとパリーグで勝利数の平均値を比べましょう。

f:id:cross_hyou:20191023074243j:plain

平均値はmean関数ですね。

f:id:cross_hyou:20191023074347j:plain

セリーグの勝利数の平均値が69, パリーグは70.33です。ほとんど同じですね。

平均値を比較する前に分散が同じかどうかをテストしないといけないです。var.test関数でテストします。

f:id:cross_hyou:20191023074649j:plain

p-valueが0.7035と0.05よりも大きいです。二つの分散に違いは無い、という帰無仮説は棄却できないです。つまり、二つの変数の分散は同じです。

二つの変数の分散が同じとき、平均値を比較するには、t.test関数です。

f:id:cross_hyou:20191023075038j:plain

p-valueは0.7271ですので、二つの変数の平均値に有意な違いは無い、ということです。

今回は以上です。

 

都道府県別の老人福祉費と児童福祉費の分析10 - R言語で、老人福祉費 / 児童福祉費 の回帰分析その2 やっぱり面積だけが関係あり。

 

www.crosshyou.info

 今回は前回の続きで、こんどは人口、面積、県内総生産の対数値、logPop, logArea, logGDPで回帰分析をしてみたいと思います。前回は北海道の面積が他と比べて圧倒的に大きかったので、その影響が大きく出ていました。今回はどうでしょうか?

f:id:cross_hyou:20191023062902j:plain

logPop:logArea:logGDPは不要ですね。

f:id:cross_hyou:20191023063106j:plain

model2を見てみましょう。

f:id:cross_hyou:20191023063213j:plain

logPop:logAreaは不要ですね。

f:id:cross_hyou:20191023063353j:plain

model3を採用します。

f:id:cross_hyou:20191023063526j:plain

logArea:logGDPは不要です。削除しましょう。

f:id:cross_hyou:20191023063714j:plain

model4を採用します。

f:id:cross_hyou:20191023063825j:plain

logPop:logGDPは不要のようです。

f:id:cross_hyou:20191023064019j:plain

model5を採用します。

f:id:cross_hyou:20191023064136j:plain

I(logArea^2)を削除しましょう。

f:id:cross_hyou:20191023064335j:plain

model6を採用します。

f:id:cross_hyou:20191023064448j:plain

I(logPop^2)はいらない感じです。

f:id:cross_hyou:20191023064650j:plain

model7を採用します。

f:id:cross_hyou:20191023064902j:plain

I(logGDP^2)も削除しましょう。

f:id:cross_hyou:20191023065050j:plain

model8を採用します。

f:id:cross_hyou:20191023065157j:plain

logPopを削除します。

f:id:cross_hyou:20191023065328j:plain

model9を採用します。

f:id:cross_hyou:20191023065509j:plain

logGDPを削除します。

f:id:cross_hyou:20191023065635j:plain

model10を採用します。

f:id:cross_hyou:20191023065759j:plain

対数値で回帰分析をしても、同じように面積だけが有意な変数となりました。

model10の残差プロットを見てみます。

f:id:cross_hyou:20191023070015j:plain

f:id:cross_hyou:20191023070034j:plain

散布図と回帰直線も描きましょう。

f:id:cross_hyou:20191023070246j:plain

f:id:cross_hyou:20191023070258j:plain

今回は以上です。

 

都道府県別の老人福祉費と児童福祉費の分析9 - R言語で、老人福祉費 / 児童福祉費 という比率を計算。沖縄県以外はどこも老人福祉費のほうが多い。

 

www.crosshyou.info

 の続きです。

今回は、老人福祉費 / 児童福祉費 という比率を計算してみます。

まず、老人福祉費と児童福祉が同じ都道府県の順番で並んでいるか確認します。

f:id:cross_hyou:20191019104251j:plain

== で同じかどうかをテストしました。すべてTRUEなので同じですね。sumでTRUEの数を数えると、47ですから47都道府県すべて同じ順番です。

それでは比率を計算します。

f:id:cross_hyou:20191019104445j:plain

沖縄県は比率が1.0以下ですから老人福祉費よりも児童福祉費のほうが多いのですね。その他の都道府県はすべて比率は1.0以上です。新潟県が3.27で一番高い比率です。

summary関数で平均値や中央値を調べます。

f:id:cross_hyou:20191019104826j:plain

中央値は2.1780、平均値は2.1671です。老人福祉費が児童福祉費の2倍強というのが平均ですね。

3つのグラフを描いてみます。

f:id:cross_hyou:20191019105059j:plain

f:id:cross_hyou:20191019105109j:plain

山型の分布です。

それでは、この老人福祉費 / 児童福祉費, OldChildをavgPop, avgArea, avgGDPの3つの変数で重回帰分析をしてみましょう。

まずは、一番複雑なモデルからスタートします。

f:id:cross_hyou:20191019105553j:plain

p-valueが0.1715と0.05よりも大きいですから、このモデルは有意ではないということです。老人福祉費 / 児童福祉費 は人口、面積、県内総生産では説明がつかないということですね。一応、step関数でモデルを単純化してみます。

f:id:cross_hyou:20191019110138j:plain

以下省略して、summaryを表示します。

f:id:cross_hyou:20191019110209j:plain

avgPop:avgGDPのp値は0.0866ですから不要かもですね。確認します。

f:id:cross_hyou:20191019110458j:plain

Pr(>F)の値が0.08664と0.05よりも大きいですから、model3を採用します。

f:id:cross_hyou:20191019110639j:plain

p-valueは0.04536と0.05より小さいので有意なモデルです。avgPopはいらなさそうです。

f:id:cross_hyou:20191019110827j:plain

model3とmodel4に有意な差は無いです。model4を採用します。

f:id:cross_hyou:20191019110957j:plain

p-valueは0.03841と0.05より小さいので有意なモデルです。avgGDPもいらなさそうですね。

f:id:cross_hyou:20191019111149j:plain

p値は0.4378と0.05よりも大きいので、model5を採用します。

f:id:cross_hyou:20191019111307j:plain

p-valueは0.01448と0.05よりも小さいので有意なモデルです。このmodel5はavgAreaが変数の単回帰モデルですね。I(avgArea^2)を追加してみます。

f:id:cross_hyou:20191019111544j:plain

p値が0.1762と0.05よりも大きいので、I(avgArea^2)を追加しても意味ないということですね。model5が最終的なモデルです。

散布図と回帰直線を描きます。

f:id:cross_hyou:20191019111913j:plain

f:id:cross_hyou:20191019111923j:plain

散布図の一番右のプロット、北海道が大きく影響しているようですね。

北海道を除外したら結果はまた変わるかもしれません。もしくは対数値の人口、面積、県内総生産で回帰分析したら結果はかわるかもしれないですね。

今回は以上です。

 

都道府県別の老人福祉費と児童福祉費の分析8 - R言語で一人当り児童福祉費を重回帰分析。東京都を含めるか除外するかでモデルが違ってくる。

 

www.crosshyou.info

 の続きです。

今回は一人当りの児童福祉費(ChildpM)を重回帰分析します。

説明変数は対数をとった面積(logArea)と対数をとった県内総生産(logGDP)です。

まずは、一番複雑なモデルから。

f:id:cross_hyou:20191017191555j:plain

logArea:logGDPの交差項は不要のようです。削除します。

f:id:cross_hyou:20191017191759j:plain

p値は0.9481です。model1もmodel2も有意な違いは無いです。より単純なmodel2を調べます。

f:id:cross_hyou:20191017192007j:plain

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

f:id:cross_hyou:20191017192206j:plain

model2とmodel3では有意な違いはありません。model3をさらに調べます。

f:id:cross_hyou:20191017192335j:plain

logAreaは不要ですね。削除します。前回の一人当り老人福祉費ではlogAreaは有意な変数でしたが、一人当りの児童福祉費では都道府県の面積は関係無いことがわかりました。

f:id:cross_hyou:20191017192721j:plain

p値が0.9822です、model3とmodel4で有意な差はありません。

model4をみてみましょう。

f:id:cross_hyou:20191017192941j:plain

これで、切片、logGDP、I(logGDP^2)の3つとも有意なモデルです。

logGDPをいろいろな値にして予測値を算出してみます。

f:id:cross_hyou:20191017193718j:plain

f:id:cross_hyou:20191017193732j:plain

こうなりました。散布図の一番右端の点、東京都ですがこれが影響して回帰曲線が放物線状になっていますね。東京都を除外すれば、単純に直線になるのではないでしょうか?やってみましょう。

f:id:cross_hyou:20191017194306j:plain

まずは、上のようにして東京都を除外したベクトルを作成しました。

後は同じ手順です。まずは一番複雑なモデルからやりましょう。

f:id:cross_hyou:20191017194545j:plain

exTArea:exTGDPはいらないです。削除します。

f:id:cross_hyou:20191017194743j:plain

exTm2を採用します。

f:id:cross_hyou:20191017194859j:plain

I(exTArea^2)は不要ですね。

f:id:cross_hyou:20191017195050j:plain

exTm3を採用します。

f:id:cross_hyou:20191017195215j:plain

exTAreaは必要ないようです。

f:id:cross_hyou:20191017195355j:plain

exTm4を採用します。

f:id:cross_hyou:20191017195522j:plain

これで、切片、exTGDP、I(exTGDP^2)の3つが有意になりました。2乗項も残りましたね。散布図と回帰曲線を描きましょう。

f:id:cross_hyou:20191017200011j:plain

f:id:cross_hyou:20191017200022j:plain

最後に東京都有りの散布図と回帰曲線、東京都無しの散布図と回帰曲線を並べて描いてみます。

f:id:cross_hyou:20191017200501j:plain

f:id:cross_hyou:20191017200512j:plain

東京都を入れないほうが回帰曲線のあてはまりがいいようです。

実際に東京都有りのmodel4のAdjusted R-squaredは0.5681

東京都無しのexTm4のAdjusted R-squaredは0.6873と東京都無しのほうが高いです。

今回は以上です。

 

都道府県別の老人福祉費と児童福祉費の分析7 - R言語で重回帰分析。一人当りの老人福祉費は面積が大きい県ほど多い。GDPの大きい県ほど少ない。

 

www.crosshyou.info

 の続きです。

今回は一人当りの老人福祉費を面積(対数をとったもの)と県内総生産(対数をとったもの)の二つの変数で回帰分析してみたいと思います。

まずは、それぞれの変数との散布図を描いてみます。

f:id:cross_hyou:20191016190159j:plain

f:id:cross_hyou:20191016190211j:plain

面積は関係なさそうですが、GDPは関係ありそうですね。

lm関数で重回帰分析のモデルを作り、調べていきます。

まずは、交差項も2乗項も入ったmaximumモデルからスタートします。

f:id:cross_hyou:20191016190613j:plain

logArea:logGDPの交差項のp値は0.2071ですので削除しましょう。

f:id:cross_hyou:20191016190818j:plain

anova関数でmodel1とmodel2を比較しました。p値が0.2071ですのでmodel2でいいですね。中身をみてみましょう。

f:id:cross_hyou:20191016191037j:plain


I(logArea^2)は必要なさそうですね。削除してみましょう。

f:id:cross_hyou:20191016191223j:plain

p値が0.612ですから、model2とmodel3は有意な差は無いです。従いまして、より単純なmodel3を採用します。summary関数で見てみます。

f:id:cross_hyou:20191016191442j:plain

あ、これですべての変数が有意になりました。モデル全体のp-valueは2.482e-10ですから有意なモデルです。Adjusted R-squaredは0.643ですから、都道府県別の一人当り老人福祉費は、面積と県内総生産、県内総生産の2乗で64.3%が説明できると言えます。

logAreaの係数は5.790とプラスですから、面積が大きい県ほど、一人当り老人福祉費は多いということですね。logGDPに関しては、logGDPの係数は-147, 2乗の項の係数は9.866ですから、

9.866logGDP^2 - 147.078logGDP = 9.866logGDP(logGDP - 14.907569)

と変換できますので、14.907569の半分の7.5ぐらいまでは、logGDPが0kら7.5ぐらいまではだんだんと減少して、それからはだんだんと増加していく、ということですね。

Y =  9.866 * X^2 - 147.078のグラフを描いてみましょう。

f:id:cross_hyou:20191016193304j:plain

f:id:cross_hyou:20191016193342j:plain

logGDPは6.25から8.00の範囲ですからこの範囲で考えると、6.25から7.5ぐらいまではlogGDPが大きいほど、一人当り老人福祉費は少なく、7.5から8.0の間ではlogGDPが大きいほど一人当り老人福祉費も大きいということですね。

model3の残差プロットを描きましょう。

f:id:cross_hyou:20191016193821j:plain

f:id:cross_hyou:20191016193836j:plain

今回は以上です。

 

日銀の短観データの分析6 - R言語で棒グラフと1標準誤差、信頼区間を表示する。

 

www.crosshyou.info

 の続きです。

今回は棒グラフと信頼区間を表示してみたいと思います。

 

Statistics: An Introduction Using R

Statistics: An Introduction Using R

 

 を参考図書にしてやってみます。

まず、Sector別の短観の平均値をtapply関数とmean関数で計算します。

f:id:cross_hyou:20191014142151j:plain

これをbarplot関数で棒グラフにします。

f:id:cross_hyou:20191014142749j:plain

f:id:cross_hyou:20191014142803j:plain

次に信頼区間を表示する関数を作成します。これがMichael J. Crawleyの本からの関数です。

f:id:cross_hyou:20191014143403j:plain

上の関数でyが棒グラフの部分です。これは今回はsectorbetsuです。zが信頼区間の大きさです。今回は、1standard errorを使います。

aov関数とsummary関数で1standard errorを確認します。

f:id:cross_hyou:20191014143953j:plain

このANOVA表から127がpooled error varianceだとわかります。

こんどは、Sectorがそれぞれ何個あるかをtable関数で確認します。

f:id:cross_hyou:20191014144427j:plain

製造業は228、全産業は12、非製造業は156です。なので、それぞれの1standard errorは、

f:id:cross_hyou:20191014144806j:plain

この3つの値が1standard errorになります。

これで、1標準誤差の表示ができます。

f:id:cross_hyou:20191014145244j:plain

f:id:cross_hyou:20191014145255j:plain

あれれ?三つの標準誤差の線がそれぞれの棒に表示されてしまいまたね。。

あの関数はすべての棒グラフで同じデータ数でないとだめなんですね。

あの関数を改良します。

f:id:cross_hyou:20191014150720j:plain

zもz[i]としないといけなかったですね。

これやってみましょう。

f:id:cross_hyou:20191014151055j:plain

f:id:cross_hyou:20191014151029j:plain

できました!

ちなみに関数をつかわないでarrows関数でひとつひとつ追加するのはこちらです。

f:id:cross_hyou:20191014151413j:plain

f:id:cross_hyou:20191014151427j:plain

1標準誤差をグラフに表示できましたので、今度は95%の信頼区間を表示してみましょう。

まずは、製造業、全産業、非製造業のそれぞれの信頼区間を計算します。

f:id:cross_hyou:20191014152027j:plain

このciをerror_bars2関数に使います。

f:id:cross_hyou:20191014152729j:plain

f:id:cross_hyou:20191014152748j:plain

こうしてグラフで95%信頼区間を表示すると、製造業と全産業、全産業と非製造業には違いは無いかもしれませんが、製造業と非製造業には明らかな違いがあることがわかります。
今回は以上です。