テロ事件に関するデータをいじってみる

昨日バルセロナの繁華街でテロの事件がありましたよね。初めて知った時は本当にショックでした。
自分もまさにその通りを去年の夏休みに訪れていたため、現場の状況などをリアルに想像しすぎてしまいました。
edition.cnn.com

昨今特にヨーロッパではテロの事件が多くありますけれども、今回のようなものは本当に防ぐことはできなかったと思います。銃や爆弾で犯行を起こすのならまだ対策の立てようがありそうに見えますけれども、車で人混みに突っ込むなんてどうやっても止められない。

被害にあった人々や大勢の死者の方々には心のそこからお悔やみ申し上げます。

ところで、この機会に以前kaggleで発見したテロに関するデータをRでいじって見ようと思ったのでここに記録として残して起きます。

データはこちらのリンクから拝借しました。
GTD Terrorist Attacks in France | Kaggle

> library(ggplot2)
> library(dplyr)
> gtd <- read.csv("GTD.csv")
> str(gtd)
'data.frame':    156772 obs. of  137 variables:
 $ eventid           : num  1.97e+11 1.97e+11 1.97e+11 1.97e+11 1.97e+11 ...
 $ iyear             : int  1970 1970 1970 1970 1970 1970 1970 1970 1970 1970 ...
 $ imonth            : int  0 0 1 1 1 1 1 1 1 1 ...
 $ iday              : int  0 0 0 0 0 1 2 2 2 3 ...
 $ approxdate        : Factor w/ 1427 levels "","01/04/2000",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ extended          : int  0 0 0 0 0 0 0 0 0 0 ...
 $ resolution        : Factor w/ 2658 levels "","1/1/00","1/1/01",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ country           : int  58 130 160 78 101 217 218 217 217 217 ...
 $ country_txt       : Factor w/ 206 levels "Afghanistan",..: 48 118 142 70 92 191 192 191 191 191 ...
 $ region            : int  2 1 5 8 4 1 3 1 1 1 ...
 $ region_txt        : Factor w/ 12 levels "Australasia & Oceania",..: 2 7 10 12 4 7 8 7 7 7 ...
 $ provstate         : Factor w/ 2510 levels "","(Region) of Republican Subordination (Province)",..: 1 1 2201 187 1 930 1471 419 2431 2431 …
$ city              : Factor w/ 31325 levels "","\x8ed\xe1r nad S\xe1zavou",..: 25550 18884 29557 2123 9724 5372 19339 21061 17359 17359 ...
 $ latitude          : num  18.5 19.4 15.5 38 33.6 ...
 $ longitude         : num  -70 -99.1 120.6 23.7 130.4 ...
 $ specificity       : int  1 1 4 1 1 1 1 1 1 1 ...
 $ vicinity          : int  0 0 0 0 0 0 0 0 0 0 ...
 $ location          : Factor w/ 35798 levels "","\"Colony 39\" settlement in uncleared areas of Ampara district, in eastern Sri Lanka",..: 1 1 1 1 1 1 1 3782 1 1 ...
 $ summary           : Factor w/ 88704 levels "","00/00/2012: Sometime between July 29 and August 4, 2012, an explosive device targeting a joint patrol of Australian soldiers an"| __truncated__,..: 1 1 1 1 1 64417 1 64520 64519 64599 ...
 $ crit1             : int  1 1 1 1 1 1 1 1 1 1 ...
 $ crit2             : int  1 1 1 1 1 1 1 1 1 1 ...
 $ crit3             : int  1 1 1 1 1 1 1 1 1 1 ...
 $ doubtterr         : int  0 0 0 0 -9 0 0 1 0 0 ...
 $ alternative       : int  NA NA NA NA NA NA NA 2 NA NA ...
 $ alternative_txt   : Factor w/ 6 levels ".","Insurgency/Guerilla Action",..: 1 1 1 1 1 1 1 5 1 1 ...
 $ multiple          : int  0 0 0 0 0 0 0 0 0 0 ...
 $ success           : int  1 1 1 1 1 1 0 1 1 1 ...
 $ suicide           : int  0 0 0 0 0 0 0 0 0 0 ...
 $ attacktype1       : int  1 6 1 3 7 2 1 3 7 7 ...
 $ attacktype1_txt   : Factor w/ 9 levels "Armed Assault",..: 2 7 2 3 4 1 2 3 4 4 ...
 $ attacktype2       : int  NA NA NA NA NA NA NA NA NA NA ...
 $ attacktype2_txt   : Factor w/ 10 levels ".","Armed Assault",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ attacktype3       : int  NA NA NA NA NA NA NA NA NA NA …
