昨日は毎年参加している、地域の将棋大会だった。
今年は家庭が多忙で準備不足だったので、良くて1回戦敗退だろうなと期待せずに参加したら、予想通り、危なっかしく予選突破して、決勝トーナメントの1回戦で敗退した。

予選は2勝1敗、2勝は同じ人から(4人のグループで2戦目は勝った者同士、負けた者同士で対局するので1/3の確率で3戦目は初戦と同じ組み合わせになる)で、2局とも角換わり棒銀で一時必敗になりながら逆転勝ちした。筆者はネット将棋では角換わり棒銀で勝てることが少ないが、この大会の予選ではほぼ全勝で相性が良いようである。

決勝の1回戦の相手は昨年に続きまた優勝常連のI藤さんだった。その時点で準備万端だろうが体調万全だろうが関係なく1回戦敗退が決定したのだが、昨年に続き、筆者に感触の良い手が出た。


この△5七銀である。(筆者が後手)

しかし、昨年と違って、後で激指14で解析すると、この局面の評価値はほぼ±0で、それほど良くなかった。
筆者はこの△5七銀でかなり有利になったと思っていたのだが、そうでもないのか。

しかも、予定通りに飛車を成り込んだ、

この局面では少しマイナスの値(後手有利)に傾いたものの、ここから▲4七銀打 △3七角成 ▲同桂と進んだ局面はプラスの値(先手有利)になっている。

上記の△5七銀の局面を目指して、結構頭を使ってその局面に持ち込んだのだが、無駄な努力だったようだ。このように大局観というか局面の評価が間違ってるのが、筆者がアマ三段から上に行けない原因なのだろう。
確かに、全て清算した後は後手の駒損だし、後手が飛車を成り込んでも先手の方が陣形が良く、持ち駒の銀で固めることができて、容易に攻めれそうにない。
それでも、筆者としては、飛車を成り込むのはとても気持ち良かったのである。

その後、相手がI藤さんであることを敢えて意識しないようにして、気持ち良く指し続けて、次の局面になった。

この局面で▲5三角打とされ、△3四竜と桂馬を抜いて、必勝になったと思ったら、次の▲4四歩でしびれてしまった(と思った)。

局後の感想戦でも、△3四竜は見落としで、一瞬投げようかと思った、とI藤さんが言ってたし、横で見ていた知人と予選で2局指した人も、△3四竜で筆者の勝ちになったと思ったが次の▲4四歩でわからなくなったと言っていた。
しかし、激指14の評価は△3四竜の時点で+500(先手有利)、▲4四歩でも特に変わらず(しかも▲4四歩は最善ではない、最善は▲3一角成〜▲5三角成)、△5二桂▲4三歩成△同竜の次の▲4四金が疑問手で評価値が-200に振れ、次の△4一竜が悪手で+1000に振れていた。

筆者は▲4四歩の時点で必ずこの▲4四金まで進むと思っていたし、実際この▲4四金でどうしようも無くなったと思ったが、これが疑問手とは驚いた。ここで△5三竜 ▲同金 △5八歩成とすれば互角だったようだ。

一局を通して筆者が優勢だった区間はほとんど無かったようだ。どこで間違ったのだろう、と思って解析したら最初から全て間違っていたということであり、筆者の大局観はそれほどまでに間違っているのかと驚かされた。

昨年はこれほどまでには激指14の評価と自分の評価がずれていなかったと思う。筆者はここ半年くらい、パソコンで将棋ウォーズの3分将棋をよくやっているが、3分将棋は苦手でずっと初段である(10分将棋と10秒将棋は三段)。すると対戦相手も初段レベル前後なので、大局観がそのレベルで勝ちやすいかどうかになってしまったのかも知れない。

火曜日生まれの男の子が...

子供を2人持つ母親に、「火曜日生まれの男の子がいますか?」と聞いたら、「はい」と答えた。もう1人の子供も男の子である確率は?

2010年7月、筆者が数学好きだということを知っていた職場の後輩から、帰り道にこんな問題を、答えは1/2でないという注釈付きで教わった。それに対して、筆者が夜中に結構悩んでやっと問題の意味を理解し、13/27だと計算したと送ったメールを先週発掘したので、今は亡き後輩を偲んでもう一度夜中にやってみたら、結構悩んだ。

例えば、上記の「火曜日生まれ」を取り除いて、問題を

子供を2人持つ母親に、「男の子がいますか?」と聞いたら、「はい」と答えた。もう1人の子供も男の子である確率は?
に変えると、問題の意味がわかってくる。2人の子供のどちらか一方について「男の子ですか?」と聞いたのではないので、もしどちらか一方だけが男の子であれば、この「はい」によって既に答えられているのである。「男の子がいますか?」に「はい」と答えられる確率は1/2ではなく3/4なので、その分、その中でもう1人も男の子である確率は1/2より低くなる。
従って、問題の意味は「少なくとも1人が男の子である」場合の中の「2人とも男の子である」確率であり、答えは(2人とも男の子である確率)÷(少なくとも1人が男の子である確率)= (1/4)÷(3/4) = 1/3ということになる。
図で書くと、次のように表せるだろうか。
少なくとも1人男の子がいるのは黄色部分3パターンであり、その中でもう一人も男の子なのは*部分1パターンだけなので、その確率は1/3である。
つまり、この問題も冒頭の問題も、母集団を限定した確率を問う問題、即ち条件付き確率の問題である。

