知りたいこと
Rで分割表の期待頻度がどのくらい単純に記述できるのか、
興味本位ですが知りたいです。
Rの本で、分割表による独立性検定の話が出てきて、
これ自体は行列をqhisq.test()
使えば、簡単に検定出来るという話なのですが、
自力で統計量のX^2を計算してみたかったので、色々と考えていました。
その中で、期待頻度を出す場面があったのですが、
正直、全然Rの行列計算機能について理解しておらず、
(というより、数学が不得意過ぎる)
かなり、長いコードとなりました。
(期待頻度については、詳細な説明は割愛させてもらいますが、
対応する行和と列和の積を総和で割ったものです)
分割表 +------+------+------+ | | [,1] | [,2] | +------+------+------+ | [1,] | 38 | 11 | +------+------+------+ | [2,] | 14 | 51 | +------+------+------+ 期待頻度はこうなります +------+------+------+ | | [,1] | [,2] | +------+------+------+ | [1,] | 22.35| 26.65| +------+------+------+ | [2,] | 29.65| 35.35| +------+------+------+
多分Rであれば、for
とか使わずとも、
基本的な行列計算だけで出来てしまうのではないかと思っていますが、
(正直、Rじゃなくても出来そう・・・)
どのくらい、簡単に書けるものなのでしょうか?
R
1E <- function (M) { 2 sum <- sum(M) 3 r.cnt <- dim(M)[1] 4 c.cnt <- dim(M)[2] 5 r.sum <- rowSums(M) 6 c.sum <- colSums(M) 7 m <- matrix(1:r.cnt*c.cnt, nrow=r.cnt, ncol=c.cnt) 8 for (i in 1:r.cnt) { 9 for (j in 1:c.cnt) { 10 m[i, j] <- r.sum[i] * c.sum[j] 11 } 12 } 13 return (m / sum) 14} 15 16m <- matrix(1:4, nrow=2, ncol=2) 17m[1:2, 1:2] <- c(38, 14, 11, 51) 18 19e <- E(m) 20
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/07 11:26