$ attacktype3_txt   : Factor w/ 9 levels ".","Armed Assault",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ targtype1         : int  14 7 10 7 7 3 3 21 4 2 ...
 $ targtype1_txt     : Factor w/ 22 levels "Abortion Related",..: 14 6 8 6 6 13 13 21 10 7 ...
 $ targsubtype1      : int  68 45 54 46 46 22 25 107 28 21 ...
 $ targsubtype1_txt  : Factor w/ 111 levels ".","Affiliated Institution",..: 58 16 87 20 20 73 76 19 50 28 ...
 $ corp1             : Factor w/ 29297 levels "","-","?","'Private Network' column",..: 1 3763 28577 1 1 4661 28166 19883 22024 23792 ...
 $ target1           : Factor w/ 79948 levels "","-Chile [Mothers Center] Nataniel & Eyzaguirre Sts.",..: 39331 47294 26773 75004 74978 15544 39130 25699 56258 61280 ...
 $ natlty1           : int  58 21 217 217 217 217 218 217 217 217 ...
 $ natlty1_txt       : Factor w/ 213 levels ".","Afghanistan",..: 52 18 199 199 199 199 200 199 199 199 ...
 $ targtype2         : int  NA NA NA NA NA NA NA NA NA NA ...
 $ targtype2_txt     : Factor w/ 23 levels ".","Abortion Related",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ targsubtype2      : int  NA NA NA NA NA NA NA NA NA NA ...
 $ targsubtype2_txt  : Factor w/ 104 levels ".","Affiliated Institution",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ corp2             : Factor w/ 2345 levels "","\"L'evenement Du Jeudi\", a magazine",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ target2           : Factor w/ 4563 levels "","; Alfredo Rodriguez; Sarbelo Becines, traffic policemen",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ natlty2           : int  NA NA NA NA NA NA NA NA NA NA ...
 $ natlty2_txt       : Factor w/ 155 levels ".","Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 …
 $ targtype3         : int  NA NA NA NA NA NA NA NA NA NA ...
 $ targtype3_txt     : Factor w/ 21 levels ".","Airports & Aircraft",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ targsubtype3      : int  NA NA NA NA NA NA NA NA NA NA ...
 $ targsubtype3_txt  : Factor w/ 86 levels ".","Affiliated Institution",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ corp3             : Factor w/ 352 levels "","A bus terminal",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ target3           : Factor w/ 632 levels "",".","(District) Prison",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ natlty3           : int  NA NA NA NA NA NA NA NA NA NA ...
 $ natlty3_txt       : Factor w/ 102 levels ".","Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ gname             : Factor w/ 3290 levels "1 May","14 K Triad",..: 1814 14 3170 3170 3170 619 3046 3170 2113 2113 …
