草薙の研究ログ

英語教育関係。でも最近は統計(特にR)ネタが中心。

ウィーナーのサイバネティックスの広い定義

ウィーナーの『サイバネティックス』を読むとやっぱなんか当時の北米の知的雰囲気があってワクワクする。こういう古典って読んでみるとやる気出るね。

特に,岩波文庫版の訳本(池原他訳)で,日本語版へのあとがきのところ…

 

…今日,わたしはそれをこう述べたいと思います。 われわれの状況に関する二つの変量があるものとして,その一方はわれわれには制御できないもの,他の一方は我々に調節できるものであるとしましょう。そのとき制御できない変数の過去から現在にいたるまでの値にもとづいて,調節できる変量の値を適当に定め,われわれに最もつごうのよい状況をもたらせたいと望みがもたれます。それを達成する方法がCyberneticsにほかならないのです。―『サイバネティックス』(岩波文庫版訳本, p. 5)

 

 これすばらしい。なんというかその包括性の大きさにやられる。こんな包括的なことをこんなに明確にいえるのかと。

そして自分がやりたいことは間違いなくこの範疇に入る。

 

マルチレベルのROC曲線

状況

  • 信号検出モデルのおはなし
  • ある信号の有無について多段階評定法(5段階)でデータを取る
  • 横軸にFA(率),縦軸にH(率)を描くとこうなる(ROC曲線)

f:id:kusanagik:20181121155648p:plain

  • このデータを100人について取るとする
  • もちろん,この曲線にも個人差がある

f:id:kusanagik:20181121155958p:plain

  • ところで,FA率,H率をz変換するとおよそ(大雑把にいって)線形回帰で近似できる
  • この線形回帰モデルの傾きが1に等しくなければ,等分散ガウス信号検出モデルの等分散の仮定が怪しい,そういう理屈

f:id:kusanagik:20181121160447p:plain

  • で,これを戻すとまあまあROC曲線に近似するというわけだ

f:id:kusanagik:20181121160728p:plain

  • しかし,これはあくまでもひとりのデータであって,これが100人分ある,と考えよう

ベイズでやろう

  • これは普通に変換したFA率を説明変数,変換したH率を応答変数,個人を変量効果と考えた線形混合効果モデルに帰着する
  • つまり,集団平均の傾きと切片があり,集団内の傾きと切片の分散共分散行列があると考える
  • Rのbrmsパッケージとかでちゃっちゃとやっちゃう

事後分布を見る

  • 基本的に,一番の興味はFAの傾きの母平均
  • ベイズ信用区間からみて,普通に1はなさそうだ(ベイズ因子とかやってもいいけど…)
  • なので,集団平均として見ると,等分散性は怪しそうだ

f:id:kusanagik:20181121161639p:plain

f:id:kusanagik:20181121161836p:plain

  • 0.04から0.20を考えればいいくらいみたいだ

集団平均と個々人の推定値からROC曲線を描いてみる

  • それぞれEAPを使って曲線を描くといいわけだ
  • こんな感じ

f:id:kusanagik:20181121162226p:plain

  • 弁別力が負に入るひともいるし,大体集団平均として等分散はないな,ってことがわかる
  • 次にここから正答率を計算できるわけだけど…って,まあいいや

時代の流れに取り残されていくかんじ

今私がこれを打っているPCは,中古どころかジャンク品として買った2000円のデスクトップPCだ。RAMは1GB,CPUはCore 2 Duo,HDDは欠品だった。今型番を調べたら2004年製だという。前にどこで誰がどのように使っていたかもわからないこのPC。誰も買わないのだろうな,と思うと意味もなくこういうのを買ってしまう。14年前か。自分は大学生だったな,なんておじさんは昔に思いを馳せる。このPCを見るときに,14年前のPC産業というか日本の経済を思い出せる。

最近は本当になんでも安くなってきていて,メモリーは1,000円台も払えばバルク品でも問題なく増設できるし,SSDだって中国系企業の新製品はびっくりするくらいの値段と品質。なんていうか市場の大きさは正義だ。AmazonよりもAliExpressのほうが物欲をそそるのも事実。

