crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

国立科学博物館の標本データベースの日本の鳥類の標本の分析5 - ウグイスとスズメを比べると、スズメは北海道が多い。1~3月はスズメが多く、10~12月はウグイスが多い。

 

www.crosshyou.info

 の続きです。

今回はウグイスとスズメについて調べてみます。

まずは、ウグイス、スズメだけの作業用のデータフレームを作成します。

f:id:cross_hyou:20191209074822p:plain

ウグイスは124、スズメは121の標本があります。

それでは、都道府県別の標本数を見てみます。table関数を使います。

f:id:cross_hyou:20191209075202p:plain

う~ん、どうなんでしょうか。。正直この表を眺めてもよくわからないですね。

barplot関数を使って棒グラフを描きます。

f:id:cross_hyou:20191209080330p:plain

f:id:cross_hyou:20191209080341p:plain

どうでしょうか?

都道府県の数が多いのでもう少し集約しましょう。

f:id:cross_hyou:20191209082246p:plain

これでもう一度、都道府県別に集約してみます。

f:id:cross_hyou:20191209082503p:plain

これだと、ウグイスは鹿児島が多く、スズメは北海道が多いとわかりますね。

カイ二乗検定をしてみます。chisq.test関数です。

f:id:cross_hyou:20191209082644p:plain

p値が0.005635ですから、ウグイスとスズメでは違いがあるということですね。

上の表のどの箇所が有意に違うのか見てみます。

f:id:cross_hyou:20191209082924p:plain

調整済み残差を見てみます。kaiというカイ二乗検定の結果の中に、stdresという名前で格納されていますので、kai$stdresで呼び出せます。

f:id:cross_hyou:20191209083328p:plain

調整済み残差で見ると、絶対値で2以上のところが統計的に有意な違いがあるところです。その他と北海道ですね。スズメはウグイスと比較すると、北海道で採集された標本が有意に多いということですね。

年別ではどうでしょうか?taable関数です。

f:id:cross_hyou:20191209083851p:plain

この表を見ただけではよくわからないですね。barplot関数を使って棒グラフにしてみます。

f:id:cross_hyou:20191209084137p:plain

f:id:cross_hyou:20191209084149p:plain

棒グラフにしてみました。スズメは1930年代、ウグイスは1970年か80年代に多いような気がします。年代で区切ってみましょう。

f:id:cross_hyou:20191209085045p:plain

round関数で引数を-1にすると一桁上の数で丸めてくれます。-4.9を引いてから一桁上で丸めれば10年ごとの年代別になります。すこしわかりやすくなりました。ウグイスはどの年代にも標本がありますが、スズメは1890年代、1940年代、1980年代は標本がありません。

月別にも集計してみます。

f:id:cross_hyou:20191209085706p:plain

これも一見しただけではよくわからないですね。棒グラフを描きます。

f:id:cross_hyou:20191209090043p:plain

f:id:cross_hyou:20191209090052p:plain

1、2、3月はスズメが多くて、10、11、12月はウグイスが多いようですね。

12か月を1~3、4~9、10~12の3つに分けて集計してみましょう。

f:id:cross_hyou:20191209090534p:plain

こうして3つのカテゴリーにしました。

f:id:cross_hyou:20191209090703p:plain

棒グラフにしてみます。

f:id:cross_hyou:20191209090832p:plain

f:id:cross_hyou:20191209090850p:plain

4月から9月は同じくらいの差で、1、2、3月はスズメ、10、11、12月はウグイスが多いとはっきりわかりますね。この差は有意な差なのか、カイ二乗検定をしてます。

f:id:cross_hyou:20191209091058p:plain

p値が0.0006716です。0.05よりも有意な差があるということですね。

今回は以上です。

 

国立科学博物館の標本データベースの日本の鳥類の標本の分析4 - メジロは東京、ヒヨドリは東北の標本が多く、2,3,4月はヒヨドリが多く、1973年はヒヨドリがとっても多かった。

 

www.crosshyou.info

 の続きです。

今回はメジロとヒヨドリでは、標本の年、月、都道府県に差があるか調べてみます。

