CSLで後輩に付きっきりで実験の解析プログラムを書く。
言語はPerl。
一年前の今頃を思い出した。
今はSfNの直前期で、一年前の今頃もそれは変わらない。
去年は口頭発表が控えていたので常に焦っていたけれど、
今年は発表はおろか、SfNに参加すらしないので、心穏やかだ。
そのころもやはり13人分の被験者データを、
Perlを使って解析していたのだった。
ひとり1ファイルの形式でデータを保存していて、
中身はカンマ区切りのいわゆるCSVファイル。
まずはひとりの被験者の全トライアル平均をだして、
それをつかって全被験者の平均を出すとか、
全被験者から一部のデータを抜き出してくるということを
やっていた。
その頃はいまほどPerlを扱えるわけではなかったが、
Excelでやってたんじゃ日が暮れるってんで、
強力なテキスト処理機能があり自分も少しは書けるPerlで書いていた。
その時にPerlをがんばって書いていたおかげで、
今のPerlスキルがある。
でも、Perlでやるのも限度がある!ということに気づき初めて、
藁にもすがる思いで手をつけたのがOctaveで、
知らない言語体系ながらも
やけくそでスクリプトを書き連ね、
次第に行列計算による解析の効率の良さがわかってきた。
Perlだと配列の要素同士を足し合わせるのに
for文を使わなければならないけれど、
Octaveだと、
ベクトルとして保持したデータを単純な記号で足し算できる。
例えばある被験者の50トライアル分の反応時間をx1、
別の被験者のをx2とすると、
x1.+x2
と書けば、x1とx2の対応する要素同士の足し算ができる。
+の前にピリオドがあるのがポイントで、
「.+」と「+」では意味が異なる。
違いがわかりやすい例はかけ算で、
行列m1とm2があるとして、
m1*m2
と
m1.*m2
だと結果が全然違う。
上の例だと"行列の"かけ算がおこなわれる。
m1の第 n 行とm2の第 n 列のかけ算になる。
下の例だと、m1とm2の[i, k]要素のかけ算になる。
ともかく、いままで for 分を使わなければできなかった処理が、
一行で済むようになったのは楽だった。
さらに、
mean( x1 )とかvar( x1 )とかやれば平均や分散を計算してくれたり、
t_test(x1, x2)とやればT検定をしてくれたりと、
数理科学用のソフトの強みでいろいろな数学的処理の関数を
持っているのでそういう部分のアルゴリズムを
自分で実装する手間が省けた。
行きの飛行機の中で泣きそうになりながらoctaveを
パチパチたたいていたのを思い出す。
あの時のノウハウを、この後輩に教えるのだ!
という使命感を感じる今日この頃。
* * *
CSLを辞した後、御成門で研究会。
今回はアルコール依存症の話だった。
アルコール依存症の患者は自分がアルコール依存症であるということを
否認するのだそうだ。
だから、治療する側にとっては
薬物中毒患者の方がかわいくみえるというコメントを述べる人がいた。
アルコール依存症の患者は自分は依存症ではないと言い張って、
まったく治療にならないのだという。
アルコール依存症の治療法には決定的な治療法がないらしく、
基本的には認知的な療法しかないという。
アルコール依存症は医者ではなく患者がその治療法を見つけた
珍しい病気でもある。
アメリカにはAlcoholic Anonymousという団体があって、
そこでアルコール依存症の人同士が、
自分の経験などを語りあうことで、
断酒を継続するのだという。
Alcoholic Anonymous
http://www.aa.org/?Media=PlayFlash
それが、現在の一番の治療法なのだという。
日本にも禁酒・断酒をするための団体が日本各地にあるらしい。
日本断酒連盟
http://www.dansyu-renmei.or.jp/zendanren/rekishi_1.html
そういう「語り合い」みたいなものが、
単なる慰めではなく、治療として認知されることもあるのだ、
ということが目から鱗のお話だった。
昔見た、ファイトクラブという映画を思い出した。
この映画では、眠れない主人公が、
ガン患者の会とか睾丸腫瘍の会とか、
いろいろな重篤そうな病気の持ち主が集まって
自分の思いを語る会に、夜な夜な出向いては、
そこで安息を得るというシーンがあるんだけど、
禁酒会というのもそういうものなのかもしれない。
* * *
御成門まで行くのもまた自転車を使った。
夜の東京タワーは美しく、隔世の感がある。
赤い光と白い光が上品に浮かび上がっていた。
桜田通り(国道1号)をひた走りながら、
夜風はもう冬の気配を隠せないでいるのを感じた。