ストレージなんてむしろ16GBで十分だなんて思ってたら,そういうSSDは市場に出回っていない。しかたなく64GB SSDを2,000円台で買った。Wifiドングルは1,000円台。全部で8,000円もあれば,私に必要な環境なんて整ってしまう。4GBのRAM,64GBのストレージ,Core 2 Duo程度のCPU。これは,今ARM系のCPUを積んでeMMCをストレージにしている低価格モバイルノートと同じくらいの性能になる。そういうのがだいたい3-4万だから,とっても格安だ。なによりも部品を集めたり入れ替えたりするのが楽しい。

そういう非力でもう現役を引退している,いわゆるジャンクPCに軽量デスクトップ環境をいれるのが馬鹿みたいに好きだ。もう「押し寄せるパターナリズム」のようなアップデートの通知におじさんはため息をつきたくない。

アップデートといえば,10月のUbuntu系のアップデート。私はLubuntu愛好者なのでLubuntuのアップデートをチェックしたら,なんと噂通りLubuntuはLXDE環境を捨てるのだそう。LXQtに全面的に移行する方針のようだ。

これにはまいった。というか,別にLXQtがLXDEよりも遥かに重いとかそういうことではなくて,LXDEを愛した時代はもう終わっていくんだな,という感傷。デスクトップ環境が変わる,というのはいつでもつらい。自分はそういうのにもう適応していけそうにない。かつてUbuntuのデフォルトデスクトップ環境であったGNOMEがUnityに変わったとき,なら俺はもうUnityを触らない,と決めてLXDEにした。UbuntuのUnityはいつのまにかGNOMEに戻ってたけど,もう俺が知っていたGNOMEではないようだった。

なんていうか,こういう移り変わりの激しいものにその場その場でいいようにうまく適応していくような器量は自分にはない。Lubuntuの18.04はLTSで2021年までサポートだから,俺はそれまで18.04を使おうかと思う。なんならサポート切れてもLXDEでいきたい。

なんでもそうだ。時代が変わっていくのに,自分はそれに適応していけない。いつまでもここで足踏みをするだけなんだな,なんて。それでも,それでも,14年前のPCはこうして動いているのを見る。

狭いベゼルなんてすごく気持ち悪い。曲面ディスプレイはもっと気持ち悪い。目の前にデスクトップPCがあり,ネットに繋がっているのにスマートフォンを触るひとが気持ち悪い。フリップ入力とかいう技術が気持ち悪い。

そうやって,自分のほうが気持ち悪いおっさんになっていくんだな。

…などと思ったLubuntu 18.10だった。

 

 

分散分析結果の可視化例

よく指導法の効果の検証っていうような目的でこんなグラフを見る。

f:id:kusanagik:20181015152256p:plain

これ,カーネルとか使ってこんな感じでいいじゃない?
名前なんていうかわからんけど。
これパッケージにしたら需要あるんだろうか?
流行ったらいいな。

f:id:kusanagik:20181015160334p:plain


または,これでもいいな。

f:id:kusanagik:20181015162253p:plain

library(ks)

group<-c(rep("A",40),rep("B",40))
set.seed(1)
pre<-round(c(rnorm(40,50,8),rnorm(40,50,8)),0)
post<-round(c(rnorm(40,50,8),rnorm(40,80,8)),0)
delayed<-round(c(rnorm(40,40,8),rnorm(40,70,8)),0)
dat<-data.frame(group,pre,post,delayed)


#繰り返しとかめんどくなってしまったからクソ汚い
k.pre.a<-kde(dat[dat[,1]=="A",2])
k.post.a<-kde(dat[dat[,1]=="A",3])
k.delayed.a<-kde(dat[dat[,1]=="A",4])
k.pre.b<-kde(dat[dat[,1]=="B",2])
k.post.b<-kde(dat[dat[,1]=="B",3])
k.delayed.b<-kde(dat[dat[,1]=="B",4])
m.a<-apply(dat[dat[,1]=="A",-1],2,mean)
m.b<-apply(dat[dat[,1]=="B",-1],2,mean)