まずは、メジロとヒヨドリだけの作業用のデータフレームを作ります。

f:id:cross_hyou:20191207125100p:plain

Nameには、アオアシシギなど不要のファクタ水準があるので、削除します。

f:id:cross_hyou:20191207125333p:plain

as.character関数で文字列にして、as.factorでファクタに戻しています。

では、まずは、都道府県を見てみましょう。

f:id:cross_hyou:20191207125640p:plain

愛知県とか愛媛県とかメジロもヒヨドリも0の都道府県が何個かありますね。整理しましょう。

f:id:cross_hyou:20191207130015p:plain

すこしすっきりしました。眺めると、ヒヨドリは岩手、宮城、秋田、青森など東北が多くて、メジロは東京が多いですね。

それぞれの東北で採取された標本数を調べます。

まずは、東北と東北以外というファクタを作成します。

f:id:cross_hyou:20191207131154p:plain

岩手県、宮城県、山形県、秋田県、青森県を東北にして、それ以外を東北以外にしました。これでクロス表を作ります。

f:id:cross_hyou:20191207131402p:plain

クロス表を作成したら、chisq.test関数でカイ二乗検定をします。

f:id:cross_hyou:20191207131539p:plain

p値が9.184e-05ですから東北か東北でないかはヒヨドリ、メジロの標本数に関係があります。ヒヨドリは東北で採取された標本が多いということですね。

同じ要領で東京ファクターを作成してみましょう。

f:id:cross_hyou:20191207132144p:plain

このように、東京以外と東京都にわけました。

それではやってみます。

f:id:cross_hyou:20191207132414p:plain

p値は0.01344で0.05よりも小さいので、メジロとヒヨドリでは東京か東京以外かという標本数に有意な違いがある、ということですね。

今度は年に違いがあるかどうかを調べます。

f:id:cross_hyou:20191207133221p:plain

どうでしょうか。。。これは年の数が多すぎてよくわからないですね。。

barplot関数でグラフにしてみます。

f:id:cross_hyou:20191207133432p:plain

f:id:cross_hyou:20191207133448p:plain

1973年、ヒヨドリは36羽も標本になっています。突出して多いですね。何かあったんでしょうか?

月別はどうでしょうか?

f:id:cross_hyou:20191207134107p:plain

なんとなくヒヨドリとメジロでは採集された月に違いがある感じがします。

barplot関数で視覚化します。

f:id:cross_hyou:20191207134507p:plain

f:id:cross_hyou:20191207134518p:plain

2、3、4月はヒヨドリが多いですが、それ以外の月はメジロが多いですね。

2、3、4月とそれ以外の月で二分してクロス表にしてみましょう。

f:id:cross_hyou:20191207135940p:plain

これでクロス表を作成してカイ二乗検定をします。

f:id:cross_hyou:20191207140259p:plain


p値が6.822e-06と0.05より小さいのこのクロス表には有意な偏りがあります。ヒヨドリはメジロと比べると2,3,4月に採集された数が有意に多いことがわかります。

今回は以上です。

 

国立科学博物館の標本データベースの日本の鳥類の標本の分析3 - Mokuのデータが怪しいことに気が付いた。

 

www.crosshyou.info

 の続きです。

 今回は、Moku(目), Zoku(属), Shu(種)について調べます。

まず、Mokuは何種類あるか、標本数の多いMokuは何か調べてみましょう。

levels関数とlevels関数でMokuの種類数を調べます。

f:id:cross_hyou:20191130102933p:plain

Mokuは214種類ですね。どのMokuが一番多いか、summary関数で見てみます。

f:id:cross_hyou:20191130105016p:plain

sort関数で小さい順に並び替え、rev関数で大きい順にして、head関数で上位6を表示しています。PasseriformesというMokuが一番多いです。

Zokuも同じように調べます。まずは、何種類のZokuがあるでしょうか?

f:id:cross_hyou:20191130103459p:plain

232種類です。

どの属が一番多いでしょうか?

f:id:cross_hyou:20191130105252p:plain

EmberizaというZokuが一番多くて、557個ありました。

同じように、Shu(種)を調べましょう。

