草薙の研究ログ

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

r

Menzerath-Altmann法則をRのnls関数で

Menzerath-Altmann法則(またはMenzerath法則; e.g., Altmann, 1980; 基本的アイデアはMenzerathが発見,Altmannが定式化)とは,ある言語学的単位の増加が,その単位の構成要素の減少に帰着すること。またはその逆。もっと一般的にいうと,Altmann(1980)…

GAMLSSとBAMLSSで分布をデータにフィット

GAMLSSとBAMLSS 新幹線に乗ってコンビニにいくようなものだけど,GAMLSSとそのベイズ的モデルであるBAMLSSを使って,観測のデータに対して分布をフィットさせる。 GAMLSSというのは,「位置,尺度,形状,それぞれの母数のための一般化加法モデル(Generaliz…

JansonとOllssonのイオタ

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

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

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

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

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

Rで混同行列から感度・特異度などの指標

例えば,何かの指標なりモデルを用いて, 二値的に何かの状態がある(陽性)かない(陰性)かを検査する方法を作るとする。 そのパフォーマンスは以下のような真の状態と検査結果の混同行列を見るとわかる。この場合の混同行列は, 真の状態が陽性 真の状態…

Rで日付データの処理

自分用のメモ。 #日付クラスへ変換 d<-"2016-1-1" d2<-as.Date(d) class(d2) #日付データの足し引き(日付クラスだとこれができるようになるのが最高) d2-1 d2+1 d2-1000 d2+1000 #基準日から1日毎にログイン回数を累積計算 #datは時間とログイン回数のデー…

一般化パレート分布をデータに当てはめる

一般化パレート分布は所得の分布などに使われるそうだ。 外国語教育研究でもこういった分布になる変数を私はひとつだけ知っている(いわないwww)。Rにいろいろあると思うけど,ここではactuarパッケージとfitdistrplusパッケージを使う。 actuarパッケージ…

MCMCを使って指数正規合成分布(ex-Gaussian)の母数を推定

RのMCMCpackにはMCMCmetrop1Rっていう関数があって,これは任意(自作)の対数尤度の関数をいれてMCMCでサンプリングすることができる。なので,結構手軽にMCMCを使ってデータに好きな分布を当てはめることが可能。ここでは(まったくそんなことはしなくても…

非線形最小二乗法で学習コンテンツ消化曲線をモデル化

まあ結構いろんなことに汎用的に当てはまることだと思うのだけど,ソフトウェアの品質管理とかの分野では,ソフトウェア信頼度成長曲線という手法があるそうだ(古い友人に教えてもらった)。これは,ソフトウェア開発において,バグの発見数や残ったバグの…

混合正規指数合成分布モデル(?)を最尤法で…

聞いたこともないけど,要素数2の混合正規指数合成分布(ex-Gaussian)モデルというのを考えてみる。ま,2つの異なる認知プロセスが混合したときの反応時間の分布だとか,そんなそれっぽいことを考えてみる。そんなものは多分ない。ま,でもこの確率密度関数…

当てはめた分布と推定した母数から平均,分散,歪度,尖度をもとめる

なんかある論文で,分布が強く歪んでいることが理論的に明白だった変数に,ガンマ分布か対数正規分布かなにかを当てはめて,その推定母数と適合度指標のみを(きつい紙幅の関係もあって)報告したときに,「標本の記述統計を報告しないとはけしからん」とい…

混合ガンマ分布モデルをデータにフィットさせる

Rのmixtoolsパッケージでは,混合ガンマ分布モデルもデータへフィットさせることができる。 #λ= .25,.75,α - 4, 10,β= 1, .2が正解 set.seed(0) dat<-c(rgamma(100,4,1),rgamma(300,10,.2)) hist(dat,breaks=20, main="",col="lightblue") model<-gammamix…

単変量混合正規分布モデルをデータにフィットさせる

外国語教育研究では2つの山とか3つの山とかの分布になっているのを見ることがある。こういうときは,混合分布モデルをデータにフィットさせるといいかもだ。Rではmclustもいいけど,mixtoolsというパッケージがある。 #準備 library(mixtools) #数値例の作成…

任意の累積分布関数を仮定した一標本コルモゴロフ・スミルノフ検定

#正規分布の場合 set.seed(0) dat<-rnorm(100,0,1) ks.test(dat,"pnorm") #特定の平均と標準偏差をもつ正規分布 set.seed(0) dat<-rnorm(100,0,1) ks.test(dat,"pnorm",1,1) #ガンマ分布 set.seed(0) dat<-rgamma(100,2,3) ks.test(dat,"pgamma",2,3) #ワイ…

自分で用意した分布をデータへフィットさせる

fitdistrplusパッケージのfitdist関数は,dnorm, pnormのように,dとpの関数が定義されていればどんなものでも指定することができる。自作でもいいってこと。ま,でも殆どの場合,自分程度が思いつくような分布はすでに用意されているってのがR。たとえば,…

単変量の分布母数の推定からあれこれ:fitdistrplusパッケージが便利

ある確率分布を手持ちの単変量データに当てはめ,その母数を最尤推定するという方法があって,Rでは通常MASSパッケージのfitdistr関数を使うのがお手軽なんだけど,fitdistrplusという便利なパッケージが出ていてこれがとてもいいかも。ま,結局はoptimにか…

最尤推定した母数のもとでの確率密度曲線をヒストグラムに描き足す

えっと,リクエストがあったのでここに書く。(SPSSならそれっぽい曲線もつけてくれるのにRはそんなこともできないのか?といわれた)まずはこんなデータがあるとしよう。形状母数が3,尺度母数1のガンマ分布にしたがう300個。 set.seed(0) dat<-rgamma(300,…

負の二項分布に関する2つのパラメーター化の方法

負の二項分布(negative binomial distribution)は,(a)その母数を成功回数(ないしサイズ母数)rと,成功確率pとする場合(こっちに親しみ)と,(b)サイズ母数rと平均μとするときの二種類があるんだそうだ。パラメーター化の方法が違うってのは,ガン…

分散共分散行列を相関係数行列に変換するR関数

自分で関数書けばいいってのもごもっともだし,他にも色々あるんだけど,bayesmパッケージにnmatっていう関数がある。 vcovm<-matrix(c(3,2,2,3),2,2) cm<-nmat(vcovm) matrix(cm,2,2)

名古屋で討論型ワークショップやります!

12/17の名古屋,外国語教育メディア学会中部支部外国語教育基礎研究部会第4回年次例会で討論型ワークショップやります! このワークショップは,(私の得てしてくだらない話題提供のあと)基本的に参加者同士でグループを組んでもらい,想いの丈を共有し合う…

対数変換したあとの値の記述統計を報告?vs.対数変換する前の値の記述統計を報告?

外国語教育研究では強く歪んだ分布をもつ連続型確率変数を扱うときがある。 学習時間,ある変数上でのテスト成績,心理学的な実験における反応時間,読解時間などがそう。場合によっては,これを正規分布にしたがう確率変数にすることを目的に対数変換すると…

R連携アプリ開発関係メモ(1):Rscriptでbat実行するときに,コマンドプロンプトを表示しない簡単な方法はVBScript

美しいリレーの話。 まずはRのスクリプトファイル(.r)を用意する(a.rとする)。 それでこのスクリプトファイルをRscriptで実行するバッチファイル(b.bat)を用意する。 このバッチファイルを実行するVBScript(c.vbs)を用意する。 vbsは,コマンドプロ…

そのメタ分析なんだかな

そういう論文ってどれだけの数あるかわからないのだけど,こんなメタ分析があるって考える。 (潜在変数としての)英語の力と(同じく潜在変数としての)国語(母語?)の力の関係をメタ分析でもとめる,という話にしよう。基本的に,英語の力(の推定値)は…

2変量正規分布の片方の変数を平均でぶった切ってもう片方の変数の値の平均差を検討する?

これ,どうやってご説明差し上げたらいいか迷ってたけど,説明用のグラフ用意した。 当たり前だけど相関係数と密接な関係がある(なのであまり操作としてよくない) 相関が十分に高いとき,それぞれ分割した変数の方は当然正規性が満たされなくなる(←これが…

質的成果指標に関する後ろ向き研究:相対危険度とその信頼区間

ある質的な成果指標(ある試験の合格・不合格)がある。テストが終わったあとに,合格した人と不合格だった人に,どの教科書(A,B)を使っていたかそれぞれ聞く。すると以下のようなクロス集計が得られる。このとき,使用した教科書と合格・不合格の関係を…

層別データの可視化:plot関数が思ったより賢い件

何故か知らんかった。plot関数って思ったより賢い。(いや,plot関数が賢いのは昔から当たり前なんだけど)ひとつのグループ化変数とひとつの連続量を入れたデータフレームがあるとする。こんなふうにして作ろう。 group<-c(rep("a",25),rep("b",25)) score<…

こなした問題数,学習時間,オンライン教材へのログイン時間といったデータの分析

オンライン教材へのログイン時間といった学習履歴は,現在の外国語教育現場では容易に得られるようになってきていて,(主に探索的な目論見で)分析に組み込まれることが多くなってきている。しかし外国語教育研究ではこういったデータの分析の歴史は浅く,…

層別の記述統計

あるテストを実施したとき,クラスごとに合計得点をもとめたいとか,そういうことって外国語教育ではよくある(そういうことしかない気もする)。 男女とか,3クラスとかだったらね,記述統計をエクセルでそれぞれ手動でもとめてもいいかもだけど,20クラス…

オッズ比からテトラコリック相関係数への近似変換

テトラコリック相関係数でメタ分析したいときに,先行研究がオッズ比で報告してたりするからどうするんだって話があるそうな。もちろんクロス集計があればいいのだけど,それがないときはどうするか。オッズ比からテトラコリック相関係数の近似値を求める方…