plot(0,
	xlim=c(0,100),
	ylim=c(0.4,3.4),
	axes=F,
	type="n",
	xlab="Score",
	ylab="Time")
axis(2,1:3,
	c("Delayed","Post","Pre"))
axis(1)
abline(h=1:3,
	lty=2)
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.pre.a)+3,
	col="lightblue")
polygon(seq(0,100,.1),
	-7*dkde(seq(0,100,.1),
	k.pre.b)+3,
	col="orange")
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.post.a)+2,
	col="lightblue")
polygon(seq(0,100,.1),
	-7*dkde(seq(0,100,.1),
	k.post.b)+2,
	col="orange")
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.delayed.a)+1,
	col="lightblue")
polygon(seq(0,100,.1),
	-7*dkde(seq(0,100,.1),
	k.delayed.b)+1,
	col="orange")
legend("bottomleft",
	legend=c("Control","Treatment"),
	pch=20,
	col=c("lightblue","orange"),
	box.lty=0)
lines(m.a,c(3.05,2.05,1.05),
	type="b",
	lty=2,
	pch=20)
lines(m.b,c(3-.05,2-.05,1-.05),
	type="b",
	lty=2,
	pch=20)

plot(0,
	xlim=c(0,100),
	ylim=c(0.4,3.4),
	axes=F,
	type="n",
	xlab="Score",
	ylab="Time")
axis(2,1:3,
	c("Delayed","Post","Pre"))
axis(1)
abline(h=1:3,
	lty=2)
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.pre.a)+3,
	col=rgb(0,0,1,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.pre.b)+3,
	col=rgb(1,1,0,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.post.a)+2,
	col=rgb(0,0,1,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.post.b)+2,
	col=rgb(1,1,0,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.delayed.a)+1,
	col=rgb(0,0,1,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.delayed.b)+1,
	col=rgb(1,1,0,alpha=.2))
legend("bottomleft",
	legend=c("Control","Treatment"),
	pch=20,
	col=c(rgb(0,0,1,alpha=.2),rgb(1,1,0,alpha=.2)),
	box.lty=0,
	bg="gray98")
lines(m.a,
	c(3,2,1),
	type="b",
	lty=2,
	pch=20)
lines(m.b,
	c(3,2,1),
	type="b",
	lty=2,
	pch=20)

数式の中でイタリックにするものしないもの

いつもながら自分は大変に不勉強なもので,だいぶ恥をかき続けてしまっていた。
要は,数式の中でこういう表記をするのはあまりよくないって話。


logit(p_i) = ln(\frac{p_i}{1-p_i})


これだと流石に自分程度でもかなり格好悪いのがわかる。
…こうじゃなくてはならない。


{\rm logit}(p_i) = {\rm ln}(\frac{p_i}{1-p_i})


そうだな,expとかlnとかlogitは数式の中で直立体でないとダメだなあと理解できる。
変数lと変数nが仮にあったとしたら,lnこれらの変数の積のように読めてしまう
しかし,これだとどうだろう?自分はなんか全然悪くない気がしてしまう。
それに実際自分でこう書いてしまっている論文なども多い。


c=-\frac{1}{2} \{z(HR)+ z(FAR)\}


調べたら,信号検出理論の教科書などでは,こうイタリックで書いているものもある。
見慣れてしまっているから,なんか許せてしまうけど,確かに,HRHRの積かもしれない。
慣習はおいておいて,直立体にすべきだと思った。


c=-\frac{1}{2} \{z(\rm HR)+ z(\rm FAR)\}


最近多いのは,ベイズの事前分布とかで,


\beta_j \sim Normal(0, 1000)


みたいな。だいぶ自分もやってしまっている。
これも,やっぱりこうするべき。


\beta_j \sim {\rm Normal}(0, 1000)


国内外問わず,結構イタになっている例もあるし,最悪著者が論文内で一貫していないのもあるんだけど,気をつけたいものだ。
でもこれ,こう書いたらイタなんだよな。


