Rで何かをしたり、読書をするブログ

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

全国の主要な市の刑法犯認知件数のデータの分析2 - 刑法犯認知件数の経年変化のグラフとANOVA

www.crosshyou.info

の続きです。前回はデータをウェブサイトからダウンロードして、それをRに読み込ませ、データがどんなだか少し確認しました。今回は刑法犯認知件数の経年変化をみてみます。

分析用に、year, code, city, crimeだけのあるデータフレームを用意しました。

グラフを描いてみます。縦軸がcrimeで横軸がyearで箱ひげ図を描いてみます。

何故か、一番左が2005年度で、一番右が1980年度と時間の向きが逆になってしまいましたが、1980年度、1985年度と比較すると、2000年度、2005年度のほうが件数が多いように見えます。

年度ごとの平均値をみてみます。

crimeは人口千人当たりの刑法犯認知件数です。1980年代は平均値は16.0人、中央値は13.1人だったのが、2005年度は平均値は21.0人、中央値は18.0人と増加しています。

グループごとの平均値に違いがあるかどうかは、ANOVA(ANalysis Of VAriance)ですね。aov()関数でモデルを作り、summary()関数で結果を確認します。

p値は8.23e-11と限りなく0ですね。0.0000000000823です。

TukeyHSD()関数でどのグループとどのグループが違うかを見ることができます。

青枠で囲った年度の組み合わせは違いがあります。一番違うのは1985年度と2000年度ですね。

中央値についても違いがあるかどうかをみてみます。Kruskal-Wallis検定というものでやります。kruskal.test()関数です。

p値が < 2.23-16となりました。中央値も年度によって違いがあります。

FSAパッケージのdunnTest()関数でどのグループとどのグループが違うかわかります。

星印のついているグループの組み合わせが違いがあるということです。

この結果の後半部分は以下のような表形式です。TukeyHSD()関数と同じような表です。

今回は以上です。

次回は

www.crosshyou.info

です。

はじめから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# crimeのある都市だけのデータ
df_crime <- df_raw |> 
  filter(!is.na(crime)) |> 
  select(year, code, city, crime) |> 
  mutate(year = fct(year))
df_crime
#
# crimeの経年変化のグラフ
df_crime |> 
  ggplot(aes(x = year, y = crime)) +
  geom_boxplot(aes(group = year)) +
  theme_minimal()
#
# 年度ごとの平均値と中央値
df_crime |> 
  group_by(year) |> 
  summarize(average = mean(crime),
            median = median(crime))
#
# ANOVA
ANOVA_model <- aov(crime ~ year, data = df_crime) 
summary(ANOVA_model)
#
# Tukey Honest Significant Difference
TukeyHSD(ANOVA_model)
#

# 中央値の違い: Kruskal-Wallis検定
kruskal.test(crime ~ year, data = df_crime)
#
# どのグループとどのグループが違うか
library(FSA)
dunnTest(crime ~ year, data = df_crime, method = "bonferroni")
#

(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは Splendid moment of natural landscape, full of white and Daisy flowers, which center color are yellow, blue sky far away, Photo  です。)