読者です 読者をやめる 読者になる 読者になる

廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

犯罪の検挙率のグラフ(モザイクプロット)

R Excel グラフ

犯罪統計資料(統計表一覧 政府統計の総合窓口 GL08020103)によると、平成28年1~2月の検挙率は35.2%でした。

過半数の犯罪は検挙されていません。

しかしこの数字はシンプソンのパラドックスめいたところがあって、犯罪のうち、凶悪犯、粗暴犯、知能犯、風俗犯は50%以上が検挙されています。

検挙率が低いのは窃盗犯、その他の刑法犯ですが、この2つの認知件数が多いために、全体としての検挙率は50%を割る結果になっています。

……と、このような情報はちょっとややこしいところがありますが、下のような図を書くことでわかりやすくなります。

f:id:abrahamcow:20160313025040p:plain

縦軸が検挙率、横軸が認知件数です。破線は全体での検挙率です。

この図を R で書くには以下のようにします。

library(readxl)
dat_row <-read_excel("~/Downloads/h28_01-02.xls",sheet=2,col_names = FALSE)
zaishu <- dat_row$X3 #罪種
ninchi <- as.numeric(ifelse(dat_row$X11=="-",0,dat_row$X11)) #認知件数
kenkyo <- as.numeric(ifelse(dat_row$X15=="-",0,dat_row$X15)) #検挙件数

dat1 <-data.frame(zaishu=zaishu[!is.na(zaishu)],
                  ninchi=ninchi[!is.na(zaishu)],
                  kenkyo=kenkyo[!is.na(zaishu)],stringsAsFactors = FALSE)
library(dplyr)
library(ggplot2)
library(scales)
my_mosaic <-function(dat1){
  dat1forplot<-dat1 %>%
    mutate(xmax=cumsum(ninchi))%>%
    mutate(xmin=c(0,xmax[-length(xmax)]))%>%
    mutate(kenkyoritsu=kenkyo/ninchi) %>%
    mutate(zaishu=factor(zaishu,levels=zaishu))
  ggplot(dat1forplot)+
    geom_rect(aes(xmin=xmin,xmax=xmax,ymin=0,ymax=1),fill="white",colour="black")+
    geom_rect(aes(xmin=xmin,xmax=xmax,ymin=0,ymax=kenkyoritsu,fill=zaishu),colour="black")+
    geom_hline(aes(yintercept=sum(kenkyo)/sum(ninchi)),linetype=2)+
    scale_y_continuous(labels = percent)+
    labs(fill="罪種")
}
theme_set(theme_classic(20,"HiraMaruProN-W4"))
my_mosaic(dat1)

せっかくなので検挙率の低かった窃盗犯、その他の刑法犯の内訳も見てみます。

まず窃盗犯。

flag <-cumsum(!is.na(dat_row$X3))
setto <-data.frame(zaishu=dat_row$X4[flag==3],
           ninchi=ninchi[flag==3],
           kenkyo=kenkyo[flag==3],stringsAsFactors=FALSE)
setto <-setto[!is.na(setto[,1]),]
my_mosaic(setto)

f:id:abrahamcow:20160313025421p:plain

特に検挙率の低い乗り物盗の内訳も図示してみます。

dat_row2 <-read_excel("~/Downloads/h28_01-02.xls",sheet=3,col_names = FALSE)
zaishu <- dat_row2$X3 #罪種
flag <-cumsum(!is.na(dat_row2$X3))

ninchi_norimono <- as.numeric(ifelse(dat_row2$X11=="-",0,dat_row2$X11)) #認知件数
kenkyo_norimono <- as.numeric(ifelse(dat_row2$X15=="-",0,dat_row2$X15)) #検挙件数

norimono <-data.frame(zaishu=dat_row2$X4[flag==2],
                   ninchi=ninchi_norimono[flag==2],
                   kenkyo=kenkyo_norimono[flag==2],stringsAsFactors=FALSE)
norimono <-norimono[!is.na(norimono[,1]),]
my_mosaic(norimono)

f:id:abrahamcow:20160313033013p:plain

自転車盗が検挙率が低く、認知件数も多いようですが、自動車盗、オートバイ盗も他の犯罪とくらべると検挙率は低めみたいです。

その他の刑法犯。

sonota <-data.frame(zaishu=dat_row$X4[flag==6],
                   ninchi=ninchi[flag==6],
                   kenkyo=kenkyo[flag==6],stringsAsFactors=FALSE)
sonota <-sonota[!is.na(sonota[,1]),]
my_mosaic(sonota)

f:id:abrahamcow:20160313025618p:plain

検挙率が100%を超える項目がありますが、まちがいではありません。

基本的には、市民から届出のあった犯罪が「認知件数」となるため、届け出のない犯罪を取り締まる機会が多いと検挙率が100%を超えます、たぶん。


参考文献:『数字で語る』p.28。

数字で語る―社会統計学入門

数字で語る―社会統計学入門