草薙の研究ログ

英語の先生をやってます。

JansonとOllssonのイオタ

JansonとOllssonのイオタは,評定変数が多変量で複数評定者間の信頼性ないし一致率を評価する係数。Rでは,irrパッケージのiota関数を使う。
たとえばルーブリックを使用した評定を二人が行い,観点が5つあるとか,そんなときに使用する。

#こんなデータに
[[1]]
  Rater1 Rater2
1    Old    Old
2    New    New
3    Old    New
4    New    New
5    Old    Old
6    New    New
7    New    New
8    Old    Old
9    New    New

[[2]]
  Rater1 Rater2
1   Slow   Slow
2   Fast   Fast
3   Slow   Slow
4   Fast   Fast
5   Slow   Slow
6   Fast   Fast
7   Slow   Fast
8   Slow   Slow
9   Fast   Fast

iota(dat)[]
$method
[1] "iota for nominal data (2 variables)"

$subjects
[1] 9

$raters
[1] 2

$irr.name
[1] "iota"

$value
[1] 0.775

$detail
NULL

キーボード用リストレストを作ってしまえ

あまりタイピングが上手じゃないのがいけないのだけど,よく腱鞘炎になってしまう。私みたいにもの書きをまったくしないやつに限ってすぐ腱鞘炎になる。そんな軟弱な自分に嫌悪感を覚えながらも,やれキーボードが悪い,そしてリストレストが悪い,この企業の製品はダメだのと因果関係がそれほど自明でないことをいってしまうのが人間ってもの。本当は自分が軟弱なだけなのにね。自分の軟弱さを認めるくらいなら,顔の見えない製造企業を責めるほうが心が休まるものね。アマゾンのレビューもそういうのばっかり。

キーボードについても,世の人はやれメンブレンでも構わぬとか,パンタグラフで十分だの,メカニカルでないと死ぬ,それも赤軸がいいの,青軸がいいの,俺は黒軸でないと触らないだの,入門は茶軸がいいよとか,いいや無接点が最強だの,配列についてもUS配列でないとコードが書けないだとか日本人なんだから日本語配列でいこうぜとか,HHKBの配列でないとダメだとか,さらに細かいとControlはaの左だとかFnは右左に置けだとか,BSを一段下げろだとか矢印キーは甘えだとか,そもそもフルサイズキーボードがいいに決まっているとか,テンキーレスがいいだとか,いやいや60%コンパクトサイズがいいとか,もう開き直って40%キーボードでいいとか。

もはやリストレストでさえも,やれ幅は30cmがいいの奥行きは8cmがいいの,高さはどうのこうの,材質はどうの…

でもこれって難しい,自分は,HHKB Lite2 US配列と全く同じ配列で,フレームレスの赤軸(Minila ではいけない)が1万円きったら6台買おうと思う。しかしそういうのは存在しない。癖の強い自分みたいなものが欲しいものが企業にとって商機だとは限らない。

そうだ。なんか思い出した。そういえば,私が育った昭和時代の百姓の世界は,とても単純で複雑だった。なにか道具がほしければ,自分で作ったもんだった。なにか問題があれば,自分の工夫で解決したもんだった。さすがにキーボードは無理にしても,リストレストくらいだったら,誰でも簡単に自分で好きなように好きなだけ作れる。そうだ,仕様が気に入らないなら,仕様を責める前に自分で作ればいい。いつから俺は仕様を責めて自分ではなにも作らない人間になってしまったのか。

 

 

…というわけで,息抜きにキーボードのリストレストを作ってみることにした。

まずは家の近くのホームセンターにいって道具を集める。基本的にそれっぽい寸法の木材を買えばいい。自分の手には横30cm,奥行き8cm,高さは適当でいい,といって決めた。大概のホームセンターでは寸法を頼めば安く切ってくれるサービスがある。で,集めた材料とかはこんな感じ。

  • 木材 30cm×8cm×5cm ×3 300円位
  • 黒色スプレー
  • やすり(持っている)
  • サンドペーパー(100円)
  • 木工用ボンド(100円)使わなかった
  • すべり止めシート×3 300円