\beta_j \sim N(0, 1000)


添字も同じことがあるよね。


CV_{RT}=\frac{\sigma_{RT}}{\mu_{RT}}


は,


CV_{\rm RT}=\frac{\sigma_{\rm RT}}{\mu_{\rm RT}}


って書いて,あれ,CVはイタでいいのか,みたいな話になる。微妙だ。
微妙っていえば,微分で出てくるdも本来は直立体なんだけど,慣習的にイタリックになっているそう。


\frac{dN}{dt}=-\lambda N


みたいに。でもちょっと調べたら直立体もあった。


\frac{{\rm d}N}{{\rm d}t}=-\lambda N



うむ。よくよく気をつけたいものだ。慣習っていうのもあるのだろうし,ま,それよりも数式の中身が重要だ,っていうひともいるだろうけど。
なんといっても,TeXで打つときに,\rmをめんどくさがったらダメってはなしだな。

Ducky Miniのキー設定

Ducky Mini可愛いぞう

台湾のメーカー,Ducky Channelさんは2015年くらいから,日本のアーキサイトさんを通じてマウスやキーボードを販売している。

Duckyといえば,Ducky miniというコンパクトキーボード。アルミボディーにCherryMXスイッチを使った人気のあるキーボード。

ずっと興味をもっていたのだけど,最近Amazonで安く手に入るようになったみたいなので買ってしまった。スイッチは黒軸にした。

www.archisite.co.jp

 

ううむ。可愛いぞう。こいつ。

初期設定

もう自分用のメモでしかないんだけど,日頃,大抵の場合はHHKBを使っているので,できるだけそれに近いキー配列にしたい。たとえば私の場合,

  • CtrlキーはAの左で絶対になければならない
  • Fnキーは一番右下でなければならない

という制約がある。

でも,これキーボード側で設定できるし,交換用のキーキャップついてたから,自分の好きにしていいみたい。

設定は,

  • Fn+Alt+H三秒押し→CapsLock→3でCapsLockとCtrlを入れ替え
  • Fn+Alt+H三秒押し→Fn→2→L_Ctrlで右下をFnに入れ替え

という感じでよかった。