従って、冒頭の問題の答えは、(1人が火曜生まれの男の子、もう1人も男の子の確率)÷(少なくとも1人が火曜生まれの男の子である確率) = ((1/14)*(1/2) + (1/2)*(1/14) - (1/14)2) / (1 - (1 - 1/14)2) = 13/27 となる。
同じように図で書くと、次のようになる。















男日
男月
男火
男水
男木
男金
男土
女日
女月
女火
女水
女木
女金
女土
母集団が黄色の部分に限定された場合の中の*の割合なので、13/27である。

すっきりして、きっと有名な問題なんだろうなと思って調べてみたら、ネタ元はBBC Newsの2010年6月の記事、"Tuesday boy"だとわかり、次のような問題文が書かれていた。

"I have two children. One is a boy born on a Tuesday. What is the probability I have two boys?"
記事の初めにこれの答えは13/27と書いてあるが、見た瞬間、この問題文だと答えは13/27にはならないのではないかと思った。
その違和感が何に起因するのかがはっきりとわからず、1週間悩んでいる。

冒頭の問題で、「はい」と答えた母親ばかり集めれば、確率は13/27になることは、例えば次のようなプログラム(in Python)でシミュレーションすれは確認できる。

from random import randint

N = 100000
n = 0
hit = 0
while n < N:
    boy1 = randint(0, 1)	# 1: boy, 0: girl
    day1 = randint(1, 7)	# 1: Sun, 2: Mon, 3: Tue, ...
    boy2 = randint(0, 1)
    day2 = randint(1, 7)
    if boy1 == 1 and day1 == 3:
        n += 1
        if boy2 == 1:
            hit += 1
    elif boy2 == 1 and day2 == 3:
        n += 1
        if boy1 == 1:
            hit += 1

print(hit / N)
ではBBC Newsの問題はこのシミュレーションに当てはまるだろうか?と考えると、筆者には当てはまるように思える時もあるし、そうでないように思える時もある。

筆者にとって、BBC Newsの問題の違和感の原因の1つは、"born on a Tuesday"といった情報が親から自発的に付け加えられていることである。これによってもう一方の子が男の子である確率が1/3から変化するのであれば、親がその"a boy"に関する情報をさらに付け加えればまたもう一方の子に関する確率が変化することになる。

"One is a boy"に情報を付け加えれば付け加えるほど、重複する確率が下がり、求める確率は1/2に近づく。「少なくとも一方が」の意味が薄れ、もう一方の子の情報が無くなっていくとも言えよう。そうであれば、用いるべきは最も求める確率を左右する情報である"One is a boy"のみではないか、従って求める確率は1/3ではないかと思えてくる。
逆に、"One is a boy"も自発的に出された情報なので、「少なくとも1人は」男の子という意味で出されたのでない、例えば年上の子など、1人だけについて言ったものかも知れないと考えれば、もう1人については何も情報が無く、答えは1/2のように思える。

それに対し、冒頭の問題では水曜日生まれの男の子がいても「はい」とは答えられなかったので、「火曜日生まれ」という情報を無視することはできないし、どちらの子かを特定せずに質問したので、「少なくとも1人は」火曜日生まれの男の子だということになり、条件付き確率は間違いなく13/27である。

あるソフトウェアをバージョンアップしたら、処理時間が少し伸びた。
計測結果は、次のような感じだった。

入力データ処理時間(before)処理時間(after)
1300360
2200180
3100120
4500480
5400440
612001300
7250270
8200210
915001800
1010001100

ぱっと見で明らかに悪化しているが、念の為、統計学的に有意な差であることを示しておこうと思って、Excelの分析ツールの「t検定: 一対の標本による平均の検定」(いわゆる対応のあるt検定)を使ったら、p値が意外と小さくなかった。例えば上記のデータだと両側検定で0.0706となる。
それでも、有意水準を10%とすると有意差ありと言えないことはないので、不本意ながらその結果を付けて報告した。

そのメールを発信した日の帰り道に、このt検定は妥当な計算がなされていないのではないかと疑問に思った。 同じ入力データのセットを使ったのでbeforeとafterで対応があるが、入力データはサイズがまちまちなので、(after-before)の差それぞれは同列に扱えない。(after-before)の単純な差でなく、差分の比率、それぞれ何%増であるかが検定の対象である。 専門的に言うと、t検定は標本の母集団が正規分布に従うのが前提であるが、この(after-before)の差は正規分布に従うはずがないので、t検定を用いるのは不適切だということになるだろう。