f:id:cross_hyou:20191130105404p:plain

Shuの数は382種類、japonicusというのが212で一番多いです。おそらくこれがメジロなのでしょう。確認します。

f:id:cross_hyou:20191130104411p:plain

idx <- df$Shu == "japonics"という行で論理ベクトルをつくり、これでdfの中からShuがjapinicusのだけを検索しています。head関数で始めの6行だけ表示しています。やっぱりメジロですね。メジロのMoku,ZokuはZosteroposというので、Mokuの一番多いPasseriformesでは無いのですね。

二番目に多いShuのamaurotisは何という鳥でしょうか?

f:id:cross_hyou:20191130110314p:plain

amaurotisはヒヨドリのことでしたね。ヒヨドリもMokuは一番多いPasseriformesではないですね。

それでは、Passeriformesにはどんな鳥がいるか見てみましょう。

f:id:cross_hyou:20191130111030p:plain

あれ?メジロ、ヒヨドリが入っています。おかしいですね。。

もとのCSVファイルをもう一度みてみましょう。

f:id:cross_hyou:20191130111904p:plain

こんなふうにメジロでもZosteriposになっているのもあれば、Passerifermosになっているのもありました。なんでですかね。。。Mokuはちょっと信用できないってことですね。Zokuはどうでしょうか?一番数の多かったEmberizaを見てみます。

f:id:cross_hyou:20191130112513p:plain

Emberizaに属するのはアオジ、ホオジロ、カシラダカなどとわかりました。

今回は以上です。

 

国立科学博物館の標本データベースの日本の鳥類の標本の分析2 - 月と日付のデータを整える。8月に採取された標本が一番少ない。

 

www.crosshyou.info

 の続きです。今日は月と日付のデータを整えます。

Monthを確認します。

f:id:cross_hyou:20191128191015p:plain

空白、**, 20は明らかにおかしいですね。NAにします。空白は1番目、**は2番目、20は8番目です。

f:id:cross_hyou:20191128191352p:plain

こうして1から12までにしました。これを文字列型にしてから数値型にします。

f:id:cross_hyou:20191128191640p:plain

summaryの結果が度数表ではなく、平均値などになっています。数値型になりました。

Dayも同じようにして整えます。

f:id:cross_hyou:20191128191911p:plain

Dayにも空白と**がありますね。これをNAにします。

f:id:cross_hyou:20191128192118p:plain

はい、空白と**がなくなりました。これを同じように文字列に変換して数値型に変換します。

f:id:cross_hyou:20191128192602p:plain

はい。できました。

それではMonthをヒストグラムにしてどの月に採集された標本が多いか調べます。

自作したdosuu関数を使います。

f:id:cross_hyou:20191128193816p:plain

f:id:cross_hyou:20191128193827p:plain
10月、11月、7月が多いですね。8月が一番少ないです。8月は夏休みだからみんな採集に出かけるかと思っていましたがそうじゃないんでしょうか?

Dayもヒストグラムで見てみましょう。自作したdosuu関数を使います。

f:id:cross_hyou:20191128193529p:plain

f:id:cross_hyou:20191128193543p:plain

バラバラって感じですね。

今回は以上です。

 

国立科学博物館の標本データベースの日本の鳥類の標本の分析1 - メジロの標本、北海道の標本、1930年代の標本が一番多い。

国立科学博物館の標本データベースからCSVファイルをダウンロードできることを発見しましたので、データをダウンロードして遊んでみようと思います。

f:id:cross_hyou:20191123150934p:plain

詳細検索(鳥類) | 標本・資料統合データベース

から日本の標本を検索してみました。

f:id:cross_hyou:20191123151100p:plain

こんなCSVファイルがダウンロードできます。

f:id:cross_hyou:20191123151132p:plain

もとのファイルからいらない列を削除してこのようなファイルにしました。

これをread.csv関数でR言語で読み込んで分析というか、どんな鳥の標本が多いのか、都道府県はどこが多いかなどを調べます。

f:id:cross_hyou:20191123151839p:plain

まずは、Name, 和名が何種類あるか調べましょう。table関数とlength関数です。

