多項分布の密度関数     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

Made with Macintosh