f:id:kusanagik:20170722150452j:plain

 

で,適当やすりで角を取って,適当にスプレーで黒く塗ると,どん。

 

f:id:kusanagik:20170722155610j:plain

 

おお,いいじゃないの。

で,裏にすべり止めシートを張ると,どん。

 

f:id:kusanagik:20170722155619j:plain

 

完成。20分くらい。技術も知識も手間もなにもいらない。

 

f:id:kusanagik:20170722160316j:plain

 

やば,高さよく考えてなかったから高すぎて到底使えないwwwww

高すぎるwwwww

あっれー!やっちまたー!

 

 

…次は高さもよく考えて作ろう。そうやって,トライアンドエラーで自分の好きな仕様を探っていこう。自分の手で作りながら。それって多分,とても単純で,そして心を捉える複雑なこと。

(続く)

左に歪んだデータへのフィッティング

確率分布のフィッティングでは,右に歪んだデータを対象にすることが多いのだけど,たまに左に歪んだ分布が手に入ることもある(てか私は最近はじめて手にいれた)。いろいろあるんだろうけど,一般化極値分布でいいかな。えっと,こんなデータだとしよう。

f:id:kusanagik:20170711210454p:plain

#準備とデータの作成
library(evd)
library(fitdistrplus)
library(ismev)
library(MCMCpack)
dat<-rgev(1000,20,3,-.5)
hist(dat,main="",xlab="Value",breaks=20,col="pink")

#まずはfitdist関数でフィット
#初期値は適当に標本平均と標準偏差いれちゃう
fit<-fitdist(dat,"gev",start=c(mean(dat),sd(dat),0))
summary(fit)

Fitting of the distribution ' gev ' by maximum likelihood 
Parameters : 
    estimate Std. Error
1 19.9521276 0.10240292
2  3.0110352 0.07695938
3 -0.4899288 0.01781197
Loglikelihood:  -2398.873   AIC:  4803.746   BIC:  4818.469 
Correlation matrix:
           [,1]       [,2]       [,3]
[1,]  1.0000000 -0.2868652 -0.3588115
[2,] -0.2868652  1.0000000 -0.6712985
[3,] -0.3588115 -0.6712985  1.0000000

plot(fit)

f:id:kusanagik:20170711210919p:plain

#ismevパッケージでフィット
fit2<-gev.fit(dat)

fit2
$conv
[1] 0

$nllh
[1] 2398.873

$mle
[1] 19.9520718  3.0115839 -0.4900573

$se
[1] 0.10241636 0.07699955 0.01780562

gev.diag(fit.gev)

f:id:kusanagik:20170711211154p:plain

#無駄に無情報事前分布でMCMCしてみる
llf<-function(beta,x){
sum(log(dgev(x,beta[1],beta[2],beta[3])))
}

m<-MCMCmetrop1R(llf,theta.init=c(mean(dat),sd(dat),0),x=dat)

summary(m)
Iterations = 501:20500
Thinning interval = 1 
Number of chains = 1 
Sample size per chain = 20000 

1. Empirical mean and standard deviation for each variable,
   plus standard error of the mean:

        Mean      SD  Naive SE Time-series SE
[1,] 19.9413 0.10164 0.0007187      0.0024210
[2,]  3.0184 0.07621 0.0005389      0.0018702
[3,] -0.4871 0.01757 0.0001242      0.0004275

2. Quantiles for each variable:

        2.5%    25%     50%     75%   97.5%
var1 19.7453 19.871 19.9407 20.0099 20.1407
var2  2.8700  2.966  3.0172  3.0689  3.1709
var3 -0.5214 -0.499 -0.4873 -0.4754 -0.4516


plot(m)

f:id:kusanagik:20170711211651p:plain

最尤法を使った逆ガウス分布のフィッティング

このブログへコメントがあったので,こちらで。
ガウス分布をデータに対して最尤法を使用してフィットする方法について。
statmodパッケージに逆ガウス分布の関数があって,それをfitdistrplusパッケージで使う。

#使うパッケージ
library(statmod)
library(fitdistrplus)