$ gsubname          : Factor w/ 993 levels "","103rd Base Command",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ gname2            : Factor w/ 335 levels "","1 May","8 March Coalition",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ gsubname2         : Factor w/ 44 levels "","101st Battalion",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ gname3            : Factor w/ 78 levels "","313 Brigade",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ ingroup           : int  3629 3330 -9 -9 -9 2373 623 -9 100003 100003 ...
 $ ingroup2          : int  NA NA NA NA NA NA NA NA NA NA ...
 $ ingroup3          : int  NA NA NA NA NA NA NA NA NA NA ...
 $ gsubname3         : Factor w/ 7 levels "","Ahrar al-Sham",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ motive            : Factor w/ 11683 levels "","????....roadblock/shakedown/policemen killed",..: 1 1 1 1 1 11184 1 1 11317 11317 ...
 $ guncertain1       : int  0 0 0 0 0 0 0 0 0 0 ...
 $ guncertain2       : int  NA NA NA NA NA NA NA NA NA NA ...
 $ guncertain3       : int  NA NA NA NA NA NA NA NA NA NA ...
 $ nperps            : int  NA 7 NA NA NA -99 3 -99 1 1 ...
 $ nperpcap          : num  NA NA NA NA NA -99 NA -99 1 1 ...
 $ claimed           : int  NA NA NA NA NA 0 NA 0 1 0 ...
 $ claimmode         : int  NA NA NA NA NA NA NA NA 1 NA ...
 $ claimmode_txt     : Factor w/ 12 levels ".","0","Call (post-incident)",..: 1 1 1 1 1 1 1 1 6 1 ...
 $ claim2            : int  NA NA NA NA NA NA NA NA NA NA ...
 $ claimmode2        : int  NA NA NA NA NA NA NA NA NA NA ...
 $ claimmode2_txt    : Factor w/ 10 levels ".","Call (post-incident)",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ claim3            : int  NA NA NA NA NA NA NA NA NA NA ...
 $ claimmode3        : int  NA NA NA NA NA NA NA NA NA NA …
 $ claimmode3_txt    : Factor w/ 9 levels ".","Call (post-incident)",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ compclaim         : int  NA NA NA NA NA NA NA NA NA NA ...
 $ weaptype1         : int  13 13 13 6 8 5 5 6 8 8 ...
 $ weaptype1_txt     : Factor w/ 12 levels "Biological","Chemical",..: 11 11 11 3 6 5 5 3 6 6 ...
 $ weapsubtype1      : int  NA NA NA 16 NA 5 2 16 19 20 ...
 $ weapsubtype1_txt  : Factor w/ 29 levels ".","Arson/Fire",..: 1 1 1 26 1 27 3 26 13 6 ...
 $ weaptype2         : int  NA NA NA NA NA NA NA NA NA NA ...
 $ weaptype2_txt     : Factor w/ 12 levels ".","Biological",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ weapsubtype2      : int  NA NA NA NA NA NA NA NA NA NA ...
 $ weapsubtype2_txt  : Factor w/ 27 levels ".","Arson/Fire",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ weaptype3         : int  NA NA NA NA NA NA NA NA NA NA ...
 $ weaptype3_txt     : Factor w/ 11 levels ".","Chemical",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ weapsubtype3      : int  NA NA NA NA NA NA NA NA NA NA ...
 $ weapsubtype3_txt  : Factor w/ 23 levels ".","Arson/Fire",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ weaptype4         : int  NA NA NA NA NA NA NA NA NA NA ...
 $ weaptype4_txt     : Factor w/ 6 levels ".","Explosives/Bombs/Dynamite",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ weapsubtype4      : int  NA NA NA NA NA NA NA NA NA NA ...
 $ weapsubtype4_txt  : Factor w/ 17 levels ".","Arson/Fire",..: 1 1 1 1 1 1 1 1 1 1 ...
  [list output truncated]

かなり大きなデータです。

位置データが掲載されているので、前回のを活かして世界地図にプロットして見ます。

> world <- map_data("world")
> map <- ggplot() + geom_polygon(data = world,  aes(x = long, y=lat, group = group), colour = "black", fill ="white")
> gtd13 <- filter(gtd, iyear==2015)
> gtd13map <- map + geom_point(data = gtd13, aes(x = longitude, y = latitude), colour="Red", fill="Orange",pch=21, size=2, alpha=I(0.7))
> gtd13map
 警告メッセージ: 
Removed 94 rows containing missing values (geom_point).

f:id:kokiando:20170819222401p:plain

2013年のみに絞ってますが、かなり分布は集中していますね。アジアではフィリピンあたりも結構すごいですね。
一方カナダなどではほぼゼロ何ですね。

次は単純に年ごとの発生件数などを可視化していきます。

> ggplot(gtd, aes(x=iyear)) + geom_bar()

f:id:kokiando:20170819222657p:plain
ここ5年くらいで急激に増加していますね。

> ggplot(gtd, aes(iyear, fill=attacktype1_txt)) + geom_bar()

f:id:kokiando:20170819222802p:plain

こちらは、テロ攻撃の手口的なもので区分したグラフです。
緑の部分の爆弾テロが最も多いのですね。

最後に地域別の発生件数を可視化して見ます。

> ggplot(gtd, aes(iyear, fill=region_txt)) + geom_bar()

f:id:kokiando:20170819223050p:plain
目立つのはやっぱり東ヨーロッパや南アフリカなどの地域ですね。

イスラムの本当にごく一部の方々の原理主義者がこのようなテロを起こしていることが多くあり、そこからイスラム教徒全ての人々が差別の対象になったりすることもヨーロッパ諸国では多々あるみたいです。ヨーロッパの現地の人々がそのような恐れを感じるのはごく自然のことかもしれませんが、正しい知識や情報を得た上で、何事も判断することが大事ですよね。

現実的に考えると、テロを撲滅するのは不可能であると僕は思います。それこそ、本当に攻殻機動隊のような世界になって人間をネットを介して全員監視できるような世界にならないと...

だからと行ってこのまま自体を放っておくと、今回のようにまた多くの関係のない人々が死んでしまう。さらには次は自分かもしれない。

とりあえず早くこの犯人を捕まえて欲しいですね。