その他

  • Ducky Miniは,Fn + WASDでWASD移動のようにマウスカーソルを移動させられる。これちょっと便利ね。QとEでマウスの左クリックと右クリック。
  • いわゆる矢印キーはないので,Fn + OKL;なんだけど,これちょっとなれない。HHKBにように,Fn + [;'/にしたい。ま,でもいいか。
  • バックライトはいろいろモードとか色合いとか強さを設定できるけど,ま,どうでもいい。Fn + Alt + Gでモードを切り替えられる。

 

 

 

 

構成概念について自分が考えること(2):構成概念のコードと解釈者

前回まで

  • 構成概念を記号として捉えてみる
  • パースの記号論を援用して,構成概念の解釈を記号過程と捉える
  • 記号過程の中で,それぞれが別個の記号でもある心,行動,測定という要素を複雑に媒介していくことで構成概念に解釈が与えられる
  • この観点の下で,構成概念の解釈はおよそ7種類に分類される(という試案)

 

今回

概要

  • 記号としての構成概念について考えるためにコードという見方を取り入れる
  • 記号としての構成概念の解釈者の存在を考える

3. 構成概念のコードと解釈者

3.1 解釈の不一致

まずは,以下のことに着目してみる。

  • 心理測定の議論では,少なくとも,測定手続きを介さない構成概念のあり方について議論されることはない
  • いわゆる行動主義による分野では,少なくとも,行動を介さない構成概念のあり方について議論されることはない
  • いわゆる心理主義による分野では,少なくとも,心を介さない構成概念のあり方について議論されることはない

それぞれの態度についての議論は置いておくにしても,記号としての構成概念にはさまざまな解釈が与えられ,分野やひとによって異なるだろう,ということだ。

構成概念の解釈が研究者間で一貫しない,というのは,今に限ったことではなく,昔かからいつでも議論されてきたことだ。とてもおおげさにいえば,共約不可能だとか,パラダイムの違いとかそんな感じになるし,おおげさにいわなくても,構成概念の氾濫とか術語の氾濫とかそんな感じ。

 

3.2 コミュニケーション過程?

ここでちょっと違う枠組みだけど,コミュニケーション過程というのを考えてみる。おおざっぱにシャノンの情報理論によれば…

  • 情報の送り手と受け手がある(それぞれをチャンネルという)
  • 送り手が情報を受け手に伝えたいとき,情報を信号に加工する(これをコード化という)
  • 信号は,情報それ自体ではない
  • 受け手は,もとの情報が復元するように受け取った信号を加工する(これを解読という)
  • この過程をコミュニケーション過程という
  • 送り手がもっていた情報と受け手がもっていた情報が同じであれば,コミュニケーションが成立したという
  • コミュニケーションが成立されるためには,コード化と解読が成立するような,送り手と受け手に共通するコードがなければならない
  • かなりおおざっぱにいってしまえば,ソシュールにおける記号論では,記号表記が信号,記号内容が情報に相当する。ここでのコードは,ソシュールラングに相当する。
  • かなりおおざっぱにいってしまえば,パースにおける記号論では,記号が信号,対象が情報で,コード,コード化,解読などは全部解釈項に入る
  • もちろん,このコードという見方にも批判はある

研究者同士が議論するとき,2つのチャンネルがあるとして,ある構成概念「動機づけ」に関する記号過程,たとえば心,行動,測定手続きの複雑な関係は,一種の情報である。送り手がもつ情報は,言語的な表記,または音声としての動機づけという信号(視覚的または聴覚的な)にコード化されて,受け手が信号を得る。受け手は信号を解読し,送り手がもっていた情報を復元すると,コミュニケーション成立。めでたしめでたし。

このときのコードは,そりゃおおざっぱにいえば,辞書的な意味での術語の定義みたいなものなのだろうけど(最初の解釈),上記の7パターンに分類されるような記号としての構成概念について,いつも,めでたくコミュニケーション成立するわけではない。

心理学やそれに類する分野(外国語教育もそれに含まれるとして)で,研究者同士が隣り合い,そしてなにかの構成概念について誰かが口にしたなら,かならずこのような会話がなされる。いずれも,今年のうちに居酒屋で聞いた実例。

  • 「で,そのバーンアウトっていうのはそもそも存在するの?」(心,その実在に関する質問)
  • 「動機づけが高いと,具体的にこれくらい勉強します,こんな感じで勉強をしますっていわれなきゃなんもわかんないよ」(行動の傾向性に関するコメント)
  • 「知りたいのは要はその測り方なのよ。もしも測り方が定まらないなら,そんなものは怪しい」(測定手続きに関するコメント)

ある構成概念について誰かが論じたとき,それに対する素朴なコメントがこの三種に分類されると気づいたのが,そもそもこの考え方の着想の由来。

聞き返すというのは,おそらく受け手がもっている記号としての構成概念の要素のどれか(心,行動,測定)を満たしておらず,その要素について補完しようとしているからだと思う。コミュニケーションは成立されなければならない。

ひとによって異なる心,行動,測定の組み合わせによる7種は,おおざっぱにコードといわれるもののようなもんだ。つまり,構成概念にはコードがある

概念が独り歩きするというようなよく聞く研究上のことばも,このコードが共有されていない度合いのことじゃないかな。

3.3 記号の解釈者

記号としての構成概念には,かならず解釈者(聞き手)が必要だってこと。たとえば,ある研究者が心,行動,そして測定手続きを介して構成概念を表すとき,その解釈者が心を介さない構成概念のコードをもっていたら,心の側面は解読されない。同じように行動を介さないのなら,行動の側面は無意味になる。そしてもっとも多いのが測定手続きが解読されないことだろう。

逆もあり得る。解釈者が心,行動,測定手続きの3セットによって解読するとき,この3つが得られなければ不完全であると捉えて聞き返すかもしれないし,補完するかもしれない。

 

今日はここまで。