#データの作成
dat<-rinvgauss(1000,1,4) #mu=1, lambda=4, n=1000の擬似乱数

#ヒストグラム
hist(dat,col="lightblue", main="", xlab="value",freq=F,breaks=10,ylim=c(0,1.2))

#要約
summary(dat)

#最尤推定
fit<-fitdist(dat,"invgauss",start=c(1,1))
#初期値をここではmu=1,lambda=1としている

#結果
fit
summary(fit)

#Fitting of the distribution ' invgauss ' by maximum likelihood 
#Parameters : 
#   estimate Std. Error
#1 0.9950217 0.01505621
#2 4.3455699 0.19433979
#Loglikelihood:  -520.8145   AIC:  1045.629   BIC:  1055.445 

#だいたいよさげ

#ヒストグラムに描き足し
x<-seq(0,5,.01)
lines(x,dinvgauss(x,fit$estimate[1],fit$estimate[2]),col="red",lty=2,lwd=3)


f:id:kusanagik:20170708172539p:plain

Principal Component Factor Analysis?

1日に2回この謎の用語を見てしまったので,Google Scholarで検索したら,1万件超えててワロタ。ま,google検索の件数もそんなに信用できるもんじゃないけど。

https://scholar.google.co.jp/scholar?q=%22principal+component+factor+analysis%22&btnG=&hl=ja&lr=lang_en%7Clang_ja&as_sdt=0%2C5

 

普通にえ?どっち?って思う。論文中でfactor analysisっていうときもあって,でも大概やっているのをみると実はPCAなんだよな。

Google Scholarでちょっと5本くらい見てみたら,実際やってたのは全部PCAだった。

この用語みたらまあPCAだと思ってもよさそうだ。

むかしもっとひどいのを見たことある。ウィルコクソンの符号順位検定(t検定)という表記もあって,どっちだよ,って思ったけど,これもウィルコクソンの符号順位検定だった。

…まあよくある。

ついでにPrincple Component Analysisは,3万件。うぃ。

https://scholar.google.co.jp/scholar?q=%22principle+component+analysis%22&hl=ja&as_sdt=0&as_vis=1&oi=scholart&sa=X&ved=0ahUKEwjSm7HTi_LUAhUITrwKHeHeAOoQgQMIKDAA

モデルってことばが如何に重要か

最近,モデルってことばが思ったよりもすげえ重要だなって思うようになった。自分の分野(外国語教育)だとあまり聞かない用語だから,避けてたけど,これむしろ積極的に使ったほうがいいな。

モデルってのはモデル化したいものそのものじゃない。別にこの世に斉一性をもたらす,この世を統率している原理だとか,そんな中二病的なもんじゃない。

よくある例のように,たかしくんが一時間で5km歩くってのを時速5kmというモデルで表せるわけだけど,たかしくんが頑張って歩いている現象それ自体ではないし,たかしくんがそのルールに支配されているわけでもない。たまたま,それ以外は捨象シテヨシ!っていう条件下で,結果としてうまくいくってだけのこと。この,何なら捨象シテヨシか,そして何なら捨象ダメかって考えるかってのもすげえ重要なことだ。それは俺達の現実世界のさまざまな秩序とかに与えられている。帰結に何が求められるかってことでもある。

でも,特に応用分野とかでガリガリ研究していると,モデルと,そのモデルに表せられていることの区別がつかなくなってしまいがちだ。そして,なんならそのもの自体を生み出している世界とも区別できなくなってくる。

えーと,イカサマでない6面サイコロを振ってでる目は,a = 1, b = 6の離散一様分布でうまくモデル化できる。このとき,離散一様分布はモデル。でも,サイコロの目がでるという物理現象それ自体は,さまざまなこと,摩擦や物体の運動やその他,無限に近い現象の因果だと思う。たまたま,なんの目が出るか,という観点の上で,それらの無限に近い現象の因果とかが捨象シテヨシってだけのはなしだ。神様が離散一様分布の乱数を毎回振って出してくれてるわけではない。

そういうことなら当たり前じゃないか,ってひとは,大抵はよく勉強されていて,