f:id:cross_hyou:20191123152044p:plain

409種類です!思ったよりも多いです。どの種類が多いのか調べてみます。

f:id:cross_hyou:20191123152504p:plain

tapply関数でNameのデータ数をName別にlength関数で数えました。

メジロの標本が215で一番多いのですね。ヒヨドリが189個、ウグイスが124、スズメが121、アオジが119、カワラヒワが118です。アオジって初めて聞きました。スズメよりちょっと大きい鳥だそうです。

都道府県ではどこが多いでしょうか?summary関数で見てみます。

f:id:cross_hyou:20191123153345p:plain

 

あら、空白や、ーや、なし、というのや香川県?とか伊豆諸島とか小笠原諸島とかありますね。こういうのを整理しましょう。

まず、levelの確認をします。

f:id:cross_hyou:20191123154340p:plain

1番目が空白、2番目がー、3番目がなし、53番目が福岡県or佐賀県です。これを不明にしましょう。

f:id:cross_hyou:20191123154906p:plain

伊豆諸島を静岡県に、小笠原諸島を東京都に、大阪を大阪府にします。

f:id:cross_hyou:20191123155803p:plain

香川県?、青森県?、福岡県?をそれぞれ修正します。

f:id:cross_hyou:20191123160343p:plain

47都道府県と不明の合わせて48のlevelになりました。

それでは、都道府県ではどこが標本多いか見てみましょう。

f:id:cross_hyou:20191123160631p:plain

北海道の標本が1203で一番多いです。2番は東京都で819です。3番が長野県で812、4番が宮城県で800、不明が5番目で750です。山口は1つ、広島は2つなどわかりました。

年も調べましょう。

f:id:cross_hyou:20191123160924p:plain

年は1869年から2018年までです。NAは484ですね。

数値データなので、ヒストグラムでみてみましょう。

f:id:cross_hyou:20191123161409p:plain

f:id:cross_hyou:20191123161421p:plain

1930年代の標本が一番多いようです。度数分布表で確認しましょう。

以前作った、度数分布表の自作関数を使います。

f:id:cross_hyou:20191123161747p:plain

こういう関数ですね。最小値、最大値、幅を入力します。

Yearは1869年から2018年までなので、最小値を1860, 最大値を2020, 幅を10にします。

f:id:cross_hyou:20191123162105p:plain

1930年代が1番多くて1477、1920年代が1259で2番、1950年代が3番で953、2000年代が4番で949、5番目が1970年代の765です。

今回は以上です。

 

内閣支持率のデータ分析2 - R言語のbarplot関数の練習。beside = TRUE/FALSE とlegend.text = TRUEが大事

 

www.crosshyou.info

 の続きです。

今回はbarplot関数の練習をしてみようと思います。

習うより慣れろの精神でいろいろやってみます。

まずはデータを確認します。

f:id:cross_hyou:20191123114804p:plain

1列目は文字(ファクター)で、2、3、4列目が数値データですね。

まずは、barplot(df)としてみます。

f:id:cross_hyou:20191123115002p:plain

エラーになりました。'height'はベクトルか行列でなければなりません。とのことです。

それでは、1列目を削除して行列にしてからbarplot関数をやってみます。

f:id:cross_hyou:20191123115334p:plain

1行目、mx <- df[ , -1] で1列目のSourceを除いたデータフレームをつくり、それを2行目のas.matrix関数で行列にして、rownames関数でSourceを列名にしてclass関数で行列になったかどうかを確認しています。行列になりましたね。

それでは、barplot関数をやってみます。

f:id:cross_hyou:20191123115735p:plain

f:id:cross_hyou:20191123115749p:plain

なるほど、列でまとめて積み重ねたグラフになるのですね。そうしたら、行でまとめたグラフはt関数で縦横を転換すればいいのかな?

f:id:cross_hyou:20191123120030p:plain

f:id:cross_hyou:20191123120041p:plain

おお、予想どおりですね。Totalを除いてやってみましょう。

f:id:cross_hyou:20191123120315p:plain

f:id:cross_hyou:20191123120332p:plain

