R_Baayen のバックアップ(No.17) - アールメカブ

アールメカブ


R_Baayen のバックアップ(No.17)


BaayenAnalyzing Linguistic Data についての私的メモ

_ Baayen と言えば,語彙成長シミュレーションだと思われるので.

 Aliceの語彙成長曲線

_ 以下は誤植あるいは誤解と思われる箇所.

ただし,草稿の段階なので,刊行された段階で修正されていると思われる.

  • p.84
    • ver.transp <- log(ver$...); ver.opaque <- log(ver$...)
  • p.132
    • splom(data.frame(affixes.pr$x[,1:3]),
  • p.150
    • ClesS と Ient との相関係数が有意とあるが,Cels と Vf の間違いではないか?
  • p.155
    • print.diana 関数に col = c("black","white") は意味ないのではないか?
  • p.162
    • accessibility of theme のカテゴリは given ではなく new
  • p.172
    • spanish.manova <- manova(cbind(PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8) ~ spanishMeta$Author, data = spanish.x)
  • spanich データへの主成分分析の結果から,さらに判別分析を行うのに,CV = TRUE は使わないという節の理由が良く分からないのだが,何か見落としているだろうか? 解決.主成分分析そのものを leave-one-out してから,その結果を使って lda をしろということ.
  • p.177
    • cbind(c(153, 342 - 153), c(202, 342 - 202))の間違いでは?
  • p.184
    • without including a main effect for meanFamiliarity^2 の間違では?
  • p.213
    • 下から5行目の 0.003 は 0.002 と思われる.
  • p.229

    Irregular verbs also tends to be more frequent than regular verbs, and it is reasonable to assume that this high frequnecy protects irregular verbs through time against regularization.

  • p.243
    • lines(local.subset$year, local.subset$predict, lty = 3)
    • lines(local.subset$year, local.subset$predictA, lty = 3)
  • p.255
    • plot(alice.spc, lnre.spc(alice.lnre.$&color(red){gigp}, 25942))
  • p.264
    • lexdec データの初出は2章 p. 26.
  • p.270
    • pvals.fnc(lexdec3.lmer) で良い.$fitted は不要.
  • p.274
    • ranefs <- ranef(lexdec3.lmerD)
  • p.275
    • plot(ranefs$Subject)

_ Herdan の C

金先生より,languageRの関数growth.fnc()の出力はおかしいとうかがい,私も調べてみた.

languageR パッケージの growth.fnc () 関数の出力で,Herdan の C の計算方法は logV(N)/logN ではないよう.

data(alice)
alice.growth <- growth.fnc(alice)
alice.growth
 Chunk Tokens Types ... Herdan
1      1    646   269     0.7392036

log(269)/log(646)
[1] 0.864609

そこでlanguageR パッケージのgrowth.fnc()を見ると herdan.fnc() を呼び出している.中を調べてみると,タイプ数の対数を最小二乗法を使って推定している. すなわち Chunk1の計算では,Chunk1までのトークン数1:646 の区間を,さらに指定のチャンク数を使って,floor(646/40) =16 間隔で区切り,この細かい区間でのタイプ数を数えている.そして,これらのベクトルに lm を適用している.

types <- c(16, 29, 40, 48, 56, 66, 77, 86, 94,
101, 109, 116, 124 ,130, 134, 140, 147, 150, 155,
161, 164, 166, 173, 177, 184, 191, 198, 203, 208,
210, 218, 224 ,229, 238, 243, 249, 255, 258, 264, 266)

tokens <- c(16, 32 ,48 ,64, 80 ,96 ,112, 128 ,144,
160, 176, 192, 208, 224, 240, 256, 272, 288 ,304,
320 ,336, 352, 368, 384, 400 ,416, 432 ,448 ,464,
480, 496 ,512, 528, 544, 560, 576, 592, 608, 624, 640)

coef(lm(log(types)~log(tokens)))[2]

端数を切り落としいる cumsum(rep(floor(length(text[1:chunks[i]])/40), 40))ので growth.fnc() 関数の出力に

Chunk Tokens Types
1      1    646   269

とあっても,Chunk1の計算に使っているのは,640 Tokensまでの情報.