もしかして、Excelの分析ツールの「t検定: 一対の標本による平均の検定」はそれも考慮したp値を計算してたりしないだろうか、と期待したが、結果を確かめてみると、一般的な「対応のあるt検定」と同様、
t=\frac{\bar{d}}{s/\sqrt{n}}
(dは対応のある数値の差、dの上のバーは平均、sは不偏標準偏差、nは標本データ数)
というt値と、それに対応する自由度n-1のt分布における外側確率だった。

こういった、差分の比率を検定したいケースはよくあると思うので、何か定番の方法があるのではないかと思って少し探したが、全く見つからなかった。

対応するデータの差分を、正規分布に従うように補正(正規化)してt検定すれば良いのだが、よく考えると、一般的には差分をbeforeの値で割ったものが正規分布に従う保証は無いのである。今回のデータが、計算量が入力データのサイズに比例する処理時間であることがわかっているから、差分をbeforeで割ったら大よそ正規分布に従うという仮定を置けるが、もし計算量のオーダーがO(n)でなくO(n2)だったら、差分のオーダーもO(n2)ならbeforeの平方根で割るべきかも知れないし、差分のオーダーが不明なら正規化のしようが無いかも知れない。

今回は結局、対応するデータの差をbeforeとafterの平均で割ることによって正規化し、t検定をやり直した。単純にbeforeの値で割って正規化しても良いだろうが、before→afterとafter→beforeを対称に扱う為、例えば80→100と100→80が相殺されるようにする為にこのようにした。考え過ぎか。
例えば上記のデータだと、このように正規化して計算すると、両側検定のp値が0.0267となる。

サイコロを振って1,2,3,4,5,6の目が出た回数がそれぞれn1,n2,n3,n4,n5,n6だった時、それぞれの目が出る確率p1,p2,p3,p4,p5,p6は(n1,n2,n3,n4,n5,n6)をパラメーターとするディレクトリ分布に従う、という話を聞いたので、ちょっと勉強しておくことにした。

コインの表が出る確率がpの時、N回振って表が出る回数nはNとpをパラメーターとする二項分布に従う。
コインをN回振って表が出た回数がn回だと観測された時、点推定では表が出る確率はn/Nとなるが、ベイズ推定では表が出る確率(事後確率)pは(n+1, N-n+1)をパラメーターとするベータ分布に従う。
勝手な表記だが、回数がnになる確率P(n)が
P(n;N,p)=Binomial\_PMF(n;N,p)=\pmatrix{N \cr n}p^n(1-p)^{N-n}
(PMF=Probability mass function)という感じであり、事後確率がpになる確率の密度関数f(p)が
f(p;N,n)=Beta\_PDF(p;n+1,N-n+1)=\frac{\Gamma(N+1)}{\Gamma(n+1)\Gamma(N-n+1)}p^n(1-p)^{N-n}=\pmatrix{N \cr n}p^n(1-p)^{N-n}
(PDF: probability density function)ということになる。
この関係のことを、ベイズ推定の用語で、尤度関数が二項分布の場合、ベータ分布は共役事前分布(conjugate prior)であると言うらしい。

多項分布とディリクレ分布もその関係にある。
サイコロをN回振って1〜6の目が出る確率がp1〜p6の時、1〜6の目が出る回数n1〜n6はp1〜p6をパラメーターとする多項分布に従う。(n1+n2+n3+n4+n5+n6=N, p1+p2+p3+p4+p5+p6=1)
サイコロをN回振って1〜6の目が出た回数がそれぞれn1〜n6回だと観測された時、推定される1〜6の目が出る事後確率p1〜p6は(n1+1, n2+1, n3+1, n4+1, n5+1, n6+1)をパラメーターとするディリクレ分布に従う。
nをn1〜n6のベクトル、pをp1〜p6のベクトルとすると、回数がnになる確率P(n)が
P(n;p)=Multinomial\_PMF(n;p)=\frac{\left(\sum_{k=1}^{6}n_k\right)!}{\prod_{k=1}^{6}n_k!}\prod_{k=1}^{6}p_k^{n_k}
であり、事後確率がpになる確率の密度関数f(p)が
f(p;n)=Dirichlet\_PDF(p;n+1)=\frac{\Gamma\left((\sum_{k=1}^6n_k)+1\right)}{\prod_{k=1}^6\Gamma(n_k+1)}\prod_{k=1}^6p_k^{n_k}=\frac{\left(\sum_{k=1}^6n_k\right)!}{\prod_{k=1}^6n_k!}\prod_{k=1}^6p_k^{n_k}
ということである。

ディリクレ分布はベータ分布の確率変数の次元を拡張したものである。
上記のコインの例も多項分布とディリクレ分布で表現でき、コインの表が出る確率がp1、裏が出る確率がp2の時、N回振って表が出る回数n1と裏が出る確率n2は(p1, p2)をパラメーターとする多項分布に従う。
コインをN回振って表が出た回数n1回、裏が出た回数がn2だと観測された時、表が出る事後確率p1、裏が出る事後確率p2は(n1+1, n2+1)をパラメーターとするディリクレ分布に従う。

