R_lnre
まずtypeのspectram を作成する.これには zipfR パッケージの spc()関数を使う.
library(languageR)# alice データをロードするため # 253 alice.spc <- spc(m = as.numeric(names(alice.table)), Vm = as.numeric(alice.table))
ここで第一引数 m は各 type の頻度,第二引数 Vm はその頻度数の type の数
sum(alice.spc$Vm) # types sum(alice.spc$m * alice.spc$Vm) # tokens
この spectrum オブジェクトに lnre() 関数を適用する.第一引数は適用するモデル.gigp は the Generalized Inverse Gauss-Poisson モデル.fzm を指定すれば Zipf Mandelbrot モデル.
# p.254 alice.lnre.gigp <- lnre("gigp", alice.spc) alice.lnre.gigp # summary
summaryの出力の S は,この場合,Lewis Carrol が Alice を執筆するのに適当であると考えていたであろう type 数を意味する.
この結果をプロットするには plot() と lnre.spc() 関数を組み合わせる.
# p.255 plot(alice.spc, lnre.spc(alice.lnre.gigp, 25942))
ここで lnre.spc() 関数の第二引数は spectrum が必要とされる tokes 数.ここでは Alice の token 数.
Interpolation, extrapolation を行う.
# extrapolation alice.ext.gigp <- lnre.vgc(alice.lnre.gigp, seq(N(alice.lnre.gigp), N(alice.lnre.gigp)*2, length = 20), m.max = 3) # interpolation alice.int.gigp <- lnre.vgc(alice.lnre.gigp, seq(0, N(alice.lnre.gigp), length = 20), m.max = 3)
ここで第一引数は lnre オブジェクトであり,第二引数では tokens 数の範囲を指定する.第三引数は全体のtokes数情報に加えて,例えば Alice では頻度 1 の type が 1188個,頻度 2 が 394 個,頻度 3 が 228個 (p.253)あるが,頻度幾つまでを付加するか (the number of requred spectrum)を指定.
成長曲線を描くためには,growth オブジェクトが必要.これを vgc オブジェクトに変更する.
alice.growth <- growth.fnc(alice, size = 648, nchunks = 40) #p.245 alice.vgc <- growth2vgc.fnc(alice.growth)
最後に interpolation, extrapolation, サンプルの成長曲線を並べてプロットする.
plot(alice.int.gigp, alice.ext.gigp, alice.vgc, add.m = 1:3, main = "") mtext("Vocabulary Growth: Alice in Wonderland", cex = .8, side = 3, line = 2) lines(c(0, 25942), c(2634,2634), lty = 2) text(1,2634, "types = 2634", adj=c(0,1), col = "red")
Link: R_Baayen(1221d)
R_old_tips2(1908d)
Rの備忘録(3944d)
Last-modified: 2007-10-12 (金) 14:09:34 (6203d)