因子分析は,ある集団とある観測変数のセットという条件下において,それらの観測間の構造を説明し得る,便宜的な数理モデルのひとつに過ぎない。 

 みたいな文言を読んでたりもする。

でも,実際に自分で因子分析をすると,それがなんか関心ある概念間の関係それ自体だと勇み足になってしまいがちだ。

多分,ことばが悪いんだよな。因子分析は,所詮は数理モデルにすぎないんだから,因子分析モデルといえばいい。

「因子分析は概念間の構造を解明する道具!」よりも「因子分析<モデル>,それは(得てしてクソみてーな)観測変数間の(よくわからん)構造を集約する便利な(だけの)数理モデルのひとつ」っていえば,変な誤解を避けられる。

平均差の有意性も似た問題がある。30点こっちのグループの方が上で有意でした。これは数理的には条件付き期待値がどうこうって程度の話。でも別に神様がその条件付き期待値を計算して現象発生させているわけでない。こっちのグループはAしたのか,よしテストの平均30点あがるように調整しよ,なんて神様はおそらくやっていない。

別になんでもいいけど,一般線形モデルでも,平均差のモデルとか,条件付き期待値のモデルでもいいんだけど,なんかモデルっていえば,そういう勇み足は減るのかな。

「平均差は有意!」とかっていうよりも「平均+30<モデル>」っていえば,変な推論は防げるのかな。

 

モデルっていえば,あくまでも(適当に人間が手前の脳みそで理解するために作った)モデルだってのがわかるから,聞いている,読んでいるひとだけじゃなくて,喋っている,書いているひとも頭クリアになるからいいんじゃないか。中身について主張していることと,実証したというものの齟齬にも,自分で気づけるようになる。

 

【宣伝】この学会シーズンでお話させてもらうこと

最近はなんでも広報やその創意工夫が大事だということなので,ここに,この春夏の学会シーズンでお話させて頂くことをまとめます(自分のメモがてら)。増えたら随時足していきます。

1. SONAS2017(5月に終了,早稲田大学

  • シンポジウム「英語学習者のパフォーマンスを考える」にて,シンポジウム登壇者として「言語指標の数理」と題したお話をしました。内容は,私の研究アプローチである,数理的アプローチという方法と言語指標研究についてでした。

   SONAS2017

 

2. 中部地区英語教育学会(CELES,6月25日,信州大学

  • 英語教育研究法セミナー「実証研究および実践研究の科学性」(藤田卓郎先生と一緒に):これまで「科学的」,特に「科学的な指導法」といった旗印のもとで進められてきた英語教育研究について概観して,これからの研究のあり方を議論したいと思います。私は実証研究についてお話し,藤田先生は実践研究についてお話します。
  • 課題別研究プロジェクト「英語教育における『エビデンス』:評価と活用」(代表:亘理陽一先生,提案者:寺沢拓敬先生,草薙,浦野研先生,工藤洋路先生,酒井英樹先生):英語教育におけるエビデンスについての研究報告ですが,亘理先生,寺沢先生,そして私がそれぞれ提案をした後に議論に入りますが,私のパートでは,質の高い教育的エビデンスを創出するためには,公共性の高い標準的測定モデルおよび共通的成果変数が必要であるという提案をいたします。

   大会プログラム – 第47回中部地区英語教育学会 長野大会

 

3.  外国語教育メディア学会(LET,8月4ー6日,名古屋学院大学

  • ワークショップ「外国語教育研究者のためのベイズ統計入門」;このワークショップでは,外国語教育研究に馴染み深いデータを題材として,ベイズ統計はどのようなものかをご紹介します。これは受講料と事前予約が必要なようです。頑張ってお話しますので,ぜひよろしくお願いします。
  • 一般研究発表「オンライン学習プログラムにおける単位取得困難学生の事前検知」隠れマルコフモデルによるライティング過程の把握とその形成的評価への応用」という2件の発表をします。

www.let2017.net

www.let2017.net

 

4. R Bootcamp

  • 8月に講師として登場予定です。Rを使った分析法についてみっちりとお話をする予定です。

www.rbootcamp.org

 

学会などでお会いできることがありましたら,ぜひお声がけください!