図1はパラメーターを(3n+1, 2n+1)、n=1〜10としたベータ分布のグラフである。 コインを投げて5回中3回、10回中6回、15回中9回、...、50回中30回、表が出た時の表が出る確率の分布に対応する。
図1
5回中3回でも表が出る確率が0.6である確率が最も高いが、他の確率である確率もそれなりに高いのに対し、回数を増すほど確率が0.6近辺に限定されていく様子がわかる。
最尤推定のような点推定では5回中3回でも50回中30回でも単に0.6であり、その尤もらしさが区別されない。

図2は同様にパラメーターを(3n+1, n+1)、n=1〜10としたベータ分布のグラフである。 コインを投げて4回中3回、8回中6回、...、40回中30回、表が出た時の表が出る確率の分布に対応する。 図2

図3はパラメーターを(2+1, 3+1, 5+1)とした3次元のディリクレ分布のグラフである。 3面しか無いサイコロを10回振って各面が2回、3回、5回出た時の各面が出る確率の分布に相当する。
図3
ちょっとややこしいが、三角形の各頂点がサイコロの各面に対応し、三角形内の各頂点への近さが各面の出る確率に対応し、上方向の高さがその確率の組み合わせになる確率であり、高いほど高温の色になっている。右下の頂点が1つ目の面、右上の頂点が2つ目の面、左の頂点が3つ目の面に対応する。XYZ空間で右下の頂点が(1,0,0)、右上の頂点が(0,1,0)、左の頂点が(0,0,1)にあるとすれば、三角形内の点のX座標、Y座標、Z座標が各面の出る確率である。
上から見ると、図4のようなヒートマップになる。
図4
(0.2, 0.3, 0.5)に対応しそうな所が頂点になっている。

図5はパラメーターを(20+1, 30+1, 50+1)とした3次元のディリクレ分布のグラフである。 3面しか無いサイコロを100回振って各面が20回、30回、50回出た時の各面が出る確率の分布に相当する。
図5
図6は上から見た図である。
図6
それぞれの面が出た割合が同じでも、回数を重ねた方が確率が高い範囲が限定される様子がわかる。

筆者はEmacsでPythonのコードを書く時に補完機能としてJedi+CompanyModeを使っているが、筆者の環境では数字に対しておかしな補完が働く。

例えば、

このように、数字を打つと"and"などが補完候補として現れ、Enterキーを押すと

このように、打った数字が消えて"and"になってしまう。

そして慌てて"and"を消してもう一度数字を入力してEnterを押すと、また"and"になるのである。
これは不便である。

CompanyModeでなくAutoCompleteだと同じことにはならないが、やはりおかしな補完が起こることがある。

このように、数字を1文字打つと"if"などが補完候補として現れ、Enterキーを押すと

このように、"if"が足される。