積み重ね俸グラフでなくて、横に並んだ棒グラフにしてみます。たぶん、何か引数で指定すればいいと思いますので、ヘルプ画面で確認します。

f:id:cross_hyou:20191123120825p:plain

f:id:cross_hyou:20191123120835p:plain

この下に各引数の説明が書いてあって、どうやらbeside = TRUEにすると横に並んだ俸グラフになるらしいです。

やってみましょう。

f:id:cross_hyou:20191123121141p:plain

f:id:cross_hyou:20191123121150p:plain

うまくいきましたね!

上のグラフでは、色の濃いのと薄いのでどっちがForでどっちがAgainstかわからにですね。どっちがどうかというのも表示したいですよね。。。ヘルプをよく読んだら、legend.text = TRUEってするといいらしいです。やってみます。

f:id:cross_hyou:20191123121749p:plain

f:id:cross_hyou:20191123121802p:plain

できましたね!色の濃い棒がForで、色の薄い棒がAgainstでした。

今回は以上です。

内閣支持率のデータ分析1 - 各社で支持率は違うか、支持率の信頼区間をR言で調べる。

安倍晋三首相の在任日数が憲政史上最長になりました。

そこで今回は、各報道機関の世論調査、内閣支持率がどうなっているかを調べてみました。

f:id:cross_hyou:20191120192542p:plain

こちらは、NHKの世論調査です。

http://www.nhk.or.jp/senkyo/shijiritsu/

 

2019年11月8日から10日の調査で、1253人のうち、支持するが47%, 支持しないが35%です。

f:id:cross_hyou:20191120193219p:plain

こちらはFNNの調査です。

https://www.fnn.jp/posts/00427442CX/201911181205_CX_CX

11月16日と17日に1039人に調査して、支持が45.1%, 不支持が37.7%でした。

f:id:cross_hyou:20191120193906p:plain

f:id:cross_hyou:20191120193951p:plain

こちらは、朝日新聞の世論調査です。

https://www.asahi.com/articles/ASMCK5RS3MCKUZPS009.html

11月の16日と17日に1998人に調査して、支持が44%、支持しないが36%でした。

f:id:cross_hyou:20191120194601p:plain

f:id:cross_hyou:20191120194618p:plain

こちらはTBSの世論調査です。

https://news.tbs.co.jp/newsi_sp/yoron/backnumber/20191109/q1-1.html

11月の9日と10日に調査して、1139人のうち支持が54.3%, 不支持が42.4%でした。

f:id:cross_hyou:20191120195830p:plain

f:id:cross_hyou:20191120195805p:plain

これは日本テレビの調査です。

https://www.ntv.co.jp/yoron/

11月15日から17日の調査で、1051人の回答で、支持が49%、支持しないが36%でした。

これらをまとめて表にしてみました。

f:id:cross_hyou:20191120200630p:plain

このデータをR言語で読込みます。read.csv関数です。

f:id:cross_hyou:20191120200828p:plain

一番支持率が高かったのがTBS、低かったのがAsahiでしたので、この二つの会社のクロス表を作ってカイ二乗検定をします。

f:id:cross_hyou:20191120201428p:plain

まずは、このようにAsahiとTBSのマトリックスを作りました。

これをカイ二乗検定します。chisq.test関数です。

f:id:cross_hyou:20191120201716p:plain

p-valueが0.5637ですから、AsahiとTBSの世論調査に有意な違いは無い、ということですね。支持率の一番高いところと低いところに有意な差が無いということですから、各社で支持率が違うということは無いです。

 

それでは、支持率はどのくらいの範囲にあるのでしょうか?Binomial Testで調べてみましょう。関数は、binom.testです。

回答者の合計、支持者の合計を出します。

apply関数を使って合計を計算します。

f:id:cross_hyou:20191120203013p:plain

支持者の合計が3070人、回答者の合計が6480人です。この二つの数字をbinom.test関数にあてはめて支持率の信頼区間を計算します。

f:id:cross_hyou:20191120203257p:plain

95 percent confidence intervalの下の値を見ればいいです。

95%の信頼区間で46.2%から48.6%の間に支持率があります。

今回は以上です。