本稿では、見出しのとおりの主張をなすため、漢字2文字からなる元号の候補を無作為に生成し、6種を選択した場合に「安」の字がどれほど含まれ得たのかについて、シミュレーションを実行した結果を報告する。結果は、下図のとおりである。100万回1セットの試行を繰り返した場合、今回の試行とは異なる度数を得るが、その(試行を複数回繰り返すことにより度数の信頼区間を推定する)作業は省略する(。単に、私のスクリプトの組み方が稚拙なためである)。1種以上の候補に「安」の字が含まれることは、それほど不自然なことではなかった(が、事前に騒ぐ向きがあったために、下図より示唆される三割程度の可能性は、事前に断たれたと観ることも可能である)。
2019年4月7日日曜日
2016年9月25日日曜日
『R』+「ggplot2」開発版で画像にキャプションを付ける方法
installed.packages() # show installed packages.以上の作業については、下記ページを参考とした。ただし『迷途覚路夢中行』氏のブログには、library関数の引数が文字列ではないという誤りがあったため、上記のスクリプトでは、当該部分を訂正済みである。
install.package("ggplot2")
install.package("assertthat") # new packages to be added in the new version.
install.package("devtools") # required to upgrade the new version.
library("devtools") # load "devtools".
# before using devtools, the security settings of the directory below must be
# modified.
# C:\Program Files\R\R-3.3.1\library
devtools::install_github("hadley/ggplot2", force = TRUE)
library("ggplot2")
p <- ggplot(mtcars, aes(mpg, wt, colour = cyl)) + geom_point()
p + labs(caption = "caption")
[1] r - Displaying text below the plot generated by ggplot2 - Stack Overflow
(2012年04月04日、Jan Schulz氏の2016年03月16日13:01の回答)
http://stackoverflow.com/questions/10014187/displaying-text-below-the-plot-generated-by-ggplot2
[2] ggplot2 で caption をつける ( ソフトウェア ) - 迷途覚路夢中行 - Yahoo!ブログ
(2016年06月07日07:21)
http://blogs.yahoo.co.jp/igproj_fusion/20100418.html
2016年9月23日金曜日
RでHTMLソースのDateTimeClassなどのPOSIXct型を日時に変換する(メモ)
strftime(x = as.POSIXct(date_time, origin = "1970-01-01", tz = "Asia/Tokyo"),
format = "%Y年%m月%d日%H時%M分", tz = "Asia/Tokyo", usetz = TRUE)
2016年8月16日火曜日
都知事選の主要三候補の得票率が斉一的であるという指摘は前提が怪しい(2)
本稿では、不正選挙を指摘する複数の論者による、「小池氏の得票率を鳥越氏の得票率へと近付けるための係数を乗じた結果、小池氏の基礎的自治体ごとの得票率は、鳥越氏の得票率に一致する」(以下、「比例説」)という主張が、個人の投票モデルのうち、最もシンプルなものとなる二項分布によって否定されることを確認する。本稿の指摘は、先の三点の指摘のうち、第二点目に係るものである。個人の投票モデルが二項分布に従う(のみである)という仮定は、先の三点の指摘のうち、第三点目に起因する特徴を無視したものとなっているが、第三点目の地域統計であるという特徴を乗り越える作業は、生半可にはいかないので、本稿以後も扱わない方針であることをあらかじめお断りしておく。
また、本稿では、「宇都宮健児氏の得票率が鳥越氏の得票率へと流用されている」という趣旨の主張もまた、個人の得票行動に二項分布を仮定した場合、誤りとなることを示す。ただし、この主張は、小池氏の得票率に一定の係数を乗じた場合よりも成立しそうなものでもある。宇都宮氏への投票者の支持政党、鳥越氏への投票者の支持政党は、いずれも野党側のものである一方、前回都知事選における与党候補とは異なり、今回の都知事選は、与党系の候補が2名となったものであるためである。
計算方法は、次のとおりである。各時点の各基礎的自治体の全有権者に対する、今回の小池氏への投票率$P_1$と、前回の宇都宮氏への投票率$P_2$を、いずれも二項分布における真値とみなした。それらの投票率を鳥越氏への投票率へと変換するための係数$(k_1, k_2)$を、作成した。係数$(k_1, k_2)$を、$P_1$及び$P_2$のそれぞれに乗じ、修正後の投票率を得た。今回の全有権者数を試行回数として、修正後の投票率、たとえば$k_1P_1$を成功確率とする二項分布の実現値は、仮に、現時点の不正選挙を糾弾する論者の主張が正しければ、今回の鳥越氏の得票数にきわめて近い数値となるはずである。そこで、それぞれの得票率と実際の鳥越氏の得票数を利用して、各自治体について、二項検定を実施した。各自治体について二項検定を実施することは、多重比較となるので、判定の有意水準は、0.01を基礎的自治体数62で除した(ボンフェローニ修正)。
結果、小池氏の得票率を利用した場合には46の基礎的自治体において、前回の宇都宮氏の得票率を利用した場合には43の基礎的自治体において、鳥越氏の得票数は、これらの得票率から生まれたとは認められないという結果を得た。つまり、鳥越氏の得票率がほかの候補の得票率に比例するように見えたとしても、その比例関係は、大半の場合、厳密には成立していないのである。グラフ上で線が重なるほどに近い差であっても、二項モデルを仮定した場合には、その差は、何らかの違いを示すほどに大きなものと言えるのである。
地域別得票率の「比例説」は、二項分布から大量に生起する現象についての数的感覚が欠如していることから生じたものと認められる。20世紀中葉までに成立した現代的な統計学の学習や訓練がなければ、誰でも、同様の誤りに陥ることになる。「大量(マス、mass)現象」に二項分布を仮定したときのばらつき方は、統計学が専門ではなくとも、社会現象を分析する人物であれば、抑えておくべき基本であろう。この素養は、何が異常で何が正常でないかの判定能力に直結するためである。
実際の分析作業は、すべて『R』上で実施したので、計算結果は.Rファイルにすべて譲る。ファイルをアップロードした(リンク)ので、そちらをご覧いただきたい。
「比例説」自体は、その主張が含む厳密さによって否定された訳であるが、しかし、「比例説」が否定されたことは、今回の得票結果を説明する説の中から、不正選挙の可能性という説を除外する理由にはならない。 むしろ、「比例説」に何らかの副次的要因を追加することによって、今回の状況をうまく説明できるとする、不正選挙を支持する説が提起されたとき、おそらく、われわれは、その説を否定するだけの材料を持たないであろう。多数がお互いを監視するというオムニプティコン社会に生きるわれわれは、その説の出現を予期できるだけのリアルな材料を、すでに手中に収めているのである。それに、異常と正常の境目の判定能力の欠如は、何も、(私を含む)陰謀論者だけに見られる現象ではないのである。
平成28(2016)年8月16日12時追記・修正
今回の検定におけるファミリーワイズの第一種過誤を5%から1%に変更した。また、「2012年猪瀬氏→2014年桝添氏」と「2014年桝添氏→2016年小池氏」に係る比例説も検討した。「2012年猪瀬氏→2014年桝添氏」については53の基礎的自治体が、また「2014年桝添氏→2016年小池氏」については48の基礎的自治体が二項分布から外れる形であるという結果を得た。アップロードしたファイル(リンク)は、この結果に係る作業も含む。
本文のパラフレーズとなるが、各候補の得票の形状は、二項分布というシンプルなモデルでは説明できないものの、追加の仮定を措くことによって、うまく説明できる可能性が残るものである。現時点で考えられる要素のうち、不正とは一応切り離すことのできるものを挙げれば、自動票読取機が梱包する票数(500票)、地元議員の応援、公務員や宗教団体など、斉一的な投票行動をとる居住者が集住する宿舎の所在、などが考えられる。
2016年8月10日水曜日
平成28年7月31日執行東京都知事選挙の期日前投票数の増加について
要約
本稿では、先月(2016年7月)の都知事選に係る期日前投票結果を考察するために必要な材料を提示する。最初に、制度の開始時期とおおよその規模について確認する。次いで、先月の参議院選挙と都知事選の期日前投票の割合が異なることを確認する。最後に、この差が生じた要因として検討すべき内容を思いつくままに挙げてみる。本稿では、あくまで謙抑的に考察を進める予定であり、一部の向きが私に対して予期するような「ちゃぶ台返し」は、別稿にて行う予定である。#つまり、本稿に示す内容は、あくまで客観的に検証することの可能な内容であり、肯定も反論も、的確に行うことが可能なはずのものである。
本文
期日前投票制度は、従来の不在者投票制度の一部を代替する形で、2003年12月1日から施行された制度※1である。平成28年の時点では、地域や選挙の種類にもよるが、有権者数の1割から3割程度に相当する票がこの制度を利用して投じられたものとなっている。平成28年7月31日の都知事選挙において、期日前投票数は、都全体の全選挙人名簿登録者数に対して15%を、町村部に限定すれば19%を占めている※2。期日前投票数は、現時点では、選挙結果を大きく逆転させうるほどの規模に達していると言うことができよう。これに対して、従来の不在者投票は、期日前投票制度の導入直前には、多くとも、当日有権者数全体の1割程度を占める程度であった。たとえば、期日前投票制度の施行直前の2003年11月の衆議院選挙については、東京都の不在者投票数は、63万票近く、全投票数の約6%であった※3。全島避難となっていた三宅村については、有権者数の3割に達している※3が、これは、例外であろう。不在者投票では封書して署名する必要があるため、この作業の不要な期日前投票が気軽さから投票へのハードルを下げたという側面があることは、否定できないであろう。
東京都における期日前投票の動向は、選挙日が一年のどの時点にあるかによって、多少の変動を受けるであろう。人間が習慣や季節に影響される社会的生物であり、わが国の四季がかなりの変化を有するものである以上、選挙日に対して何らかの仮説を措くことは、無駄ではなかろう。ただし、仮定を措かないことも、否定されるべきことではない。投票者をモデル化するにあたり季節や社会的属性(特に出稼ぎ者や学生等)を考慮することは、推定の確度を向上させる上で必要なことと考えられる一方で、現時点の私のように、当局の公表する集計データだけを利用する分析者が個人的属性に影響されるであろう内容までを考慮することは、作業として過大となりうるためである。
しかしながら、先月の参議院選挙よりも東京都都知事選挙における期日前投票数が147718票も増加しているという統計上の事実は、この票数が都知事選挙の当日有権者数から見れば1.33%あまりに過ぎないものである一方、誤差と言い切るには微妙さの残るものでもある。この1.33%という差は、いわゆる非集計モデルを仮定した場合に、何かの要因を取り込み損ねたのでなければ生じない程度に大きな誤差である。モデル適用先となる東京都内の有権者数が1108万人にも達するからである。この事実を、最もシンプルな形のシミュレーションを通じて確認しよう。
各選挙における当日有権者数を試行回数とする、各選挙における期日前投票数を当日有権者数で割った値を確率とみなす二項分布を想定し、これらに従う実現値を10000回分得る。その分布を下図に示す。実現値を真値とみなせば、期日前投票率がふたつの投票間で異なる、という命題は、成立するのである。本来、シミュレーションの手続としては、ふたつの投票に係る期日前投票率に何らかの分布を仮定して、その分布を個人に当てはめるという手順が正統である。しかし、ここでの主張は、単に、ふたつの投票における期日前投票率が基本的に異なるものである、というものに過ぎないから、下図で十分に示すことができようし、また、そのような知的負荷の高い作業手順を遵守することは、私のような行き当たりばったりな思考形態の生物には無理である。
![]() |
図:平成28年7月執行参議院選挙と都知事選挙における期日前投票率について 二項分布を仮定した場合のシミュレーション結果(10000回、赤:参議院選挙、青:都知事選挙) |
ともあれ、どのような方法であっても、おおよそ、非集計モデルによる限り、都知事選の期日前投票率が高い、という結果になりそうであることは、上図によって示せたものと思う。なお、上図では、x軸方向を300個に分割し、ヒストグラムを描画させている。具体的な方法は、このRファイルに示した。シミュレーションには、『R』を利用し、描画には『ggplot2』ライブラリを利用した。
都知事選と参院選に係る東京都全体の当日有権者数と期日前投票数については、このRファイルに示したとおりであるので、再度の掲示は省略するが、わずか3週間で、当日有権者数が74685名減少するというのは、社会移動があると仮定しなければ、理解に苦しむ人口差である。当日有権者数であるから、まず、東京都民全員ではない。17歳以下の人口や、選挙権を停止されている都民が除外された人口である。夏場は、通常、死者が少ない。このため、52/3を乗じた、-1294540という数値は、年間に換算した東京都民の人口減少数と見ることも可能となってしまう。人口減社会であるにしても、にわかに受け入れがたい、驚くべき数値である。社会移動が生じた理由は、今後、追究の対象となって良いことであろう。
ところで、ふたつの選挙における期日前投票率にこれだけの差が生じた理由には、ほかにどのような理由が考えられるのであろうか。私にはそれほど見えていないのであるが、天候や気温、祝日や休日の配置といったものは、説明として受け入れやすいものであるので、とりあえず、大まかなところを確認しよう。本年7月10日は夏休み前の日曜日であり、7月31日は夏休み真っ盛りであるが、10日の東京都(本島)では降水がなく(羽田、八王子、7月10日)比較的過ごしやすい気温であった一方で、31日は天候が大荒れであると予報されており、区部の一部では、昼に大雨が降り(羽田、八王子、7月31日)、その後、大変に暑くなった。
小中学生以下の子どもや孫を持つ成人が、夏休みや22日配信(『モバイルナビゲーター』、リンク)の『ポケモンGO』に振り回され、期日前投票したと仮定することは、それほど無理筋ではない。ただし、この仮定は、普段から投票してきた成人に適用されるものと考えなければならない。でなければ、なぜわざわざ、当日投票ではなく、期日前投票することになったのか?というさらなる疑問を呼び起こすからである。当日であっても、投票所の前にポケモンが現れることが確認できていたとすれば、期日前投票する必然性も薄れるからである。夫婦の片方だけがポケモンを探しがてら、期日前投票したことになるというケースも想定はできる。このような夫婦や家族の存在は否定できないが、実証が必要そうである。三世代家族であれば、祖父母のいずれかが期日前投票に孫を連れて行く、というケースが十分ありそうにも思われる。10万世帯(程度)がこのような行動を強いられた、というわけである。
※1 総務省|期日前投票制度の創設について
http://www.soumu.go.jp/senkyo/senkyo_s/news/touhyou/kijitsumae/
期日前投票制度の創設等を内容とする公職選挙法の一部を改正する法律が第156回国会で成立し、平成15年6月11日に公布、平成15年12月1日から施行されました。
※2 衆議院議員選挙(小選挙区選出)不在者投票の最終結果について(確定)(Internet Archive Wayback Machine)
(平成15年11月11日 東京都選挙管理委員会)
https://web.archive.org/web/20040603053848/http://www.senkyo.metro.tokyo.jp/data/h15shu_fuzai.html
※3 平成15年11月9日執行衆議院議員選挙(小選挙区選出)不在者投票の中間状況について(選挙期日7日前まで)
(ファイル名:43 衆院選・不在者投票中間状況報告(1回目)資料.xls - fuzai_jokyo.pdf、平成15年11月3日 東京都選挙管理委員会)
https://web.archive.org/web/20061229134748/http://www.senkyo.metro.tokyo.jp/shugiin/fuzai_jokyo.pdf
2016年7月25日月曜日
荒引健ほか, (2013). 『R言語上級ハンドブック』, C&R研究所.(書評)
単なる印象だが、ここ5年ほどの間で、ほかのプログラム技術に秀でていた人が新規参入したために、R言語は、統計方面に強みを有するスクリプト言語としての地位を確立したかのようである。
荒引健ほか, (2013). 『R言語上級ハンドブック』, C&R研究所, p.55.
関数 | 説明 |
---|---|
substitute | 言語オブジェクトの式を書き換える |
quote | 引数を未評価の式として返す |
enquote | 引数を評価した上でquoteして返す |
bquote | 言語オブジェクトの式を書き換える |
call | 呼び出しオブジェクトを作成する |
do.call | 呼び出しオブジェクトを作成して評価する |
expression | 表現式オブジェクトを作成する |
eval | 未評価の式を実行する |
evalq | 未評価の式を実行する。引数を評価する環境がevalとは異なる |
parse | ファイルやテキストをパースして表現式オブジェクトを返す |
deparse | 未評価の言語オブジェクトを文字列に変換する |
2016年3月22日火曜日
『R』により標本平均の信頼区間を求めて図示する方法
set.seed(20160322)
my.samples <- 200L # サンプル数
my.trials <- 100L # 実験回数
my.conf.p <- 0.95 # 信頼水準
my.mat <- matrix(rnorm(my.samples * my.trials, mean = 0, sd = 1),
ncol = my.samples, byrow = TRUE)
my.means <- apply(my.mat, 1, mean)
my.sds <- apply(my.mat, 1, sd)
my.qt <- qt(p = 1 - (1 - my.conf.p) / 2,
df = my.trials - 1)
my.conf.l <- my.means - my.qt * my.sds / sqrt(my.samples)
my.conf.u <- my.means + my.qt * my.sds / sqrt(my.samples)
plot(x = 1:my.trials,
y = my.means,
xlim = c(0, my.trials + 1),
ylim = c((min(my.conf.l) - abs(min(my.conf.l)) * 0.05),
(max(my.conf.u) + abs(min(my.conf.l)) * 0.05)),
main = paste(sprintf("%d", as.integer(my.conf.p * 100)),
"% confidence intervals of ",
sprintf("%d", my.trials),
" trials from N(0, 1) with ",
sprintf("%d", my.samples),
" samples", sep = ""),
xlab = "trials",
ylab = "means of each trials and its confidence intervals",
pch = 16,
cex = 0.5)
segments(x0 = 1:my.trials,
y0 = my.conf.l,
y1 = my.conf.u)
abline(h = 0, col = "red")
length(which(my.conf.l < 0 & my.conf.u > 0)) / my.trials
# [1] 0.97
上記は、エレガントなコードとは言えないし、出力も綺麗ではないなど、コーディング技術上、色々と参考にしたくないと思われてしまうに違いないコードだが、ブログの更新停止状態を打開するためにも、恥を忍んで公表することにした。泥縄式コーディングでも、目的達成の上では、何もないよりも遙かに有効であることを示したかったという意図もある。なお、自分が設定した変数を全部「my」クラス風にしており、見た目に気持ち悪いのは、『サクラエディタ』の「正規表現キーワード機能」でハイライトしているためである。言い訳になるが、「my.」表記は、『R』の多数パッケージにおける変数命名規則が多岐にわたるという事情を斟酌したものである。
2015年5月30日土曜日
RからGoogle Trendsを呼び出す方法(日本国内)
- 日本国内のGoogle TrendsのURLは、"http://www.google.co.jp/trends/"です。このため、合計2カ所、変更すべき箇所があります。
- gLogin関数内のpostForm関数中の引数を"http://www.google.co.jp/trends/"とする。
- 最後のgetForm関数中の引数を"http://www.google.co.jp/trends/trendsReport?"とする。
- 最後のgetForm関数に渡す検索語の文字コードは、UTF-8でないといけません。現時点ではWindows版でしか確認していませんが、次のスニペットのように変換すると、うまく動きます。getForm関数の引数urlは、上で指摘したように変更済みです。
searchWords <- c("冷やし中華", "担々麺")
searchWords <- enc2utf8(paste(searchWords, collapse=","))
res <- getForm("http://www.google.co.jp/trends/trendsReport?",
curl = ch,
.params = c(q = searchWords,
hl = "ja",
cmpt = "q",
content = 1,
export = 1))
これらを用いて、別の記事では、Google Trendsにおける検索語の推移を見てみることにします。2015年5月22日金曜日
各地の甲状腺検査の判定結果は重大である
低量放射線による健康障害を懸念するブロガーの中には、以前の検査の判定結果について、二項分布を用いて説明してきた方も多くいる。ここでの作業は、このため、警告を出すという点では遅きに失している。
# 平成26年度 日光市甲状腺検査結果報告書(PDF)
# http://www.city.nikko.lg.jp/kenkou/documents/koujousenn26.pdf
binom.test(x = 3, n = 1713,
p = (1/1000000),
alternative = "greater",
conf.level = 0.95)
# 松戸市甲状腺超音波検査判定結果 松戸市公式ホームページ
# http://www.city.matsudo.chiba.jp/chuumoku/
# houshasen/taisaku_taiou/kenko/koujousenn.html
binom.test(x = 1, n = 147,
p = (1/1000000),
alternative = "greater",
conf.level = 0.95)
本件は、従来なら100万人に1人という罹患率の現象を取扱うため、計算方法にも留意する必要がある。binomパッケージを利用して、計算方法とそれらの実装まで含め、結果を把握する。
binom.confint.wrapper <- function(...) {
reqLibs <- "binom"
reqPcks <- reqLibs[!(reqLibs %in% installed.packages()[,"Package"])]
if(length(reqPcks)) install.packages(pkgs = reqPcks)
eval(parse(text = paste("library(\"", reqLibs, "\")", sep = "")))
binom.confint(...)
}
binom.confint.wrapper(x = 3, n = 1713)
binom.confint.wrapper(x = 1, n = 147)
binom.confint.wrapper(x = 1, n = 10^6)
2015年5月20日水曜日
RODBC 32bit版をWindows 7/8 64bit版で利用するときの注意点
- RODBCは、32bit版の(i386版)のRで利用すること。引数は、次の3つを指定すること。
stringsAsFactors = FALSE
believeNRows = FALSE
rows_at_time = 1 - レジストリを、下記参考リンクを参照して変更しておくこと。
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel]
"TypeGuessRows"=dword:00000000
参考
WOW64 はレジストリにも影響する - Obache Watching mkIIr - annoying "feature" (or bugs?) for RODBC - Stack Overflow
2015年5月15日金曜日
放火研究の動向(私家版、パート2)
(前回より)
放火の環境犯罪学的研究と火災研究との精度感の違いは問題にはならない
不穏当な表現になるが、従来型の回帰分析を用いた政策科学系の放火研究は、火災研究者には、実に怪しげなものであると、適切に理解されてきたようである。少なくとも、その精度が低いことを理解してもらえてはいるようではある。自然現象を相手にするための道具立てを学習する課程は、モデルというものを利用する場合の相場観を養う機会となる。ある研究の正当性は、その研究を評価する研究コミュニティを離れて成立することはないから、怪しげな環境犯罪学研究が「放火に対する建築防火政策の効果はまったくない」と主張しても、火災研究コミュニティからは、健全な反論が提起されることが期待されよう。つまり、環境犯罪学者は、研究上の努力を節約していても、いずれは、それぞれの研究の正しさが見極められることを期待しても良いということになる。将来において、環境犯罪学上の誤りは、自然に淘汰されるものと期待できるということである。
ところがそもそも、火災そのものを研究対象とする研究者の承認は、環境犯罪学的な放火研究の成功条件には含まれない。つまり、従来の統計的手法を利用した、環境犯罪学的な放火研究が内包する限界について、共通の理解に至る必要性は、端から存在しない。放火研究という学際的研究において、知識の相違により軋轢が生じる蓋然性は、十分に高い。にもかかわらず、現実には、この辺の難しさを通過しなければならないことは、第一点目の「もったいない」事実である。「放火犯がまさに火を点けようとする環境」の空間スケールは、「可燃物及び着火源が容易に入手可能な現代」というマクロ環境をふまえると、直感的には「放火犯のパーソナルスペース」程度である。その空間スケールは、大きなものであるとしても「放火犯の視界の範囲」程度である。清永賢二氏らの「侵入盗の目の付け所」に関する研究にいう「向こう三軒両隣」程度の大きさの空間が最大のスケール感である。その「向こう三軒両隣」内に可燃物がないという状況は、わが国の「都市空間」では、きわめて考えにくいことである。放火犯になったつもりで考えれば、可燃物は身の周りにあふれているし、マッチやライターもありふれているから、われわれは、誰もが「放火しようと思えばいつでもできる環境」に囲まれて生活していると言っても良い。マンションが立ち並ぶ地域でも、オフィス街でさえも、可燃物はそこかしこに見つかるし、ホームレスを糾弾する気はないが、彼らがしばしば可燃物を不燃建築物の周辺に持ち込むこと自体は、事実である。
「いつ・誰が・何を用いて・どの物品に最初に火を点けたのか」という点の解明は、火災調査の焦点であり、火災研究者の腕の見せ所であろうが、環境犯罪学者の興味を満たすには、「現実の都市のミクロ空間下に火を点けるものがあるかどうか」が分かれば、十分である。両者の興味には、一種の断絶が存在するのである。このため、火災調査に見られるような厳密性は、正確な放火地点の把握に必須ではあるが、仮に、火災調査に現在ほどの厳密性がなかったとしても、環境犯罪学研究に必要な精度感が左右されることはない。(消防署の)予防課の担当者の説明は、信用できるものとして受け入れられ、そのまま研究に利用されて構わないであろう。その上、放火事件の現場には、素人目にも分かるほど、数ヶ月前もの燃焼地点の痕跡が残されていることがあるから、回顧的に放火地点を特定することは、不可能とは言えない。
警察側の情報が研究の精度感を決定的に左右する
その一方で、放火の統計的研究や、あるいは(地理的)プロファイリングなどの成否を決定的に左右するのは、犯人と事件のリンク分析、つまり、どの事件がどの犯人によるものであるのかを紐付ける作業である。にもかかわらず、警察の犯罪統計やリンク分析結果が外部の研究者に公開される公的な仕組みは、存在しない。外部の研究者は、裁判を傍聴し続けるという方法により、データを収集することが原理的には可能であるものの、現実的な手段ではない。次善の方法として、裁判記録を入手するよう努力するというものもあるが、これも系統性という点では、難がある。結局、回顧調査の枠組みに基づき、不完全な報道記事を元に、連続犯と事件との対応関係を調査するしかない。この作業も面倒くさいし、何より、リンク分析としての正確性を保証する役目が研究者に課せられるため、再現性に問題がある。
この事情は、「警察外部の研究者が放火犯と事件の対応関係を知るために報道記事を利用するしかない」という第二点目の「もったいない」事実を生起させる。警察関係者は、警察のデータが権力の源泉となり得ることを、報道関係者とのやりとりを通じて、重々承知している。私のブログ記事は、報道関係者への批判に満ちているが、それでもなお、通常の研究者に比べて、共生関係という観点から見て、彼ら報道関係者が多大な成功を組織として収めていることに、間違いはない。他方で、研究者にデータを公開(あるいは提供)して、彼らからの信頼と社会からの名声を獲得するという警察の作法は、お世辞にも洗練されたものとはなっていないし、現実に、そのような努力に見合う利益もごく小さなものである。「データの共有を進めれば、犯罪学はより進歩するのに」という研究者の嘆息は、数十年前から見出すことができる。これらの諫言は、研究者当人にとって、このような表出が利益にならないことを思えば、相当に根深い事情を指すものであり、社会が傾聴すべきものであると理解すべきであろう。
2017年9月9日修正
多くの理由から、一旦公開を見合わせていたところ、再度公開することとした。これに伴い、若干の修正を加えているが、大意に変更はない。合わせて、タグの体裁も変更した。
2015年5月14日木曜日
R function to get a catalog XML/JSON file from e-stat.go.jp
Here is the link for a .R file to get a catalog file from Japanese government's statistics portal site, e-Stat.
setwd("downloaded folder")
source("R_estat_functions.R", encoding = "UTF-8")
xml.out <- GetDataCatalog(appId = "your appId: you have to register",
type = "xml",
ver = "2.0",
lang = "J",
statsCode = "00450011", # vital statistics
startPosition = "1",
verbose = FALSE)
# you will get catalog no.1-100 on Vital Statistics.
# there are only 70 tables if you change 'lang' option to "E".
小名浜気象台の相対湿度の確認(2015年4月1日~5月13日と2010年同時期の比較)
下のグラフは、小名浜気象台の2010年4月1日から5月13日までの時間帯別相対湿度(加工済みデータはこちら、作業に用いたスクリプトはこちら)と、2015年の同時期のものを比較するために作成したものである。このグラフは、箱ひげ図といい、ジョン・テューキーにより考案されたものである。箱の上下の辺は、25%分位点と75%分位点を表し、中央の最もくぼんだ部分の高さは、50%点(中央値)を表す。くびれの幅は、正規分布を利用した信頼区間を表し、2010年のくびれと2015年のくびれが重ならない場合、中央値が異なると考えて差し支えない。作業は、統計ソフトウェアのR 3.1.2で行い、ggplot2パッケージを利用した。
![]() |
図: 小名浜気象台の相対湿度: 2010年4月1日~5月13日と2015年同期間の比較 |
高い相対湿度が夜間に生じる気象学上のメカニズムを検討せずに、2010年と2015年の最大値を比較することは、問題を引き起こすと思われる。また、私の手に余る話でもある。以上は、あまりに簡単な作業であるが、ここでの作業によって、飯山氏の仮説は否定されない。また、図からは、データが蓄積されるにつれ、飯山氏の仮説が補強される傾向も読み取れる。であるなら、その仮説をより入念に検証すべきというのが、危機管理の「大きく構えて小さく収める」という考え方であろう。
#以上、グラフ一つだけでも、かなりのことが分かるように思える事例、でもありました。
放火研究の動向(私家版、パート1)
#放火(火災)研究の動向を、通常のレビュー論文よりもメタな観点から、自戒を込めて短時間で不遜に記したいと思います。レビューとしても落第点の手抜き状態で、先進性もなく、生煮え状態のくせに、明日のわが身を考えずに顕名で各業界に喧嘩を売りまくりました。しかし、含みを持たせて表現しない方がわが国と後進のためになると都合良く考えてみましたので、ブログに記すことにしました。なお、括弧書きは、学術的な用法ではない(誰かの引用を表さない)ので、その点、ご容赦ください。
放火「火災」という表現
放火「火災」とは、消防法の所管する(消火活動の専門家でなければ手の付けられなくなった状態の)現象である。「放火火災」を「放火」と記しても、おそらく、消防関係者のほかは、気に留めることはあるまい。消防関係者も、(私の存じ上げる方々は、相対的に心が広めで熱いので、)問題視することはあるまいとも思われる。しかし、このように説明した上で、改めて「放火火災」と表記すると、読者の皆様には、研究者の自主規制を含みうる表現なのだなあ、とご賢察いただけるものと期待するのである。
社会学では、構築主義の観点から、この種の表現(の経緯や差異)を研究対象の範囲に含めている。「放火罪」と記すと、これは、法学者の専門領域になる。精神医学は、抽象的な意味での「放火犯」を相手にする。「放火犯」というように、表現を括弧書きとしたのは、精神疾患などによる責任無能力状態の者も含むためである。「放火火災」と「放火罪」という表現の違いは、実務についてみれば、「消火活動を優先させる」消防関係者と、「放火犯の検挙を目的とする」警察関係者との違いでもある。
「放火」や、その上位概念の「防犯」のような、組織間の連携・協調が必要な研究分野では、表現ひとつにも留意することが必要であるし、また、そうして初めて、総合的で効率的な対策の糸口も開けようというものである。しかし、幸か不幸か、これらの要素にまんべんなく目配りし、総合的に実務への還元効率を測定できるまでに入念に実施された放火の(また防犯の)政策評価研究は、今までに存在しない。放火犯一人や不燃建築物一棟についての限界効用を計測できるようになってしまうと、個別の研究分野には都合が悪い。放火に関わる多くの学問分野では、手弁当で実施可能な研究は限られており、追加的な研究予算を獲得することが必須業務であるためである。
放火に係る政策評価研究の袋小路
困ったことに、私が学んだ環境犯罪学は、このような要素間の兼ね合いを理解の基本に据えている。環境犯罪学に基づく放火研究では、放火を、「放火犯が、放火しやすいところで、放火しやすい物品に火を点ける」というイベントとして理解して予防しようとする。「放火犯(犯行企図者)、放火対象物及び着火物(潜在的な対象物)、ご近所の目(抑止する存在の欠如)」という三要素のいずれに公的な資源を集中すべきかという問題は、それほど話題に上らないものの、実際、解答が必要である。人口減を受けて経済が(ほぼ必然的に)縮小する中、公共が支出できる予算も人員も減少するのが当然であるからである。
ただ、「こうした三種類の要素のうち、どの要素が効果的であるのか」という問いを立てることは、今のところ、現在のわが国の犯罪学界隈で利用されている標準的な回帰分析による限り、かなり無謀である。本点に係る現時点の環境犯罪学研究では、要素の組合せ(交互作用という。)に対する考察が不十分である。この課題を解決するためには、従来使われてきた手法を新規性のあるものに変えるか、または、優れた考察によって不要な交互作用を捨象するという作業が必要とされている。そもそも、従来の回帰分析による環境犯罪学研究では、交互作用は、ほぼ忘れ去られている。
従来型の回帰分析により先の問いを力押しで解くことが無理なことを、数字で示そう。ABC三種の要素を挙げた場合、ABCすべての組合せによる交互作用項(A:B:C,1種※1)、要素2種類からなる交互作用項(A:B,B:C,C:Aの3種)+要素一種のみの独立項(A,B,Cの3種)という、計7種類の影響を考えることができる。しかし、3種の要素に正確に対応する統計を収集することは、無理な話であるから、適当に3種類の統計によって各要素を代表させることを考えてみよう。すると、計9種類の要素では、合計で511(=2の9乗-1)通りの項が式に含まれることになる。これだけの項を含む式を十分な精度で分析するには、伝統的な方法では、2の511乗の個数以上のデータが欲しいところである。しかし、これは、約6.7*10^153であり、とても用意することができない数である。
従来型の方法では、程度の差こそあれ、どのみち直感に頼って作り上げられたモデルを元にする以上、利用する統計の種類が分析の見た目を左右する。もはや統計分析ソフトウェアを一から開発する必要はないし、そのような必要を強く主張する研究者もいないであろうから、誰でも、同じ統計を用いれば、同じような結果に辿り着ける※2。良心的に先行研究を読み込んで変数の集合を選択しても、分析結果は大差ないように見える。結局、使える統計が同じだと、事前の考察の深浅にかかわらず、誰もが同じような結果を得ることになりがちである。
疎行列を取り扱うことができる統計パッケージを用いたり、マルコフ連鎖モンテカルロ法を援用して交互作用を絞り込む統計パッケージを用いれば、ここで見たような直感的なモデル構築を避けられるかもしれない。ただし、期待されるような結果が得られるかどうかは、試してみなければ分からないし、後者は、人間の頭脳で交互作用を取捨選択した結果と比べて優れているかどうか、保証されるわけではなさそうである。新規性のある手法が成功したように見えるか否かは、分析したい現象の構造が事前に知られているかどうかに依存しそうである。
放火研究の評価というよりも、より包括的に、犯罪研究の評価について語っている塩梅になってきたが、これでようやく説明のお膳立ての元となる「政策科学系の放火研究の怪しさ・相場観」の説明が終わったと思うので、次回は、放火研究の評価に話の焦点を戻すことにしたい。繰り返しになるが、ルーティン・アクティビティ理論がいくら直感的に優れているように見えても、これを従来の統計的手法により説明しようとする試みは、いかにも無謀である。しかし、少なくとも、わが国における環境犯罪学界隈で、この事実は真剣かつ深刻に受け止められていない。これは、新規性のある知見ではなく、どちらかといえば常識の部類に入る。
※1 ここでの表記は、Rの記法に従う。Rのlm関数では、A*B*Cと表記すると、全交互作用項を自動的に推定してくれる。個別に交互作用項を設定したい場合は、A:Bのように表記する。
※2 だからこそ、GNUライセンスであるRは、大変ありがたいプラットフォームであり、今や、必須の研究インフラであると思う。しかし、それだけに、青木繁伸先生がRやExcelの関数におかしなところがある場合に警告されてきたことには、注意しておきたいとも思う。
(次回に続く)2017年9月9日訂正
語尾の「だ」と「である」の混在を解消した。brタグをpタグに変更した。リンク切れを解消した。