筆者の環境は以下である。
・macOS Sierra バージョン10.12.6
・Emacs 24.5.1 (https://emacsformacosx.comからダウンロード)
 ※同サイトからダウンロードしたEmacs 25.2でも起こる
・jedi 20160425.2156
・company-jedi 20151216.1921

.emacsは次のものだけにしても再現する。

(require 'package)
(package-initialize)

;; for Jedi + company
(require 'company)
(add-hook 'python-mode-hook 'company-mode)
(add-to-list 'company-backends 'company-jedi)

;; for Jedi + auto-complete / company-mode
(require 'jedi-core)
(setq jedi:complete-on-dot t)
(add-hook 'python-mode-hook 'jedi:setup)

Webで調べても、同じ症状の話はほとんど見つからない。
唯一見つけたのは、https://github.com/jorgenschaefer/elpy/issues/1115である。昨年に見つけて時々チェックしているが、今年に入って、筆者と同じ症状の報告が追加された。しかし、私には再現できていないという書き込みや、Jediの問題ではない、Python的に間違った補完ではない(??)、Elpyで回避可能といった書き込みがあり、すぐに修正されそうには見えない。

とりあえずの対策として .emacs に

(setq company-idle-delay 0.5)

を加えて、キー入力から0.5秒間は補完が働かないようにした。

以前にやったFamily Out Problemの事後確率計算は、ベイジアンネットワークらしくない計算だったことに気付いた。ネットワーク全体をまとめて計算するのでは、ネットワークの構造を無視して確率モデル全体に対してベイズの定理を使ってるだけである。ベイジアンネットワークにしてるからには、新たな情報が追加される度に、ノード毎の事前確率が事後確率に更新されるべきであろう。

問題を再掲する。


Family Out Problem

これのP(fo | lo, hb)を計算する。

この初期状態の事前確率は、単純に上から全パターンの確率を足し合わせて、
(P(fo), P(bp), P(lo), P(do), P(hb)) = (0.15, 0.01, 0.1325, 0.3958, 0.2831)
と求まる。

次に、loが確定した(lo=True, ¬lo=False)として、それに合わないP(fo)を事後確率に更新する。
ベイズの定理より、条件付き確率P(fo | lo)は
P(fo|lo) = \frac{P(lo|fo)P(fo)}{P(lo)} = \frac{P(lo|fo)P(fo)}{P(lo|fo)P(fo) + P(lo|\lnot fo)P(\lnot fo)}
= (0.15 * 0.6) / (0.15 * 0.6 + 0.85 * 0.05) = 0.6792...
であり、これに事後確率P(lo)=1.0を掛けたものがfoの事後確率なので、これを新たなP(fo)とする。
P(do), P(hb)はP(fo)に依存するので、これらも計算し直すと、
(P(fo), P(bp), P(lo), P(do), P(hb)) = (0.6792, 0.01, 1.0, 0.7103, 0.5001)
となる。

次に、hbが確定したとして、それに合わせるべく、関係する事前確率を事後確率に更新する。

まず、hbが直接依存するdoの条件付き確率は、しつこいがベイズの定理より、
P(do|hb) = \frac{P(hb|do)P(do)}{P(hb)} = \frac{P(hb|do)P(do)}{P(hb|do)P(do) + P(hb|\lnot do)P(\lnot do)}
= (0.7 * 0.7103) / (0.7 * 0.7103 + 0.01 * 0.2897) = 0.9942...
であり、hbの事後確率が1.0なので、doの事後確率がこれになる。

次に、doが依存するfoの事後確率は、¬doの事後確率 ≠ 0.0なので、¬doを考慮して P(fo|do)P(do) + P(fo|¬do)P(¬do) と計算することになる。見た目にもかなりしつこいがベイズの定理より、条件付き確率は
P(fo|do) = \frac{P(do|fo)P(fo)}{P(do)} = \frac{P(do|fo,bp)P(fo)P(bp)+P(do|fo,\lnot bp)P(fo)P(\lnot bp)}{P(do|fo,bp)P(fo)P(bp)+P(do|fo,\lnot bp)P(fo)P(\lnot bp)+P(do|\lnot fo,bp)P(\lnot fo)P(bp)+P(do|\lnot fo,\lnot bp)P(\lnot fo)P(\lnot bp)}
= (0.99 * 0.6792 * 0.01 + 0.90 * 0.6792 * 0.99) / (0.99 * 0.6792 * 0.01 + 0.90 * 0.6792 * 0.99 + 0.97 * 0.3208 * 0.01 + 0.3 * 0.3208 * 0.99) = 0.86147...
P(fo|\lnot do) = \frac{P(\lnot do|fo)P(fo)}{P(\lnot do)} = \frac{P(\lnot do|fo,bp)P(fo)P(bp)+P(\lnot do|fo,\lnot bp)P(fo)P(\lnot bp)}{P(\lnot do|fo,bp)P(fo)P(bp)+P(\lnot do|fo,\lnot bp)P(fo)P(\lnot bp)+P(\lnot do|\lnot fo,bp)P(\lnot fo)P(bp)+P(\lnot do|\lnot fo,\lnot bp)P(\lnot fo)P(\lnot bp)}
= (0.01 * 0.6792 * 0.01 + 0.10 * 0.6792 * 0.99) / (0.01 * 0.6792 * 0.01 + 0.10 * 0.6792 * 0.99 + 0.03 * 0.3208 * 0.01 + 0.7 * 0.3208 * 0.99) = 0.23232...
なので、foの事後確率はdo及び¬doの事後確率を用いて、
P(fo|do)P(do) + P(fo|¬do)P(¬do) = 0.86147 * 0.9942 + 0.23232 * (1 - 0.9942) = 0.8578...
と計算できる。

bpの事後確率も同様に計算できるので、ついでに計算してまとめると、
(P(fo), P(bp), P(lo), P(do), P(hb)) = (0.8579, 0.0138, 1.0, 0.9942, 1.0)
となる。

先月、フォトマスター検定の1級を受験した。自己採点は71/80で、合格ラインは7割なので無事合格したことはわかってたのだが、昨日、合格通知と共に、優秀個人賞の賞状が届いた。

成績の上位10名程度がもらえるとされるものである。
今年は合格したらバッジがプレゼントされるということもあり、記念に受験したものだが、良い記念になった。

筆者は数年前から仕事で少々カメラに関わりがあり、会社の勧めで一昨年にフォトマスター検定の準1級を受験して、平凡に正解率80%くらいで合格した。
それからほとんどカメラを使わないまま2年近く経った今年の夏には、勉強したことをすっかり忘れて、絞り値=焦点距離÷レンズ口径という基本的なことまで思い出せなくなっていた。

今年も社内でフォトマスター検定について講義する当番が回ってきて、しかも昨年と違ってテーマが決められていたので、かなり時間をかけて復習する羽目になりそうだった。
それに費やす時間が勿体無いし、筆者のカメラに対する興味が薄れており、今年受験しなかったら二度と受けない可能性が高いので、復習するついでに1級を受験することにした。

8月に「フォトマスター検定合格 平成29年度版」のテキスト部分を一通り読んだ後、過去3年分の3級~1級の問題、計12セットを選択問題も含めて全て解いた。この時の1級の問題の正解率は70〜80%だった。
9月に、その3年分の過去問から割り当てられたテーマ(フィルム、レタッチ)に合った問題をピックアップして出題傾向を分析し、講義用の資料を作った。
11月に入ってからもう一度テキストを通して読み(時間が足りなくて読み切れなかったが)、並行して過去3年分の3級~1級の問題をもう一度全て解いた。この時には8月に過去問を解いた時の記憶が半分以上無くなってて、正解を見た全く同じ問題を解いたので満点でもおかしくなかったのに、1級の問題の正解率は80%〜85%程度だった。

そんな感じだったので、11/19の本番の正解率89%は運が味方したかも知れない。

筆者は居飛車党ながら、相掛かりが大の苦手なので、先手番で横歩取り模様になったら勉強不足なのに諦めて横歩を取るのだが、今年に入って、何故か4五角戦法をよく仕掛けられる。

これである。最近また流行ってるのだろうか?

実は筆者が定跡の勉強を始めた20年くらい前に最初に覚えた定跡が横歩取り4五角戦法で、結構馴染み深いのだが、指しこなせなかったのでやめ、相手から仕掛けられたことも観戦したことも少なかったので、うろ覚えになっていた。
そんな曖昧な記憶の中であるが、今年はこれまで見たことが無い手を色々食らった。
それらについて、少し調べたことと合わせてメモしておく。

1. ▲3六香△同角の後△5四香でなく△5五香
△4五角の後のオーソドックスな手順は、▲2四飛△2三歩▲7七角△8八飛成▲同角△2四歩▲1一角成△3三桂▲3六香

であり、ここで△同角▲同歩△5四香

という、角香交換の駒損をしながら攻める、筆者のような素人には理解不能だが有望とされる有名な手があるが、この前、△5四香でなく△5五香とされた。

△5四香には▲8五飛で先手優勢、が定跡の教える所であり、△5五香なら▲8五飛が香取りになりさらに条件が良さそうなので、迷わず▲8五飛と打ったら、△2五飛とされて罠に嵌ってしまった。

銀取りと△5七香不成からの飛車の素抜きを同時に受ける術が無い。

調べてみたら、これは昔から知られている手で、この△5四香には▲8五飛、という固定観念を持っている筆者のような人間をターゲットにしたハメ手らしい。
見事にはまってしまった。

△5五香に対する正解は▲4六角または▲6六角らしい。△5四香相手だと今1つとされる手だが、この場合は香当たりになるので良いとのこと。これに対し△8六飛〜△7六飛〜角取りが気になるが、△8六飛に▲7七桂で何とか凌げるということか。


2. ▲3六香△6六銀の後、△6九飛▲3九飛を入れずに△6七銀成
上記の▲3六香には△同角でなく△6六銀が最有力とされ、その後は▲5八金△3八飛▲4八飛△同飛成▲同玉

△6九飛▲3九飛△6七銀成▲6九飛△5八成銀▲同玉△7八角成▲6三飛成△6二銀▲6六竜△3八金▲3九銀打△6七歩▲3八銀△6八馬▲4八玉△5八金▲3九玉

で先手良しというのが昔からある、もし途中で▲6六竜を形良く▲6五竜としてるとここで△5七馬で詰んでしまうことでも有名な定跡手順である。

この前、この手順に沿って指してたら、上図の▲4八同玉にいきなり△6七銀成とされ、▲同金右△同角成▲同金△8八飛とされた。

△3八飛▲4八飛△同飛成▲同玉を入れずに△6七銀成とする手は「羽生の頭脳」の第10巻にも書かれており、▲同金右△同角成▲同金△8八飛に▲6八金引△8九飛成▲6九歩で先手の勝ち筋と書かれているが、△3八飛▲4八飛△同飛成▲同玉を入れてからだと▲6八金引とできないので、底歩が打てないのである。
この手は見たことが無かった。

実戦は△8八飛の後、▲6八歩△8九飛成▲3九飛△同竜▲同銀△8九飛▲3八銀△2八金▲4九銀打△2六桂で、終盤力の無い自称アマ三段らしく自滅して終了してしまった。
▲3八銀が大悪手で話にならないが、ここまで来ると、▲3八銀打や▲1六角(激指14推奨)などとしても形が悪いので受け切れないと思う。

感想戦で対戦相手の人が、昔、中部地方の有名なアマ強豪(元朝日名人)にこれを食らって負け、未だに対策がわからないと言っていた。

その後、参考文献[1]にこの手が書かれているのを見つけた。△8八飛には▲6八銀、後手の攻めが一段落したら攻め合えば良いと書かれていたと思う。激指14の推奨手もこれである。

確かに▲6四歩が残っている分、後手を攻めやすそうではあるが、問題は後手の攻めを一段落させられるかどうかである。相変わらず底歩が打てないので、なかなか安全な形にならないように思う。
この後は△8九飛成▲3九飛△同竜▲同銀△8九飛▲5九飛△同飛成▲同銀

くらいだろうか。盤上に受け駒を1枚増やせてる分、少しましのようには思うが、後手からは△3八歩や△5五桂や△8八飛があり、やはり筆者には受け切れそうに無い。


3. △3三桂跳ばずに△8七銀
上記の△3三桂▲3六香の後に△8七銀とするのも有名な手で、横歩取り4五角戦法を覚えた頃の筆者は奇襲っぽさが気に入ってこれしか指さなかったのだが、最近は△3三桂とせずに△8七銀とする手をよく見かける。

「羽生の頭脳」第10巻では▲7七馬△7六銀不成▲6八馬△8八歩▲7七歩△8九歩成▲7六歩△9九と▲3六香

△3三香▲1一飛
で先手良しとされている手である。

筆者は20年前にこれを読んで以来、▲1一角成の直後の△8七銀を実際に指されたのを見たことが無かった。それが、昨年度のNHK将棋講座で紹介され、筆者は今年に入って100局も指してない中で少なくとも2回食らった。
NHK将棋講座の手順は、▲7七歩に△6七銀成▲同金△8九歩成▲5六歩で先手良しである。

△6七銀成は▲3六香に△3五歩(▲同香なら△2五飛)とする歩を用意したもの、▲5六歩はその△3五歩を消した手なのだろうか。

筆者は「羽生の頭脳」の手順もNHK将棋講座の手順も覚えておらず、△8八歩に全て▲7七桂と指して、△8九飛やら△8九歩成〜△7九とやらでやられてしまった。

しかし、参考文献[1]には上記▲5六歩の局面は先手難しいと書かれており、△8八歩に▲7七歩ではなく▲4六飛が本線とされて難解な手順が続き、さらに△7六銀不成には▲同馬△2六飛▲2七歩でもいい勝負と書いてあり、訳がわからない。
とにかく難解のようだ。

統計学の検定で、有意水準といえば5%である。
有意水準とは、ある仮説の下でそれより低い確率でしか起こらないはずのことが観測されたら、それはたまたまでなく意味が有り、その仮説が誤っていると判断する、確率のしきい値のことである。
1%もよく使われるし、5%に限らないと教わるが、使われるのは圧倒的に5%=0.05である。
何故0.05かについては、筆者は寡聞にして、これまで根拠や由来を目にしたことが無かった。

数ヶ月前にある所で、この0.05は統計学の大家であるフィッシャーが決めたもので、その理由は、フィッシャーが30歳の頃に、研究者としてあと20年仕事して引退するとして、その内1年くらいは失敗するだろうと思ったから、というような話を聞いた。
その話に興味を持って、結構時間をかけてWeb検索してみたのだが、それに近い話は1つも見つからなかった。有名な話なら1つくらいは見つかりそうなものなので、この話が有名だという仮説は棄却するしかなさそうだ。

有意水準として0.05という数字を最初に記したのはフィッシャーだという話はすぐに大量に見つかった。
いくつか読んだので、筆者なりにまとめておく。

"On the Origins of the .05 Level of Statistical Significance"より:

Fisher's (1925) statement in his book, Statistical Methods for Research Workers, seems to be the first specific mention of the p=.05 level as determining statistical significance.
It is convenient to take this point as a limit in judging whether a deviation is to be considered significant or not. Deviations exceeding twice the standard deviation are thus formally regarded as significant. (p. 47)

参考リンク[2]からダウンロードできる"Statistical Methods for Research Workers"の5th editionではp.45だが、上記引用部の少し前から引用すると、

The value for which P=.05, or 1 in 20, is 1.96 or nearly 2; it is convenient to take this point as a limit in judging whether a deviation is to be considered significant or not. Deviations exceeding twice the standard deviation are thus formally regarded as significant.

となっており、これが歴史上初めて、有意水準を0.05とすると便利だと記したものということらしく、至る所に引用されている。
便利である理由は、平均μ、標準偏差σの正規分布に従う確率変数がμ±2σの範囲外の値を取る確率(つまり、平均から標準偏差の2倍以上外れる確率)がほぼ5%でわかりやすいから、と読み取れる。

In the 1926 article Fisher acknowledges that other levels may be used:
If one in twenty does not seem high enough odds, we may, if we prefer it, draw the line at one in fifty (the 2 per cent point), or one in a hundred (the 1 per cent point). Personally, the writer prefers to set a low standard of significance at the 5 per cent point, and ignore entirely all results which fail to reach this level. A scientific fact should be regarded as experimentally established only if a properly designed experiment rarely fails to give this level of significance. (p. 504)

この部分も多数引用されているが、5%にしても2%にしても1%にしても良いが、Fisher自身は5%を好む、とだけ書かれており、特別に理由があった訳ではないと読める。

そもそもFisher以前から大体5%くらいの値が使われていたことについて、以下のように書かれている。

With respect to the determination of a level of significance, Student's (1908) article, in which he published his derivation of the t test, stated that "three times the probable error in the normal curve, for most purposes, would be considered significant" (p. 13).

ここで"probable error"というのは、平均からの25%点や75%点までの距離であり、標準偏差が広く使われる前によく使われていた統計量で、値としては標準偏差の約2/3である。

In any case, it is clear that as early as 1908 X ± 3PE was accepted as a useful rule of thumb for rejecting differences occurring as the result of chance fluctuations.

Student(William Gosset)は正規分布において3PEが有意だと記しており、遅くとも1908年には3PEが有意水準として受け入れられていた、とある。

A fact that would have been no surprise to most of those reading his book (and which, indeed Fisher pointed out) is that "a deviation of three times the probable error is effectively equivalent to one of twice the standard error" (Fisher, 1925, pp. 47-48).
Fisher then cannot be credited with establishing the value of the significance level. What he can perhaps be credited with is the beginning of a trend to express a value in a distribution in terms of its own standard deviation instead of its probable error.

それを受けてFisherは3PE ≒ 2σだと書いており、Fisherは有意水準を0.05とした人というよりは、"probable error"の代わりに標準偏差を使い始めた人と言えるだろう、とある。

"Why P=0.05?"より:

The impact of Fisher's tables was profound. Through the 1960s, it was standard practice in many fields to report summaries with one star attached to indicate P 0.05 and two stars to indicate P 0.01, Occasionally, three starts were used to indicate P 0.001.

検定の計算表でp≦0.05, p≦0.01, p≦0.001をそれぞれ *, **, *** と表すのは、今でもよく使われるが、Fisherに由来するらしい。ここでも有意水準として0.05が出てくる。

For such procedures to be effective, it is essential ther be a tacit agreement among researchers to use them in the same way. Otherwise, individuals would modify the procedure to suit their own purposes until the procedure became valueless. As Bross (1971) remarks,
Anyone familiar with certain areas of the scientific literature will be well aware of the need for curtailing language-games. Thus if there were no 5% level firmly established, then some persons would stretch the level to 6% or 7% to prove their point. Soon others would be stretching to 10% and 15% and the jargon would become meaningless. Whereas nowadays a phrase such as statistically significant difference provides some assurance that the results are not merely a manifestation of sampling variation, the phrase would mean very little if everyone played language-games. To be sure, there are always a few folks who fiddle with significance levels--who will switch from two-tailed to one-tailed tests or from one significance test to another in an effort to get positive results. However such gamesmanship is severely frowned upon and is rarely practiced by persons who are native speakers of fact-limited scientific languages--it is the mark of an amateur.

Fisherは有意水準を5%に限らないとしたが、後世の人は、確立した5%という基準があることが無意味な言葉遊びを生じなくしている、その反面、5%にこだわる余りに両側検定でなく片側検定にしたり、5%以下を達成するために検定方法を変えたりするアマチュアが居る、と書いている。

"Fisher and the 5% Level"より:

Table VI gave only the P = .05 percent points for the distribution of z (the log of the F-statistic) by numerator df and denominator df, for df = 1, 2, 3, 4, 5, 6, 8, 12, 24, ∞. By the third edition (1930), he had added a table giving the 1% points and enlarged the range of denominator df considerably.

Fisherの"Statistical Methods for Research Workers"の初版には、F分布表はp=0.05のものしか記載されていなかったと書かれている。
参考リンク[2]からダウンロードできる5th editionの巻末のTable VIにはp=0.01の表も含まれているが、http://psychclassics.yorku.ca/にある"STATISTICAL METHODS FOR RESEARCH WORKERS"の初版のTABLE VIには確かにp=0.05の表しか無い。
なお、"Statistical Methods for Research Workers"のF分布表の数値は、普段我々が目にするF分布表の値の自然対数の1/2になっており、分散比との比較に使う値ではなく、標準偏差の比の対数との比較に使う値のようだ。

参考リンク
[1] Michael Cowles & Caroline Davis, "On the Origins of the .05 Level of Statistical Significance", 1982
[2] R. A. Fisher, "Statistical Methods for Research Workers" fifth edition, 1934
[3] Gerard E. Dallal, "Why P=0.05?"
[4] Stephen Stigler, "Fisher and the 5% Level"
[5] Lynn D. Torbeck, "On the Verge of Significance: Why 5%"
[6] Carl Anderson, "What's the significance of 0.05 significance?"
[7] 奥村 晴彦, http://oku.edu.mie-u.ac.jp/~okumura/stat/basics.html
 下の方に、Fisherが5%を好むとしたことについて言及あり
[8] Regarding p-values, why 1% and 5%? Why not 6% or 10%? - Cross Validated

続いてTomcatからMySQLが使えるよう、MySQL Connector/Jをインストールした。

■やったこと

  • aptitudeでlibmysql-javaをインストール
  • /var/lib/tomcat7/shared/に/usr/share/java/mysql-connector-java.jarへのシンボリックリンクを作成
    例:
    ln -s /usr/share/java/mysql-connector-java.jar /var/lib/tomcat7/shared/
  • /etc/tomcat7/catalina.propertiesの
    shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar
    の"home"を"base"に変更
  • Tomcatを再起動