草薙の研究ログ

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

r

分散分析結果の可視化例

よく指導法の効果の検証っていうような目的でこんなグラフを見る。これ,カーネルとか使ってこんな感じでいいじゃない? 名前なんていうかわからんけど。 これパッケージにしたら需要あるんだろうか? 流行ったらいいな。 または,これでもいいな。 library(…

brmsパッケージでカーブフィッティング

計量言語学のMenzerath-Altmann法則をbrmsで。(a) s<-1:5 m<-c(3.1,2.53,2.29,2.12,2.09) dat <- data.frame(s, m) my.prior <- prior(normal(0,3), nlpar = a) + prior(normal(0,1), nlpar = b) + prior(normal(0,1), nlpar = c) fit <- brm(bf(m ~ (a*s^…

AtomからRを使うための設定(Ubuntu系OS)

お気に入りのエディタからなにがなんでも出たくないという病気。 ここ3年はAtom推しなので,今回はAtomからRを使用する環境を作る。環境は,Lubuntu 18.04 LTS。 でも別にこのOSがなにか特別なわけじゃない。これまでAtomからRを使うときは,Atomのパッケー…

RでABAB計画のグラフ

応用行動分析(ABA)とかで行われるABABデザイン(外国語教育研究では単一事例分析として知られる)の結果について可視化するグラフを描く必要がある。行動系の論文でよくみるこんなやつ。 えっと,ここではABAB計画(baseline - treatment - baseline - tre…

RでKendall距離,Hamming距離,Cayley距離,Ulam距離

r

順序間の距離を表す,(編集型の)上記の距離をRでもとめる。PerMallowsパッケージというのを使う。 library(PerMallows) x<-c(1,2,3,4,5,6,7,8,9,10) y<-c(2,1,3,4,6,5,7,9,8,10) distance(x,y,"Kendall") distance(x,y,"Hamming") distance(x,y,"Cayley") …

私の一日とチャップマン=コルモゴロフ方程式

授業がない日のわたし,たとえば出張のない土日とか,10時から22時まで学校にいるとして,大抵は以下のような状態を自由に遷移している。 研究関係のお仕事:論文の執筆,資料・論文・書籍を読む,データ分析,調査・実験の準備,やりたくない査読,共同研究…

Stanでカーブフィッティング:Menzerath-Altmann法則

もうしつこいのはわかっているけど,また,Menzerath-Altmann法則のはなし。この法則はよく知られた言語法則のひとつで,言語的構成要素の大きさは,その構成要素の大きさの関数だという観察で,具体的には,(a)という関数がよくフィットすることが知られ…

カーブフィッティング+ブートストラップ

また懲りずにMenzerath-Altmann法則の話。こんなデータがあって, Morpheme Length(Syllables) Syllable Length(Phonemes) 1 3.10 2 2.53 3 2.29 4 2.12 5 2.09 Gabriel Altmann (1980). "Prolegomena to Menzerath's law". Glottometrika. 2: 1–10. こ…

言語法則とベイズ的なカーブフィッティング

続きもので書いていたつもりだったのだけど,放置しすぎて前回からの更新間隔がえげつないことになってしまった。前回は,Menzerath-Altmann法則をRのnls関数で - 草薙の研究ログっていう話だった。えっと,「ある言語学的単位の平均長(y)は,その構成要素…

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回年次例会で討論型ワークショップやります! このワークショップは,(私の得てしてくだらない話題提供のあと)基本的に参加者同士でグループを組んでもらい,想いの丈を共有し合う…