多項分布の密度関数 Last modified: Nov 17, 2004
目的
多項分布の確率を求める
R には,dmultinom という名前の関数が用意されている(乱数発生用には rmultinom も)
使用法
multinomial(x, p)
引数
x 観察値ベクトル
p 母比率ベクトル
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/multinomial.R", encoding="euc-jp")
# 多項分布の確率を求める
multinomial <- function(x, # 観察値ベクトル
p) # 母比率ベクトル
{
stopifnot(length(x) == length(p), sum(p) == 1, floor(x) == x, x >= 0)
exp(lgamma(sum(x)+1)+sum(x*log(p))-sum(sapply(x+1, lgamma))) # 対数で計算して後で逆対数を求める
}
使用例
> multinomial(c(4, 2, 3, 0), c(0.5, 0.15, 0.3, 0.05))
[1] 0.04784062
> dmultinom(c(4, 2, 3, 0), 9, c(0.5,0.15, 0.3, 0.05))
[1] 0.04784062
> options(digits=21)
> multinomial(c(4, 2, 3, 0), c(0.5, 0.15, 0.3, 0.05))
[1] 0.04784062499999996
> dmultinom(c(4, 2, 3, 0), 9, c(0.5,0.15, 0.3, 0.05))
[1] 0.047840624999999921
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI