岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部:...

89
巨大数・微小数を処理する算術システムと その2項確率計算への応用 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部:中村 忠 Technical Report No. 90 October 2004 Okayama Statistical Association Okayama, Japan

Transcript of 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部:...

Page 1: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

巨大数・微小数を処理する算術システムと

その2項確率計算への応用

岡山大学・教育学部:平井 安久

岡山理科大学・総合情報学部:中村 忠

Technical Report No. 90

October 2004

Okayama Statistical Association

Okayama, Japan

Page 2: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

巨大数・微小数を処理する算術システムと

その2項確率計算への応用

岡山大学・教育学部:平井 安久

岡山理科大学・総合情報学部:中村 忠

要 旨 1970 年代においては,離散分布の確率は表現が簡単であるにもか

かわらず,標本数が大きい,あるいは和の項数が多いときは計算が面倒で

あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

あろう.このような問題を避けるために,直接計算をしない有用な近似法

が今日まで多く提案されてきた.今日では,より高速で高性能のコンピュ

ータが安価に入手できる.このような現状でも,これまで通りに近似式を

用いるべきであろうか?巨大数・微小数を扱うことのできる種々の算法の

中で,主流は多倍長技法である.例えば,実際に仮説検定を行う際には即

座に確率値が必要であるが高い精度を必要としない.このような場面では

多倍長の算法は計算時間が長いとかパソコンのメモリの大きさに依存する

等の欠点がある.このような欠点を避けるために,実数集合上に新たな算

法を提案する.提案した算法を用いて,C言語で可動する算術システムを

パソコン上に構築する.この算術システムは数値計算が必要とされる種々

の分野へ応用可能である.ここではこの算術システムを2項確率の計算へ

応用した.それは,2項確率計算は最近のパソコンを用いても標本数が大

きい場合にはまだ計算が困難となるからである.提案した算術システムを

用いて近似計算をしないで2項確率を計算するアルゴリズムを提案し,そ

のアルゴリズムをパソコン上に実装する.提案した算術システムは巨大な

標本数でも2項確率が計算可能である.数値実験により相対誤差と計算時

間から見て提案した2項確率計算アルゴリズムは非常に広い範囲での標本

数に対して有効であることがわかった.

1

Page 3: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

1. はじめに

パーソナル・コンピュータ(以下,パソコンという)に標準で装備されている実数の算

術アルゴリズムは2進表示を用いた不動小数点演算を基礎にして構成されている.この演

算法は 32 ビット(単精度)または 64 ビットフォーマット(倍精度)で実数を表現してい

るため,大きな数(または小さな数)は表示ができないあるいは計算不可能というオーバ

ーフロー(またはアンダーフロー)問題が生じる.これらの問題を回避する計算技法とし

て種々の技法がある.特に,多倍長計算技法(例えば,Knuth(1981))がよく使用されてい

る.また,かなり大きい数から小さい数まで広範囲な数が計算可能な算術システムを実現

している数式処理ソフトウェアとして Mathematica(2000),Maple(2001)等がある.しかし,

これらの数式処理ソフトはかなり高価である.本論では,パソコンに装着されている算術・

論理演算装置で処理する算術をそのまま利用するという前提の下で,多倍長技法では扱え

ないような巨大数・微小数まで扱える算術理論を構築する.この算術理論の実現として算

術システムを開発する.このシステムは無料で手軽に使える算術システムとなっている.

ここで提案される算術理論,算術システムは多倍長技法のそれとは全く異なっている.

本論で提案する算術システムの統計分野への応用として,離散型確率分布の確率関数や

分布関数の計算がある.推定,検定の際に使用する確率の近似値は相対誤差 ないし

の精度があれば十分であり,また瞬時に確率の値を計算する必要がある.こういった

分野においてはこの算術システムは有効である.例えば,岩崎(2001)や松尾(2000)におけ

る確率値の計算は市販のソフトを使わずとも,この提案する算術システムで可能である.

離散型確率分布の確率関数や分布関数の値を直接計算することと,2項確率の正規近似な

ど近似式を使って計算することの決定的違いは,前者はコンピュータの算術・論理演算装

置に装備されている浮動小数点算術演算の誤差のみによるが,後者はその誤差に加え,更

に近似による誤差が2重にあるということである.ここでは標本の大きさが巨大な(例え

ば数億)場合に対しても2項分布の確率関数や分布関数の値の直接計算ができる2項確率

計算アルゴリズムを提案し,その精度等を数値実験で検証する.2項分布関数の値を直接

計算する試みとして,Bowerman and Scheuer(1990)はオーバーフロー(またはアンダー・

フロー)を避けながら,2項分布関数の値を直接計算する方法を提案している.非常に特

殊な方法であり,一般性はないが標本の大きさが 1023 の場合まで計算が可能である.コン

ピュータの処理速度の高速化と処理方法の工夫(例えば,本論で提案する計算法)により,

直接計算でできる標本の大きさの上限がかなり大きくなっている(例えば,数億).この理

由により,近似式は不要となりつつある.しかしながら,全く不要かというとそうではな

い.それ自身が導出された仮定である標本の大きさが非常に大きな(例えば,数百億)場

合において数十万回のシミュレーション実験を行う際には,計算時間等の理由で,近似式

は十分に役立つ.このような見解は岩崎(2000)においてもみられる.

-7101010−

第2節では,広範囲の実数を表現するため,実数全体集合と代数的に同型な集合(新し

2

Page 4: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

い数体系)を導入する.この集合上に算術(四則演算)を定義する.この算術をモグラ算

術といい,この集合の元をモグラ数という.モグラ数は通常の実数に代わる新しい数の表

現となる.この新しい数表現を用いると,コンピュータ上で広範囲の実数を表現できる.

従って,巨大数あるいは微小数を処理できるということになる. 第3節では,前節で導入されたモグラ算術をパソコンで作動する処理系で実現できる算

術アルゴリズムを導入する.この算術アルゴリズムは浮動小数点算術演算の長所はそのま

ま利用し,欠点を補うように構成されている.処理系としてC言語を採用するならば,理

論上,扱える数の絶対値の最大値は約 10 の 137 京 8101 兆乗,扱える数の絶対値の最小値

は約 10 の -137 京 8101 兆乗である.モグラ算術は算術システムであるから,あらゆる数値

計算が応用範囲となる.一方,何千桁という高い精度の値が要求される分野には不向きで

ある.後節で必要となるモグラ算術での関数をいくつか導入する.

第4節では,2項分布の確率関数の値の直接計算アルゴリズムを提案する.第3節で導

入された関数を用いて,2項係数の計算方法として2種類,確率積の計算方法として2種

類を考える.それぞれの手法を組み合わせたすべての方法に対して数値実験を行う.絶対

誤差,相対誤差などの精度保証および計算時間等を基準に一番よい方法を確率関数の値の

計算アルゴリズムとして採用する.

第5節では,2項分布の確率分布関数の値の計算アルゴリズムとして2通りの方法を提

案する.非常に多くの実数の和の計算が生じるので,いくつかの確率不等式を用いて,

程度の精度を保証する範囲で和の項の省略を行う.その後,第4節で採用された確率関数

の値の計算アルゴリズムと2項確率分布関数の漸化式を用いて,大きい順と小さい順に各

項を加えるという2つの方法を提案する.

1510 −

第6節では,第5節で提案された2つの方法の数値実験を行う.絶対誤差,相対誤差な

どの精度保証および計算時間等を基準にして比較・検討する.その結果,良いと判断され

る方法を確率分布関数の値の計算アルゴリズムとして採用する. 付録では,本論における種々の数値実験をおこなう際の計算機環境および数値実験の全

般にわたる補足を以下のような順に述べている. ・ 真値の計算に用いた Maple の精度計算法の簡単な解説,

・ 2項確率関数の計算や2項分布関数の計算に必要なプログラムの説明,

・ Maple を用いて真値計算をするときの計算時間の長さの具体例,

・ Borland C++の計算精度の具体例,

・ 数値表(第4節以降)の見方,特に相対誤差が0と表示される場合についての注意,

・ 分布関数の計算値の相対誤差の挙動(下側確率 ( ; , )B x n p がかなり1に近い場合に特殊な

状況が生じること)の解釈.

本冊子に付属の CD-ROM には,本論で掲載している実験結果と共に,本論で掲載できなか

った数値実験の結果が詳細に記録されている.

3

Page 5: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

2. 新しい数体系

パーソナル・コンピュータ(以下,パソコンという)における数の表現や算術演算は2進

表示を用いた不動小数点演算を基礎にして構成されている.この表示方法は 32 ビット(単

精度)または 64 ビットフォーマット(倍精度)で実数を表現しているため,大きな数(ま

たは小さな数)は表示ができないあるいは計算不可能というオーバーフロー(またはアン

ダーフロー)問題が生じる.パソコンに標準で装備されている算術システムの長所はその

まま利用し,短所を補う新しい算術アルゴリズムを構築するため,実数体系 と代数的に

全く同じ数の体系を導入する.この体系の元を実数の別表現として扱う,すなわち,この

数体系に算術が導入される(定理 2.2 参照).以下この数体系とその算術をどのように導入

するかを述べよう.

R

集合N は整数全体集合とし,正整数M を任意に固定する.次の集合

(2.1) M = ([ 10 , 10 ]M M−− − ∪ {0} ∪ [10 ,10 ])M M− ×N

を考える.集合 に関係( )を導入する. M ≡

定義 2.1. ,( , とする.( , )s i )t j ∈M 10 10Mis t× = × Mjのとき,( , と の間には関

係(≡)があるといい,記号で ( ,)s i ( , )t j

) ( , )s i t j≡ とかく.

この関係( )は同値関係である.元 と同値な関係にある元の全体(同値類という)

を記号

≡ ( , )s i,s i≺ = { ( , )t j ∈ M ; ( , ) ( , )s i t j≡ } で表す.例えば, ,

, ,

1,0 =≺ { (1,0)(10 ,1)M− (10 ,−1)M } 2, 2 =≺ { (2, 2), .一般には次が成立する. (2 10 ,3)M−× }

補題 2.1. ∈ とする.次が成立する. ( , )s i M(i) のとき,0s = ,s i =≺ { (0, )i ; i∈N }.

(ii) | | 10 Ms −= ならば, , {( , ), ( / | |, 1), (1/ , 2)s i s i s s i s i }= − −≺ .

(iii) | | 10Ms = ならば, , {( , ), ( / | |, 1), (1/ , 2) }s i s i s s i s i= + +≺ .

(iv) ならば, . | | 1s = , {( , ), (10 , 1), (10 , 1)M Ms i s i i i−= +≺ }−}(v) 10 ならば, . | | 1M s− < < , {( , ), ( 10 , 1)Ms i s i s i= × −≺

(vi) 1 | | 10Ms< < ならば, , {( , ), ( 10 , 1Ms i s i s i− )}= × +≺ .

証明.最初の4つは明らかなので, (v)を示そう. ( , ) ,t j s i∈≺ とすれば,

10 10Mi Ms t× = × jより ( )10M j is t −= × . 10 | | 1M s− < < だから,10 M− < ( )| | 10M j it −× < 1.

従って, . のとき,1 1j i− ≤ − ≤ 1j i= − 10 Mt s −= × < 10 M− .これは ( , に矛盾

する. のとき, t . のとき,

)t j ∈Mj = i s= 1j i= + 10Mt s= × .故に(v)が示された.同様にし

て,(vi)も証明される.

4

Page 6: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

集合 を同値関係( )による同値類に類別し,その同値類の全体を とかく.

集合 に2種類の算法(加法

M ≡ / ≡M/ ≡M ⊕,乗法⊗)を定義するために次の変換を考える.

(2.2)

0, 0,

( ) min{ ;10 | | 10 10 , 0,1,2, }, 0 | | 1,

min{ ;10 | | 10 10 , 0,1,2, }, | | 1,

M Mk M

M Mk M

z

I z k z k z

k z k z

− −

=⎧⎪

= − ≤ × ≤ = < ≤⎨⎪

≤ × ≤ = >⎩

(2.3) ( )

0, 0,( )

10 , 0.M I z

zA z

z z− ×

=⎧⎪= ⎨× ≠⎪⎩

定義より, ( ) (| |)I z I z= , ,( ) (1/ ) ( 1)I z I z z= − > ( ) 0I z < (0 < | |z < 10 )M−, ( ) 0 (I z =

10 M− ≤ | |z ≤ 10M ) , ( ) 0 (10 | |)MI z z> < (0) 0,A = ,10 M− ≤ | ( ) |A z < 1 (0 < | |z 1)< ,

1 | ( ) | 10MA z≤ ≤ (| | 1)z ≥ , ( ( )) ( )A A z A z= である.従って,任意の実数 に対して一意

z

( ( ), ( ))A z I z が定まり, ( ( ), ( ))A z I z ∈M かつ( )( ) 10M I zz A z ×= × .

(注 2.1) 実数 ( 0)z ≠ が0 | を満たす場合,| |が10| 1z< ≤ z M−以上かつ1より小さくなる

まで10M を繰り返し乗ずる.そのために必要な乗算の繰り返し最小回数が ( )I z− であり,

結果として得られる数が である.実数 が を満たす場合はその数が1以上かつ( )J z z | | 1z >

10M より小さくなるまで10 M− を繰り返し乗ずる.そのために必要な乗算の繰り返し最小回

数が ( )I z であり,結果として得られる数が ( )A z である.

定義 2.2. ,,s i≺ ,t j≺ ∈ / ≡M とし, , とする. 10miw s= × 10mjz t= ×(i) 加算(⊕): . , , ( ), (s i t j A w z I w z⊕ = + +≺ ≺ ≺ )

)(ii) 乗算(⊗): . , , ( ), (s i t j A w z I w z⊗ = × ×≺ ≺ ≺

定理 2.1. 2つの算法 ,⊗を持つ集合⊕ / ≡M は可換体である.

証明. とし,,k k kC s i=≺ 10 kMik kz s= × とおく ( 1, 2,3k )= .

(i) 加算 に関しては可換加法群であることを示す.可換性:⊕ 1 2C C⊕ = 2C C⊕ 1

( )C C Cは定義

よ り 明 ら か . 結 合 法 則 : 1 2 3⊕ ⊕ = 1 2( )C C C3⊕ ⊕ を 示 そ う .

2z + 3z = 2 3(2 3( ) 10 )M I z zA z z × ++ × だからC C2 3 2 3 2 3( ), ( )A z z I z z+ +≺ .従って,⊕ =

5

Page 7: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

1C ⊕ 2(C ⊕ 3 )C = 1C ⊕ 2 3 2 3( ), ( )A z z I z z+ +≺ . 一 方 , 1z + 2 3( )A z z+ ×

2 3( )10M I z z× + = 1 2 3(z z z+ + ) だ か ら , 1C ⊕ 2 3 2 3( ), ( )A z z I z z+ +≺ = 1(A z +≺

. 同 様 に し て , ( )2 3( )), 1 2 3( ( ))I z z z+ +z z+ C C C1 2 3⊕ ⊕ = 1((A z +≺ 2 )z +

.故に結合の法則が成立する.任意の3 ),z 1 2 3(( ) )I z z z+ + ,C s i= ≺ ∈ に対し

て, ,

/ ≡M0,0C⊕ ≺ = C ,s i≺ ⊕ ,s i−≺ = 0,0≺

Mだから, は加法( )に関

して単位元であり, は の逆元である.すなわち, は可換加法群で

あることが示された.

0,0≺ ⊕,s i−≺ ,s i≺ / ≡

(ii) 乗法( )に関して可換な準群であることを示す.可換性:⊗ 1 2C C⊗ = 2C C⊗ 1

( )Cは定

義 よ り 明 ら か . 結 合 法 則 : C C1 2 3⊗ ⊗ = 1 2( )C C C3⊗ ⊗ を 示 そ う .

2z × 3z = 2 3(2 3( ) 10 )M I z zA z z × ×× × だから C C2 3⊗ = 2 3 2 3( ), ( )A z z I z z× ×≺ .従って,

.一方,1 2 3( )C C C⊗ ⊗ = 1C ⊗ 2 3 2 3( ), ( )A z z I z z× ×≺ 1z × 2 3( )2 3( ) 10M I z zA z z × ++ ×

だ か ら ,= 1 2 3(z z z× × ) 1C ⊕ 2 3 2 3( ), ( )A z z I z z× ×≺ = 1 2 3( ( )),A z z z× ×≺

.同様にして,1 2 3( ( ))I z z z× × 1 2 3C( )C C⊗ ⊗ = 1 2 3 1 2 3(( ) ), (( ) )A z z z I z z z× × × ×≺ .

故 に 結 合 の 法 則 が 成 立 す る . 任 意 の ,s i≺ ∈ / ≡M に 対 し て , ,s i ⊗≺

1,0≺ = ,s i≺ .従って は乗法(1,0≺ ⊗)に関して単位元である. と異なる

任意の に対して,

0,0≺,s i≺ ∈ / ≡M , 1/ ,s i s i⊗ −≺ ≺ = 1,0≺ だから, は

乗法( )に関して の逆元である.

1/ ,s i−≺⊗ ,s i≺

(iii) 最後に分配の法則: 1C ⊗ 2(C ⊕ 3 1 2 1) ( ) ( )C C C C C3= ⊗ ⊕ ⊗ が成り立つことを示

そ う . 1C ⊗ 2(C ⊕ 3 )C = 1C ⊗ 2 3( ),A z z+≺ 2 3( )I z z+ = 1(A z ×≺ 2(z + 3 )),z

.同様にして,1 2 3( ( ))I z z z× + 1 2C C⊗ ⊕ 1 3C C⊗ = 1 2( ),A z z×≺ 1 2( )I z z× ⊕

1 3( ), 1 3( )I z z×A z z×≺ = 1(A z ×≺ 2 1 3 1 2 1 3), ( )z z z I z z z z+ × × + × = 1 2( (A z z +≺

.故に分配の法則は成立する. 3 )),z 1 2 3( ( ))I z z z+以上により, / ≡M は可換体である.

任意の に対して,加法(,s i≺ ∈ / ≡M ⊕)に関する の逆元を で表す.

明らかに である.また, と異なる任意の に

対して,乗法( )に関する の逆元を

,s i≺ ,s i−≺,s i−≺ = ,s i−≺ 0,0≺ ,s i≺ ∈ / ≡M⊗ ,s i≺ 1,s i −≺ で表す.正整数 に対して,

を 回乗じたものを

n ,s i< >n , ns i< > で表す.明らかに

1,s i −≺ = 1/ ,s i−≺ である. に不

等号( ),等号(

/ ≡M≤ =),減算( ),除算( )を導入する.

定義 2.3. , とし, ,s i≺ ,t j≺ ∈M 10Miw s= × , 10Mjz t= × とおく.

(i) 減算( ): ,s i≺ , , ,t j s i t j= ⊕ −≺ ≺ ≺ .

(ii) 除算( ): と異なる に対して, 0t ≠ ,t j≺

6

Page 8: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

,s i≺ 1, , ,t j s i t j −= ⊗≺ ≺ ≺ .

(iii) 不等号( ): のとき,≤ 0s ≤ , 0,s i 0≤≺ ≺ とかくことにする. 一般には,

,t j≺ ,s i≺ ≤ 0,0≺ のとき, , ,s i t j≤≺ ≺ とする.

(iv) 等号(=): かつ, ,s i t j≤≺ ≺ , ,t j s i≤≺ ≺ のとき, , ,s i t j=≺ ≺とする.

明らかに ,s i≺ ,t j≺ = ( ), ( )A w z I w z− −≺ , , ,s i t j≺ ≺ = ( / ),A w z≺

( / )I w z ,1,s i −≺ = 1,0≺ ,s i≺

)≡が成立する.

次の定理により, を実数の1つの表現とみなせる. ,s i≺ ( /∈M 定理 2.2. 可換体 は実数体 と同型である. / ≡M R 証明.実数体 から への写像R / ≡M ( ) ( ), ( )f z A z I z= ≺ を考える.ここに ( )I z , ( )A zは(2.2),(2.3)で定義されている関数である. が実数体 から の上への同

型写像であることを示す. ,

( )f z R / ≡Mw z ∈R とし, w z≠ とする. とすれば,( ) ( )f w f z=

( ( ), ( ) )A w I w ∈ ( ), ( )A z I z≺ .これよりw = ( )( ) 10M I wA w ×× = ( )( ) 10M I zA z ×× = z.従っ

て .すなわち,写像 は一対一である.任意の( ) ( )f w f z≠ ( )f z ,s i≺ ∈ / ≡M に対して,

10Miz s= × とおけば .従って は から( )f z = ,s i≺ ( )f z R / ≡M の上への写像である.

, と す る . w z ∈ R ( )f w ⊕ ( )f z = ( ), ( )A w I w≺ ⊕ ( ), ( )A z I z≺ = ( ), ( )A w z I w z+ +≺ = ( )f w z+ . 更 に , ( )f w ⊗ ( )f z = ( ), ( )A w I w≺ ⊗

( ), ( )A z I z≺ = ( ),A w z×≺ ( )I w z× = (f w z)× .従って が実数体 から

の上への同型写像である.

( )f z R/ ≡M

数体系 の部分集合 / ≡M

/+ ≡M = { , / ; 0s i s }∈ ≡ >≺ M

を考える.数体系 ,集合/ ≡M /+ ≡M はそれぞれ演算⊕,演算⊗に関して可換群となっ

ている.このことを強調するときは, / ≡M , /+ ≡M の代わりにそれぞれ ,

という記号を使用する.また,正数aの巾乗 の代わりに,記号 を使

用することもある.数体系 から可換群

( / ,≡ ⊕M ))( / ,+ ≡ ⊗M xa ^{ }a x

/ ≡M /+ への写像を次のように定義する. ≡MT s i≺( , ) = (e^{ 10 }), (e^{ 10 })Mi MiA s I s× ×≺ , , /s i ∈ ≡≺ M .

補題 2.1. 写像T は ( / から ( /,≡ ⊕M ) ),+ ≡ ⊗M への同型写像である.

証明. とし,1 1 2 2, , , /s i s i ∈≺ ≺ M ≡ ,k k kC s i=≺ , 10 kMik kz s= × とおく .

だから,

( 1, 2k = )

1 2 1 2 1 2 1 2C C⊕ = ( ), ( )A z z I z z+ +≺ ( )T C C⊕ = 1 2( ), 1 2( )z zI e +z zA e +≺ .一方,

7

Page 9: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

1 11( ) ( ), ( )z zT C A e I e=≺ , だ か ら ,2 2

2( ) ( ), ( )z zT C A e I e= ≺ 1 2( ) ( )T C T C⊗ =

.故に 1 2 1 2( ), ( )z z z zA e e I e e≺ = 1 2 1 2( ), ( )z z z zA e I e+ +≺1 2 1 2( ) ( ) (T C C T C T C⊕ = ⊗ )

2

2

が成立する.つぎに写像 T は1対1であることを示そう. ならば,

となることを示せばよい.

1( ) ( )T C T C=

1 1,s i≺ = 2 2,s i≺ 1( ) ( )T C T C= だから

1 11 1(e^{ 10 }), (e^{ 10 })Mi MiA s I s× ×≺ = 2 2

2 2(e^{ 10 }), (e^{ 10 })Mi MiA s I s× ×≺ .

これより, 11e^{ 10 }Mis × = 2

2e^{ 10 }Mis × .従って, 1 1,s i≺ = 2 2,s i≺ .

(注 2.2) 補題 2.1 より,写像T は逆写像1T −をもつ.この逆写像を使うと,定義 2.2 は

次のようにかける.

定義 2.2’. ,,s i≺ ,t j≺ ∈ / ≡M とし, 10Miw s= × , 10Mjz t= × とする.

(i) 加算(⊕): . 1, , ( ( , ) ( ,s i t j T T s i T t j−⊕ = ⊗≺ ≺ ≺ ≺ )))(ii) 乗算(⊗): . , , ( ), (s i t j A w z I w z⊗ = × ×≺ ≺ ≺

/ ≡M に導入された算術は2つの特徴をもっている.第一に,通常の実数の演算結果と

して得られる数の絶対値がある正数(10M )を越えたら,それより小さくなるように調整

する.これはオーバーフロー問題が起こりにくい操作になっている.逆に通常の実数の演

算結果として得られる数の絶対値がある正数(10 M−)より小さくなったら,それより大き

くなるように調整する.これはアンダーフロー問題を起こしにくい操作になっている.こ

のように上・下から数を調整する(叩く)ことから,この算術を“モグラたたき算術”, / ≡Mの元 をモグラ数と呼ぶことにする.第二に,実数をある範囲内の実数と整数の組で

表現するため,コンピュータでの数表現の範囲が通常と比べて格段に広いということであ

る(第3節参照).

,s i≺

8

Page 10: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

3. モグラたたき法

前節で考察した数体系 のモグラたたき算術は算術論理演算(ALU)が装置されてい

るコンピュータで作動しかつ倍精度実数型の数を処理できる任意の処理系

(C,FORTRAN,PASCAL,JAVA 等)で実現可能である.同様に,コンピュータで作動する数式処理

システム(Mathematica, Maple 等)の上でも実現可能である.この算術をC言語に限って実

現するが,他の処理系でも同様にしてできる.本論ではC言語をもちいてどのようにモグ

ラ数 およびモグラ算術を実現するかを述べよう.C言語は64ビットフ

ォーマット(倍精度)で実数を表現しているため,その表現できる実数の大きさの範囲は

約 か ら 約 で あ る . ,

/ ≡M

,s i≺ ( /∈ ≡M )

30710− 30810 ,s i≺ ,t j≺ /∈ ≡M に 対 し , モ グ ラ 積

が定義されるには でなければならない.一方,,s i≺ ⊗ ,t j≺ 307 30810 | | 10s t− ≤ × ≤

2 210 | | 10M Ms t− ≤ × ≤ だから,2 307M ≤ となる.M は自然数なので,1 とな

る.本論で提案する算術システムはオーバーフロー・アンダーフローが起こりにくいよう

に巨大数および微小数を処理することが目的だから,

1M≤ ≤ 53

M = 153を採用する.以下,M = 153

として議論する.10 | | 10M Ms− ≤ ≤ の範囲の実数 を倍精度実数型で表したものを とす

る.C言語の倍精度表現で正確に表現可能な整数の最大値は

s s

9007199254740991D = である.

D i D− ≤ ≤ の範囲の整数 iを倍精度実数型で表したものを とする. 実数 および整数 iがi s

10 | | 10M Ms− ≤ ≤ および D i D− ≤ ≤ の範囲にあるとき,モグラ数 のC言語による

実現として, を採用する.このような の全体に を加えた集合 を

の実現として採用する.本節以降では,混乱の恐れがない限り, を単に

で表し, のC言語による実現 は次のように表す.

,s i≺

,s i≺

M Ms i s D i D− ≤ ≤ − ≤ ≤≺

,s i≺ 0,0≺ C

/ ≡M ,s i≺

,s i≺ / ≡M C

C ={ , ;10 | | 10 , } ∪ { 0,0 }≺ .

C言語に標準で装備されている算術システムでは,非常に大きな(または小さな)数 10Mis×

を表現(あるいは処理)できないが,モグラ表現では ,s i≺ ( )∈C と表現できる. C言語を使用した四則演算アルゴリズムを導入するために若干の準備をする.ここで導

入する算術アルゴリズムは入力される倍精度型実数 を直接処理するのではなく,実数r( )A r と整数 ( )I r の組 ( ), ( )A r I r≺ ( )∈C に変換し,この組に対して に導入された四則

演算を実行するのである.前節で述べたようにモグラ数

C( ), ( )A r I r≺ と(倍精度型)実数

9

Page 11: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

rは理論的には同じ実数である.しかし,両者は異なる算術システムにおいて計算が実行さ

れる.すなわち,倍精度型実数 はC言語に標準で装備されている算術システムで,モグラ

r( ), ( )A r I r≺ は本節で提案される算術システムで計算が可能となる.

C に次のような四則演算を導入する.混乱の恐れがない限り,演算の記号は に

おける演算( , ,⊕, )と同じ記号を用いる.一方,記号(

/ ≡M⊗ ×, , ,−)は処

理系(ここではC言語)に標準で装備されている算術システムにおける四則演算記号を表

す. , とする.

/ +

,s i≺ ,t j≺ ∈C(i) 乗算( ) ⊗

,s i≺ ⊗ ,t j≺ = , ( )A s t i j I s t× + + ×≺ ( ) .

(ii) 除算( ) とする. 0t ≠,s i≺ ,t j≺ = / , ( / )A s t i j I s t− +≺ ( ) .

(iii) 加算( ) ⊕(a) または の場合: 0s = 0t =

,s i≺ ⊕ ,t j≺ =, , 0,, , 0s i tt j s .

=⎧⎨ =⎩

≺≺

(b) , の場合: 0s ≠ 0t ≠ (b1) i の場合: j=

,s i≺ ⊕ ,t j≺ =, , 0,

( ), ( ) , 0s t i stA s t I s t i st

+ <⎧⎨ .+ + + >⎩

≺≺

(b2) i の場合: j≠(b21) 1i j− = − の場合:

,s i≺ ⊕ ,t j≺ = ( 10 ), ( 10 )M MA s t I s t− −× + × + +≺ j .

(b22) 1i j− = の場合:

,s i≺ ⊕ ,t j≺ = ( 10 ), ( 10 )M MA s t I s t i− −+ × + ×≺ +

1

(b23) | |i j− ≠ の 場 合 : , ,

110log | |sd i M s−= + 1

10log | |td j M t−= +

t sd d d= − 161 10κ −= − とおく.

,s i≺ ⊕ ,t j≺ = ( )

( )

, , ,, , ,

, 1 ( / ) 10 ,0 ,, 1 ( / ) 10 ,0 ,

t s

t sM j i

t s tM i j

s t s

s i d dt j d d

s i t s d d dt j s t d d d

κκ

κκ

− ≤ −⎧⎪ − ≥⎪⎨ ,⊗ + × < < +⎪⎪ ⊗ + × < < +⎩

≺≺

≺ ≺≺ ≺

10

Page 12: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(iv) 減算( ) ,s i≺ ・ ,t j≺ = ,s i≺ ⊕ ,t j−≺ .

以下,この算術アルゴリズムをモグラたたき法ということにする. (注 3.1) M の値として 153 を採用している.精度や計算時間という観点からみたら,

とすることは本質的ではない.153M = 7M = でも 153M = の場合とほぼ同程度の精度や

計算時間である. に対応する算術システムと7M = 153M = に対応するそれが本質的に違

う点は扱える数の範囲が後者の方が広いということである. 例えば,扱える最大の桁数は

前者が 63049394783186945 桁(約 6京 3049 兆桁)に対し,後者は 1378101485775371776 桁

(約 137 京 8101 兆桁)である. 153M = を採用した理由は,現在普及している C/C++コン

パイラが 32 ビット対応であるためである.64 ビット対応のプロセッサが市場に出始めたの

をきっかけに,アプリケーションソフト(特に C/C++コンパイラ)の 64 ビット化が始まっ

ている.本論で提案している算術システムはM の値を変えることで 64 ビット C/C++コン

パイラにも対応可能である. (注 3.2) 加算(⊕)については,上のようなやり方でなく,定義 2.2’を用いることも

できる.本節の最後に導入されるモグラ数のモグラベキ乗関数 ,底

が の場合のモグラ対数関数 を用いて ( , , ,s i t jmpow ≺ ≺ )

e ( , )s imlog ≺,s i≺ ⊕ ,t j≺ = ( ( ,0 , , ) ( ,0 , , ))e s i e t j⊗mlog mpow mpow≺ ≺ ≺ ≺

と定義するのである.数値実験の結果,これは上の加算に比べて精度が落ちる場合がある. (注 3.3) 除算は次のようにしてもよい.しかし,2回ほど余分な演算がいるので高速演

算を必要としている計算には不向きである. , ,s i t j≺ ≺ = ), ( 1/ ,s i t j⊗ −≺ ≺ .

2つのモグラ数 , (,s i≺ ,t j≺ ∈C )の間の大小関係,等号については次のように定

義する.

(v) , とする. とおく. , ,

に対応して ,

0s > 0t > 10 10( ) (log | | log | |) /d j i t s M= − + − 0d < 0d =

0d > ,s i≺ > ,t j≺ ,s i≺ = ,t j≺ , ,s i≺ < ,t j≺ とする.

(vi) , とする. とおく. , ,

に対応して ,

0s < 0t < 10 10( ) (log | | log | |) /d j i t s M= − + − 0d < 0d =

0d > ,s i≺ < ,t j≺ ,s i≺ = ,t j≺ , とする. ,s i≺ > ,t j≺s ,

,(vii) のとき, とする. 0t ≤ ≤ ,t j s i≤≺ ≺(viii) かつ のとき,0s = 0t = ,t j s i=≺ ≺ とする.

11

Page 13: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

モグラ算術システムは四則演算,等号,不等号が定義されているのであらゆる数値計算

に応用可能である.また,上記の各演算において,得られるモグラ数 の第2成分の

整数 iが[ , の範囲を超えているときは,モグラたたき算術システムでもオーバーフロ

ーあるいはアンダーフローが起こることになる.モグラ数 は10

,s i≺]D D−

,s i≺ M− ≤ | |s ≤ 10M ,

D− ≤ i ≤ Dを満たすから,10 進数でいうと符号を除いて( 1)10 M D− +

から まで

の表現が可能である.従って,モグラたたき法の利点は通常のC言語に比べてオーバーフ

ローあるいはアンダーフローが非常に起こりにくくなることである.モグラたたき法の計

算精度はC言語の持っている精度と同じなので,巨大な回数(例えば数十億回)の繰り返

し演算は,通常のC言語の算術システムと同じく,精度の低下を起こす可能性がある.ま

た,モグラ数 において,第2成分の整数 が巨大になると,モグラ数から通常のC

言語の算術システムで扱える倍精度型実数には変換できない.逆はいつでも可能である.

( 1)10M D+

,s i≺ i

よく知られた数学関数はモグラ算術システムで作成可能である.ここでは,第4節以降

の議論に使用する関数の作成例をいくつか述べよう. ,s i≺ ∈C とする.

(i) 底が10のモグラ対数関数 ( ,s imlog10 ≺ )

))

))

)

2

10 10( , ) (log ), (log )s i A s Mi I s Mi= + +mlog10 ≺ ≺ , . 0s >

(ii) 底がbのモグラ対数関数 ( ,s imlogb ≺ , . ( , ) ( , ) ( ( ), ( )s i s i A b I b=mlogb mlog10 mlog10≺ ≺ ≺ 0s >

特にb (ネピア数)のとき, を で表す.底が eの自然対

数関数に対応するモグラ版自然対数関数である. は底が のモグラ版対数

関数である.

= e ( , )s imloge ≺ ( ,s imlog ≺( ,s imlog2 ≺ 2

(iii) モグラ数の絶対値 ( , )s imfabs ≺ . ( , ) | |,s i s i=mfabs ≺ ≺

(iv) モグラ数の整数ベキ乗 ( , ,s i nmpowi ≺

nは正整数とする. とし,10 進数の正整数 の2進数表示を0s > n 1 1 0( )l ln αα αα−=

とする.常に 1lα = であることに注意しよう. s = 10[log ]10 ss −× とおく.任意の正数 xに

対して, であるから, 10[log ]1 10 1xx −≤ × < 0 0ˆ1 1s≤ < かつ ,s i≺ = ˆ,0s≺ ⊗ 10log10 ,s i≺ .

ただし,[ は]z zを超えない最大の整数を表す. 0z = とおく. に対して ˆ,0s≺ l( 1, , )i =

12

Page 14: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

1 1ˆ ,0l ii isα −

i− −= ⊗ ⊗z z≺ z

×

を繰り返す. が の 乗 に対応するモグラ表現である.これは実数のベ

キ乗の高速計算法としてよく知られている方法(例えば,Knuth(1981))のモグラ版である.

lz ˆ,0s≺ n ˆ,0 ns≺

10[log ]n s M で割ったときの商をQ ,余りを( 0)≥ R (0 ≤ R < )M とする.これと上記

の繰り返し計算により得られた を用いて, lz , ( , , )s i nmpow1 ≺ = lz ⊗ 10 ,R ni Q+≺

とおく.ただし, nは正整数で である.0s > ,i i ir k=z ≺ ( 1, ,i )l= とすれば,

( , , )s i nmpow1 ≺ = ( 10 ), ( 10 )R Rl l lA r k I r ni Q+ + +≺

となる.モグラ表現 ,i i ir k=z ≺ ( 1, ,i )l= の成分については,前節で述べた ( )I r , ( )A r

の性質により,1 10Mir≤ ≤ , 0ik ≥ ( 1, 2, ,i )l= となることに注意しよう.以上の準備

の下で,モグラ数 の整数ベキ乗 の値を算出する関数を次式で定義する. ,s i≺

< <

, ns i≺

( , , ), 0, 0,( 1) ,0 ( , , ), 0, 0,1,0 , 0, 0,

( , , )0,0 , 0, 0,1,0 ( , , ), 0, 0,( 1) ,0 ( , , ), 0, 0

n

n

s i n n ss i n n sn s

s i nn s

s i n n ss i n n s

> >⎧⎪ − ⊗ − > <⎪⎪ = ≠⎪= ⎨ ≠ =⎪⎪ − < >⎪

− − −⎪⎩

mpow1mpow1

mpowi

mpow1mpow1

≺≺ ≺≺

≺≺≺ ≺≺ ≺

で定義する.

(v) モグラ数の実数ベキ乗 ( , , )s i tmpowr ≺,s i≺ ∈ , かつ tは実数とする.C 0s > [ ] ( [ ])t t t t= + − とかける. [ ( [ ])]Mi t t− をM

で割った商をQ,余りを ,R ( [ ]) [ ( [ ])]Mi t t Mi t tα = − − − とする. の値を算出する

関数を

, ts i≺

( , , )s i tmpowr ≺ = ( , , [ ])s i tmpowi ≺ ⊗ [ ] ,0t ts −≺ ⊗ 10 ,0α≺ ⊗ 10 ,R Q≺

で定義する. 特に 1/ 2t = のときは, を で表し,こ

れをモグラ数の平方根という.このとき,

( , ,1/ 2s impowr ≺ ) )( ,s imsqrt ≺

,0 10 , , :( , )

10,0 10 , , :

R

R

s Q is i

s Q

⎧ ⊗⎪= ⎨× ⊗⎪⎩

msqrt≺ ≺

≺≺ ≺

偶数,

奇数.i

とかける.

13

Page 15: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(vi) モグラ数のモグラベキ乗 ( , , , )s i t jmpow ≺ ≺,t j≺ ∈ M , か つ t は 実 数 と す る .0s > z = ( , ,s i tmpowr ≺ )

)

と お く .

,, t js i < >≺ 10( ,Mjts i ×= ≺ の値を算出する関数を

( ( ( ( ,10 ),10 ), ,10 ) , 0( , , , ) , 0,

( ( ( ( ,10 ),10 ), ,10 ) , 0.

j

M M M

j

M M M

js i t j j

j

− − −⎧⎪ ,<⎪⎪= =⎨⎪⎪

>⎪⎩

mpowi mpowi mpowi zmpow z

mpowi mpowi mpowi z

≺ ≺

で定義する.

(vii) 階乗のモグラ表現 , ( )nmfact0 ( )nmfact1正整数 の階乗 の値を算出する関数をいくつか導入する.最初は直接計算する関数を

定義する. n !n

(a) とおく.漸化式 0 1,0=z ≺

1 ( ), ( )k k A k I k−= ⊗z z ≺ , 1, 2, ,k n= .

による繰り返し計算で得られる を用いて, の値を算出する関数を nz !n

( ) nn =mfact0 z

で定義する.すなわち, は実数 のモグラ表現である.この関数は が何千万,

何億といった非常に大きな整数のときは計算時間が長くなるという弱点がある.そこで次

の関数を導入する.

( )nmfact0 !n n

(b) 100 万までは 10 万ごとに,5 億までは 50 万ごとにデータを用意する.すなわち,

, と し て , 各 の 階 乗

をあらかじめ計算しておく.それらの計算結果を用いて整数の階乗計算をする

という方法を採用する.与えられた が

kn = 510 (1 10)k k× ≤ ≤ 5(5 40) 10 (11 1008)kn k k= − × ≤ ≤ kn

( )knmfact0

n 1jn n nj+≤ < を満たすとしよう.

のとき,漸化式

jn n≤ ≤

1( )j jn n ++ / 2

14

Page 16: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

( ) ( ), ( )k j j jn A n k I n k= ⊗ + +z mfact0 ≺ , 1, , jk n n= −

k

による繰り返し計算で得られる を用いて, の値を算出する関数を jn n−z !n

( ) n nn −=mfact1 z

と定義する. のとき,漸化式 1( ) / 2j j jn n n n++ < < 1+

1( )k jn +=z mfact0 1 1( ), ( )j jA n k I n k+ +− −≺ , 11, , 1jk n n+= − − .

による繰り返し計算で得られる1 1jn n+ − −z を用いて, の値を算出する関数を !n

1 1( )jn nn+ − −=mfact1 z

とする.

(viii) のモグラ表現 log ( )zΓ ( ,s imloggam ≺ )log ( )zΓ の漸近級数展開による近似式

log(2 ) 1 1 1log ( ) ( ) log ( ) log2 2 2 3

zz z z z uπ −Γ = − + − + + 2 2 4 41 1(1 ) (1 )

180 840v u v u− − + −

を利用する(例えば,Abramowitz and Stegun(1972),森口・宇田川・一松(1995)).ただ

し, はガンマ関数,( ) ( 0)z zΓ > (1 ) /u z z= + 1/(1 )z, v = + である.実数 ,1 のモグラ

表現をそれぞれ , とし, ,

z z+

z 'z u = 'z z 1,0=v ≺ 'z とおく. の値を算出

する関数を

log ( )zΓ

( )mloggam z =log 2 1,0

2π −≺ z ⊕ (z 0.5,0 )≺ ⊗ ( )mlog z

⊕ ( √z 2,0 1/ 3,0 )⊕≺ ≺ ⊗ ( )mlog u

( , 2)mpowi v ⊗ ( 1,0≺ ( , 2))mpowi u 180,0≺⊕ ( , 4)mpowi v ⊗ ( 1,0≺ ( , 4))mpowi u 840,0≺

で定義する. 正整数 のときz n= ( ) ( 1)n !nΓ + = であることを利用して正整数 nの階乗

の値を算出する関数をつくることができる.

!n1n+ のモグラ表現を とする. の

値を算出する関数を

,s i≺ !n

( ) ( ,0 , ( , )n e s=mfact2 mpow mloggam≺ ≺ )i

で定義する.

(注 3.4) 正整数 n の階乗 の値を算出する関数として , ,!n ( )nmfact0 1( )nmfact

15

Page 17: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

( )nmfact2 の3種類を導入した.nが高々5億くらいまでなら, が有効であるが,

が5億より大きいときは近似式による関数 が有効となる.

1( )nmfactn ( )nmfact2

16

Page 18: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

4. 2項確率関数の計算アルゴリズム

2項分布 ( , )B n p の確率関数 は実数の四則演算を有限回行って

計算される単純な量である.その形の単純さに反して,大きな整数 nに対する確率関数

の値が直接計算法で計算できる無償のソフトウェアはどこでも入手できる状況

ではない.ここで直接計算法とは多倍長技法や近似式などを用いず,コンピュータに標準

で装備されている算術アルゴリズムのみで2項確率関数の値を計算する方法のことをいう.

直接計算が容易でないという理由の一つは2個以上の因数の乗算・除算の結果が,整数nを大きくするとき,コンピュータの算術システムの中でオーバーフローやアンダーフローを

起こすからである.数の表現範囲の拡大やオーバーフロー・アンダーフロー問題を起こし

にくくする手法としてよく知られている多倍長技法を用いた算術システムとしては,出版

物 , イ ン タ ー ネ ッ ト 等 で 入 手 可 能 で あ る . 一 部 の 高 価 な 数 式 処 理 ソ フ ト

(Mathematica(2000),Maple(2001)等)には,多倍長技法により,かなり大きい自然数 まで計

算可能な確率関数 の組み込み関数を装備している. この節では2項分布

( ; , )( )x n xb x n p nCx p q −=

( ; , )b x n p

n( ; , )b x n p ( , )B n p

の確率関数 の値の直接計算法としてモグラたたき法を使った計算アルゴリズム

を提案する.また.提案した計算アルゴリズムモグラたたき法による確率関数 の

値と Maple で算出したそれの値を相対誤差および計算時間を基準にして比較検討を行う.

( ; , )b x n p( ; , )b x n p

モグラたたき法による2項確率関数 の計算アルゴリズムの導出を考える.以下,

, , ,

( ; , )b x n p1p q+ = 0p > 0q > 10 −≤≤ Dn を仮定し, のモグラ表現を( ; , )b x n p ( ; , )x n pb と

する.実際の計算プログラムにおいては, の値をモグラたたき法で計算するとき

に使用する変数は倍精度実数型で表せる範囲の数のみである.すなわち, は倍精度

実数型の変数である.確率関数

( ; , )b x n p, ,p q n

( ; , )b x n p (= )x n xnCx p q −の計算は2項係数 と確率の

べき乗

nCxx n xp q −

の計算からなる.階乗とべき乗の値を算出する数種類の関数は既に第3節で

導入されている.2項係数の値はこれらの関数を用いて算出する.その方法として次の3

種類の計算法を考える.

(i) 直接計算による方法.この方法は があまり大きくないときに有効である. n ( , )n xc0 = ( )nmfact0 ( ( ) ( ))x n x⊗ −mfact0 mfact0 .

(ii) データセットによる方法.この方法は が5億まで有効である. n( , )n xc1 = ( )nmfact1 ( ( ) ( ))x n x⊗ −mfact1 mfact1 .

(iii) 近似式による方法.この方法はnがかなり大きいときに有効である.

( , )n xc2 = ( )nmfact2 ( ( ) ( ))x n x⊗ −mfact2 mfact2 .

直接計算による方法(i)はデータセットによる方法(ii)で代用できるので以下では議論し

ない.確率積x n xp q −

の計算方法については次の2種類の計算法を考える.ただし,0 1,とする.

p< <1/ 2p ≠

(i) 高速計算による方法

( ; , )x n pp1 = ( ( ), ( ) , ) ( ( ), ( ) , )A p I p x A q I q n x⊗ −mpow1 mpow1≺ ≺ .

(ii) 対数による方法

17

Page 19: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

( ; , )x n pp2 = ( 10,0 , ( ), ( ) ( ( ), ( )A x I x A p I p⊗mpow mlog10≺ ≺ ≺

⊕ ( ), ( ) ( ( ), ( ) )A n x I n x A q I q− − ⊗ mlog10≺ ≺ ) .

残りの に対しては次の計算法を考える. 1/ 2p =(iii) 高速計算による方法

( ; ,1/ 2)x np1 = 1,0 ( 2,0 , )nmpow1≺ ≺ .

(iv) 対数による方法

( ; ,1/ 2)x np2 = 1,0≺ ( 10,0 , ( ), ( ) ( 2,0 ))A n I n ⊗mpow mlog10≺ ≺ ≺ .

上で導入した計算アルゴリズムを用いると, ( ; , )x n pb を求めるのに 通りの組み

合わせが考えられる.すなわち,

4( 2 2)= ×

Ⅰ: ( ; , ) ( , ) ( ; , )x n p n x x n p= ⊗b11 c1 p1 ,

Ⅱ: ( ; , ) ( , ) ( ; , )x n p n x x n p= ⊗b12 c1 p2 ,

Ⅲ: ( ; , ) ( , ) ( ; , )x n p n x x n p= ⊗b21 c2 p1 ,

Ⅳ: ( ; , ) ( , ) ( ; , )x n p n x x n p= ⊗b22 c2 p2 .

(注 4.1) または(0; , ) nb n p q= ( ; , ) nb n n p p= の値がすでに得られているときは,次の漸

化式によっても は計算できる. ( ; , )b x n p

(4.1) ( ; , )b x n p 1 ( 1; ,n x p b x n px q

− += − ), 1,2, ,x n= ,

(4.2) 1( ; , ) ( 1; , )x qb x n p b x n p

n x p+

= +−

, 1, 2 ,0x n n= − −

ただし, が非常に小さくて,nが十分大きいときは,p np の計算値そのものがかなりの誤

差を含んでいる.従って,上の漸化式を用いて計算するのは注意が必要である.

上で述べた4種類の方法ⅠからⅣのどれが良いかを相対誤差と計算時間を基に数値実験

によって比較検討する. 真値 に対する計算値 の相対誤差を で定義する

(Dennis and Schnabel(1996)).

( 0)t ≠ t ˆ| ( ) / |t t t−

数値実験 4.1. 方法ⅠからⅣを用いて,2項確率関数 の値を計算し,その精度や計

算時間を比べる. が ,0.1,0.2,0.3,0.4,0.5 の場合と が 100,500,1000,1 万,15

万,125 万,1025 万,1 億 25 万,2 億 5025 万の場合を組み合わせたそれぞれの場合において,

方法Ⅰ-Ⅳの各方法で9個の2項確率関数の値

( ; , )b x n pp 610− n

( /10; , )b kn n p ( 1, 2,3,...,9)k = を計算し,各計

算値の相対誤差及び計算時間(ミリ秒)を調べた.相対誤差は Maple で計算した2項確率

関数の値を真値としている.ただし,n ≤ 62 10× の範囲では Maple の厳密値計算で算出した

値を,それ以上の に対しては浮動小数点近似による方法で算出した値を真値として採用し

ている.計算時間は同じ計算をある回数だけ行い,その平均で算出した.計算回数は,方

法Ⅰおよび方法Ⅱでは n=100 の場合のみ 10000 回,n=500 以上の場合はそれぞれ 100 回であ

n

18

Page 20: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

る.方法Ⅲと方法Ⅳでは,すべてのnについて 10000 回である.

数値実験 4.1 の結果. 表 4.1(1)では,610p −= の場合に固定した に対して

の各計算値の相対誤差の最大値を各セルの上段に,計算時間(単位ミリ秒)

の最大値を下段に表す.同様に表 4.1 (2)から表 4.1 (6)まではそれぞれ , ,

, , の場合に対応する.表 4.1 (7)は

n ( /10; , )b kn n p( 1, 2,3,...,9)k =

0.1p = 0.2p =0.3p = 0.4p = 0.5p = pが

と動いたときの単項確率

,1.0,10 6− ,2.0 ,3.0 ,4.0 5.0( /10; ,n p) ( 1, 2,...,9)b kn k = の計算値の相対誤差の最大値と最大

計算時間を表したものである.

表 4.1. モグラ算術による2項確率関数の計算値の相対誤差の絶対値と計算時間.下記の表の各セルに

おいて上段は最大相対誤差,下段は最大計算時間(単位ミリ秒)を表す.

(1) 610p −=

n 100 500 1000 1万 15万 125万 1025万 1億25万 2億5025万

方法Ⅰ 3.54E-15 1.62E-14 3.50E-14 4.10E-13 6.69E-12 5.26E-11 4.18E-10 4.16E-09 5.72E-08

0.07 0.31 0.46 3.43 15.78 62.34 93.28 107.34 107.03

方法Ⅱ 7.34E-14 4.69E-13 9.35E-13 4.29E-12 1.31E-10 9.05E-10 2.23E-09 6.28E-08 1.82E-07

0.06 0.32 0.32 3.13 15.93 62.19 93.12 106.87 107.66

方法Ⅲ 4.76E-08 2.56E-11 8.06E-13 7.33E-12 2.68E-10 2.37E-09 4.44E-08 4.37E-07 1.46E-06

0.07 0.16 0.16 0.16 0.16 0.16 0.16 0.16 0.16

方法Ⅳ 4.76E-08 2.56E-11 9.76E-13 5.85E-12 2.34E-10 2.06E-09 4.28E-08 4.09E-07 1.40E-06

0.07 0.16 0.16 0.16 0.16 0.16 0.16 0.16 0.16 (2) 0.1p =

n 100 500 1000 1万 15万 125万 1025万 1億25万 2億5025万

7.3E-16 2.0E-15 2.1E-15 3.4E-14 2.5E-13 4.4E-12 3.4E-11 3.9E-10 5.0E-080.07 0.31 0.47 3.28 16.10 62.66 92.50 107.34 107.50

4.8E-14 1.7E-13 3.4E-13 6.0E-12 9.4E-11 5.6E-10 3.1E-09 5.1E-08 1.5E-070.06 0.31 0.32 3.13 16.10 61.72 92.35 108.13 107.19

4.8E-08 2.6E-11 7.8E-13 6.9E-12 2.6E-10 2.4E-09 4.4E-08 4.3E-07 1.5E-060.08 0.08 0.08 0.09 0.10 0.11 0.12 0.13 0.13

4.8E-08 2.6E-11 1.1E-12 1.3E-11 3.0E-10 2.2E-09 4.6E-08 4.5E-07 1.4E-060.07 0.08 0.08 0.08 0.09 0.10 0.10 0.11 0.11

方法Ⅳ

方法Ⅰ

方法Ⅱ

方法Ⅲ

(3) 0.2p =

n 100 500 1000 1万 15万 125万 1025万 1億25万 2億5025万

6.8E-16 1.0E-15 1.8E-15 5.4E-15 9.9E-14 7.3E-13 5.7E-12 5.2E-11 5.0E-080.08 0.31 0.47 3.13 16.25 61.87 92.50 107.34 107.66

1.8E-14 1.1E-13 2.2E-13 2.1E-12 4.1E-11 3.7E-10 2.2E-09 1.1E-08 8.0E-080.06 0.16 0.47 3.13 15.78 62.34 92.19 107.34 107.97

4.8E-08 2.6E-11 7.8E-13 6.9E-12 2.6E-10 2.4E-09 4.4E-08 4.3E-07 1.5E-060.07 0.08 0.08 0.09 0.10 0.11 0.12 0.13 0.13

4.8E-08 2.6E-11 8.9E-13 8.5E-12 2.8E-10 2.3E-09 4.5E-08 4.4E-07 1.4E-060.07 0.07 0.08 0.08 0.09 0.10 0.10 0.11 0.12

方法Ⅳ

方法Ⅰ

方法Ⅱ

方法Ⅲ

19

Page 21: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(4) 0.3p =

n 100 500 1000 1万 15万 125万 1025万 1億25万 2億5025万

8.4E-16 2.1E-15 3.5E-15 2.5E-14 5.3E-13 4.4E-12 2.5E-11 4.8E-10 5.0E-080.07 0.31 0.32 3.13 15.94 62.19 92.66 107.35 107.35

1.9E-14 1.1E-13 2.3E-13 2.0E-12 2.5E-11 2.3E-10 2.8E-09 1.9E-08 3.8E-080.06 0.32 0.47 3.13 16.09 62.34 92.65 108.75 107.19

4.8E-08 2.6E-11 7.8E-13 6.9E-12 2.6E-10 2.4E-09 4.4E-08 4.3E-07 1.5E-060.07 0.08 0.08 0.09 0.10 0.11 0.12 0.13 0.13

4.8E-08 2.6E-11 1.0E-12 7.3E-12 2.5E-10 2.5E-09 4.3E-08 4.3E-07 1.5E-060.07 0.07 0.08 0.08 0.09 0.10 0.10 0.11 0.11

方法Ⅳ

方法Ⅰ

方法Ⅱ

方法Ⅲ

(5) 0.4p =

n 100 500 1000 1万 15万 125万 1025万 1億25万 2億5025万

8.3E-16 2.0E-15 2.1E-15 1.8E-14 2.6E-13 3.2E-12 1.8E-11 2.6E-10 5.0E-080.06 0.16 0.47 3.13 16.09 61.56 91.87 107.18 106.87

1.3E-14 5.3E-14 1.1E-13 8.4E-13 1.4E-11 1.2E-10 1.0E-09 1.3E-08 5.3E-080.06 0.32 0.47 3.13 15.94 61.41 95.47 125.31 107.35

4.8E-08 2.6E-11 7.8E-13 6.9E-12 2.6E-10 2.4E-09 4.4E-08 4.3E-07 1.5E-060.07 0.08 0.08 0.09 0.10 0.11 0.12 0.13 0.13

4.8E-08 2.6E-11 8.0E-13 6.7E-12 2.6E-10 2.5E-09 4.4E-08 4.4E-07 1.5E-060.07 0.07 0.08 0.08 0.09 0.10 0.10 0.11 0.11

方法Ⅳ

方法Ⅰ

方法Ⅱ

方法Ⅲ

(6) 0.5p =

n 100 500 1000 1万 15万 125万 1025万 1億25万 2億5025万

6.4E-16 1.2E-15 1.4E-15 2.8E-15 8.0E-14 1.3E-13 6.0E-13 5.5E-12 5.0E-080.06 0.32 0.47 3.13 16.09 61.56 92.19 107.50 107.50

2.7E-15 2.1E-15 5.0E-15 3.0E-13 2.9E-13 2.6E-11 1.9E-10 1.7E-09 3.7E-080.06 0.31 0.32 3.13 15.78 62.34 92.34 107.50 107.35

4.8E-08 2.6E-11 7.8E-13 6.9E-12 2.6E-10 2.4E-09 4.4E-08 4.3E-07 1.5E-060.07 0.07 0.07 0.08 0.09 0.10 0.10 0.11 0.11

4.8E-08 2.6E-11 7.7E-13 6.6E-12 2.6E-10 2.4E-09 4.4E-08 4.4E-07 1.5E-060.07 0.07 0.08 0.08 0.09 0.10 0.10 0.11 0.11

方法Ⅳ

方法Ⅰ

方法Ⅱ

方法Ⅲ

(7) 単項確率 の計算値の相対誤差の絶

対値と最大計算時間.

6( /10; , ) ( 10 ,0.1,0.2,...,0.5, 1, 2,...,9)b kn n p p k−= =

n 100 500 1000 1万 15万 125万 1025万 1億25万 2億5025万

方法Ⅰ 3.54E-15 1.62E-14 3.50E-14 4.10E-13 6.69E-12 5.26E-11 4.18E-10 4.16E-09 5.72E-08

0.08 0.32 0.47 3.43 16.25 62.66 93.28 107.50 107.66

方法Ⅱ 7.34E-14 4.69E-13 9.35E-13 5.99E-12 1.31E-10 9.05E-10 3.07E-09 6.28E-08 1.82E-07

0.06 0.32 0.47 3.13 16.10 62.34 95.47 125.31 107.97

方法Ⅲ 4.76E-08 2.56E-11 8.06E-13 7.33E-12 2.68E-10 2.39E-09 4.44E-08 4.37E-07 1.46E-06

0.08 0.16 0.16 0.16 0.16 0.16 0.16 0.16 0.16

方法Ⅳ 4.76E-08 2.57E-11 1.08E-12 1.29E-11 2.99E-10 2.52E-09 4.57E-08 4.52E-07 1.50E-06

0.07 0.16 0.16 0.16 0.16 0.16 0.16 0.16 0.16 上の表から方法ⅠからⅣの良さ具合を比べてみよう.2項係数の直接計算を採用してい

る方法ⅠとⅡについては,相対誤差および計算時間の両方から判断して方法Ⅰが優れてい

る.同様に,2項係数の近似計算を採用している方法ⅢとⅣについて,相対誤差および計

算時間の両方から判断して優劣がつけがたい.ここでは,処理できる数の範囲の広さから

方法Ⅲを採用する.したがって方法ⅠとⅢの比較となる.相対誤差だけの観点から判断す

ると,2億 5千万までは方法Ⅰが良い.

20

Page 22: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 4.2. モグラ算術による2項確率関数の計算値の相対誤差の絶対値と計算時間.

下記の表の各セルにおいて上段は最大相対誤差,下段は最大計算時間(単位ミリ秒)を表す.空白

のセルがあるのは,方法Ⅰで使用するデータセットが 5億以下の にしか対応していないため計算が

不可能であるという理由による.

n

n 3億 4億 5億 10億 20億 50億 100億 200億 500億6.2E-02 5.7E-02 4.8E-02 3.4E-02 2.2E-02 1.4E-02 9.7E-03 6.8E-03 4.3E-03

0.18 0.21 0.25 0.13 0.13 0.14 0.14 0.14 0.156.2E-02 5.7E-02 4.8E-02 3.4E-02 2.2E-02 1.4E-02 9.7E-03 6.8E-03 4.3E-03

0.13 0.12 0.13 0.13 0.13 0.14 0.14 0.14 0.15方法Ⅰ 1.4E-04 1.2E-04 1.1E-04 8.0E-05 5.5E-05 4.8E-05 6.0E-05 8.7E-05 3.3E-04

5.33 6.15 6.88 0.15 0.15 0.15 0.16 0.16 0.16方法Ⅲ 1.4E-04 1.3E-04 1.1E-04 8.0E-05 5.5E-05 4.8E-05 6.0E-05 8.7E-05 3.3E-04

0.14 0.14 0.15 0.15 0.15 0.15 0.16 0.16 0.16方法Ⅰ 8.1E-05 7.0E-05 6.3E-05 4.5E-05 3.3E-05 3.7E-05 5.9E-05 9.0E-05 2.9E-04

7.10 8.20 9.15 0.15 0.15 0.15 0.16 0.16 0.16方法Ⅲ 8.1E-05 7.1E-05 6.4E-05 4.5E-05 3.3E-05 3.7E-05 5.9E-05 9.0E-05 2.9E-04

0.14 0.14 0.15 0.15 0.15 0.15 0.16 0.16 0.16方法Ⅰ 4.7E-05 4.1E-05 3.7E-05 2.6E-05 2.5E-05 3.5E-05 3.8E-05 9.1E-05 2.1E-04

8.12 9.37 10.47 0.15 0.15 0.15 0.16 0.16 0.17方法Ⅲ 4.8E-05 4.2E-05 3.8E-05 2.6E-05 2.5E-05 3.5E-05 3.8E-05 9.1E-05 2.1E-04

0.14 0.14 0.14 0.15 0.15 0.15 0.16 0.16 0.17方法Ⅰ 2.2E-05 1.9E-05 1.7E-05 1.4E-05 1.1E-05 1.3E-05 4.0E-05 8.2E-05 2.7E-04

8.68 10.01 11.19 0.15 0.15 0.15 0.16 0.16 0.17方法Ⅲ 2.2E-05 2.0E-05 1.9E-05 1.4E-05 1.1E-05 1.3E-05 4.0E-05 8.2E-05 2.7E-04

0.15 0.15 0.15 0.15 0.15 0.15 0.16 0.16 0.17方法Ⅰ 5.2E-08 5.3E-08 5.5E-08 2.4E-06 5.0E-06 1.5E-05 3.5E-05 6.7E-05 3.9E-04

8.84 10.21 11.45 0.13 0.14 0.14 0.14 0.15 0.15方法Ⅲ 1.0E-06 7.2E-07 2.7E-06 2.4E-06 5.0E-06 1.5E-05 3.5E-05 6.7E-05 3.9E-04

0.13 0.13 0.13 0.13 0.14 0.14 0.14 0.15 0.15

方法Ⅰ

方法Ⅲ

p=0.1

p=0.2

p=0.3

p=0.4

p=0.5

610p −=

さらに大きな については次の実験をおこなう. n

数値実験 4.2. が 2 億 5 千万より大きい場合には Maple による の計算値(真

値)が求められないため,Prohorov の近似公式(例えば,Johnson et al.(1992,pp.115))

n ( ; , )b x n p

21 1 1 ( )( ; , ) exp22x npb x n pnpqnpq π

⎛ ⎞−≈ −⎜ ⎟

⎝ ⎠

を Maple で計算した値を真値として用いる.pが ,0.1,0.2,0.3,0.4,0.5 の場合と

が 3億,4 億,5 億,10 億,20 億,50 億,100 億,200 億,500 億の場合を組み合わせたそれぞれ

の場合において,

610− n

max{0,[ 0.5]}z npq npα= + −x に対して,単項確率の値 を

計算した.ここに,[* はガウス記号,

( ; , )b x n p

] zα は標準正規分布の下側100α %点である.本実

験では,pと の各組み合わせごとに,n α =0.01, 0.025, 0.05, 0.3, 0.5, 0.7, 0.9, 0.95,

0.975, 0.99計11通りを考える.例えばα =0.05のとき zα =-1.644853626951472とする.

21

Page 23: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

計算時間は,各組 に対して同じ計算を 10000 回繰り返してその平均をとったもので

ある.

( , )n p

数値実験 4.2 の結果. 各組 に対し,11 個の単項確率値が算出される.それぞれの

値の相対誤差と計算時間を求め,その中の最大値を表したものが表 4.2 である.表 4.2

より,nが 5 億以下のとき,

( , )n p

pが ,0.1,0.2,0.3,0.4 のいずれの場合でも,方法Ⅰと

方法Ⅲの相対誤差には大差がなく,計算時間では方法Ⅲの方が短い.ただし, の

ときのみ方法Ⅰの方が相対誤差が小さいことがわかる.計算時間は方法Ⅰの方が大きい

が,nが 5 億のときでも最大 12 ミリ秒以内である.nが 5 億より大きいときは,方法Ⅰ

ではデータセットが用意されていないため,計算ができないので,表中の対応する箇所

は空白となっている.この場合は方法Ⅲのみが使用可能であるが,nが 500 億のとき,p

が10 ,0.1,0.2,0.3,0.4,0.5 のすべての場合を通して

610−

0.5p =

6− 310− 程度の相対誤差が得られる

ことがわかる.

以上より,nが 5億までは相対誤差と計算時間から判断して方法Ⅰの方が良い.nが 5

億より大きいときは,データセットがないという点や計算時間がかかる点より方法Ⅲが

良い. 以上より,精度を主に,計算時間を従にした観点から判断すると,nが 5億までは方法Ⅰ

を,nが 5億より大きいときは方法Ⅲを採用するのが良い.方法Ⅰ,方法Ⅲをそれぞれ2項

確率関数の計算における DS 法,LG 法とよぶことにする.一方,シミュレーションなどのよ

うに同じ計算を何十万回も繰り返し行うときには計算時間を主に,精度を従にした観点か

ら判断した方がよい.この観点から判断すると,nが千までは DS 法を,nが千より大きい

ときは LG 法を採用するのが良い.以上の議論より、モグラたたき法を用いた2項確率関数

の計算アルゴリズムとして次を提案する.

数十~数百種類の2項確率関数の値を求めるときの計算アルゴリズム:

nが 5 億以下のときは DS 法で2項確率関数の値を計算する;

nが 5億より大きいときは LG 法で2項確率関数の値を計算する.

数千~数百万種類の2項確率関数の値を求めるときの計算アルゴリズム:

nが千以下のときは DS 法で2項確率関数の値を計算する;

nが千より大きいときは LG 法で2項確率関数の値を計算する.

22

Page 24: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

5. 2項確率の計算アルゴリズム

本節では2項分布関数

(5.1) ∞<<∞−≤= ttXPpntB ),(),;(

の xt = での値 )(以下2項確率という)を算出するアルゴリズムに焦点を当てる.

ただし,確率変数 は2項分布 に従うものとし,

,;( pnxBX B( , )n p xは nx ≤≤0 を満たす整数とす

る.ある程度大きな に対して2項確率を求める計算アルゴリズムは 1940 年代から論じら

れてきた.2項確率は数式表現が簡単であるが,計算アルゴリズムの実行に関しては我々

の能力を超えた計算能力が必要になるので,当然,コンピュータと密接な関係がある.

n

1945 年に真空管型コンピュータ ENIAC が J.P.Eckert と J.W.Mauchley(ペンシルバニア

大学)によって作られた.4 年後の 1949 年には,プログラム内蔵方式のノイマン型コンピ

ュータ EDSAC が M.V.Wilks(ケンブリッジ大学)によって作られた.これ以後,集積回路

の急速な発展が基礎となってコンピュータは猛烈な発展を遂げつつ現在に至っている.

1950 年代はトランジスタが発明され,コアメモリが使用された.また,1960 年代は小規模

集積回路(SSI)が発明され,コンピュータアーキテクチャの概念,マルチプログラミング,

タイムシェアリングなどが考案された. コンピュータの発達と共に,科学技術用のコンパ

イ ラ ー 言 語 で あ る FORTRAN(1954) , ALGOL(1957) , LISP(1959), PL/1(1964),

UNIX(1969),PASCAL(1971),C(1971)などが次々と開発されてきた.

こういった計算環境の下で,1950 年代からコンピュータによる2項確率の計算が行われ,

2 項 確 率 表 と し て 公 表 さ れ る よ う に な っ た ( 例 え ば , Robertson(1960),

Weintraub(1963),Stuart and Ord(1994,p.166)).当時のコンピュータは計算能力が低かっ

たので,高々1000くらいまでの標本の大きさ と 程度までの小さな のいくつかの

組 に対してのみ計算された2項確率表である.これでは一般的な に対する2項

確率の計算にはあまり有効ではない.一方,正規分布やポアソン分布の確率計算に対して

は既に豊富な計算法が確立されていた.従って,必然的に2項確率の計算法として,正規

近似,ポアソン近似,グラム-シャリエ近似,その他多くの近似法が利用されるようになっ

た.近似によって2項確率を計算する場合,あまり大きくない nに対して近似精度をよくす

るための改良,工夫が多くの研究者によってなされてきた(例えば,Raff(1956),

Bolshev,Gladkov and Shchehlova(1961),D’Ortenzio(1965),Pratt(1968),Peizer and

Pratt(1968),Molenaar(1973),Ghosh(1980)).これら諸近似式について理論的な解説は,

例えば Johnson,Kotz and Kemp(1997),Patel and Read(1996),竹内・藤野(1981)に詳細に

述べられている.

n 1000/1 p

),( pn ),( pn

現在,Maple,Mathematica をはじめ,有料,無料を含めて非常に多くの確率計算ソフト

ウェアがある.しかしながら,例えば,非常に大きな や非常に小さな に対して2項確率n p

( ; , )B x n p の計算を行おうとすると,可能なソフトウェアは高価なソフトウェア(例えば,

Maple,Mathematica 等)しかない.しかし,高価なソフトウェアといえども計算可能な やn

23

Page 25: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

pには制約がある(付録 2を参照).一般ユーザにとって,確率値を求めるために,この種

の高価なソフトウェアに頼るのは経済的に困難であろう.既存のフリーまたは安価なソフ

トウェア(例えば,Borland C++,Xcode,GNUC,Visual C++,Code Warrior 等)で手軽に

確率値を計算する環境を構築する必要性がある(岩崎(2001),松尾(2000)).本節の目的は,

通常の C言語と前節で求めた確率関数の値の計算アルゴリズムを利用して,非常に大きな nや非常に小さな を含む広い範囲 に対して2項確率p ),( pn ( ; , )B x n p を算出するアルゴリズ

ムを提案することである.ここで提案するアルゴリズムは高価なソフトウェアでも計算で

きないような についても計算可能である. n2項確率は単項確率の和で表されている.この和の計算の実行過程においては以下のよ

うな精度または計算時間に関する問題点が考えられる.

(i) 加える順序をどうするか.例えば,情報落ちが生じる可能性がある.

(ii) 大きな回数の四則演算が必要となる.必然的に誤差の伝搬と時間の問題が生じる.

(iii) 非常に大きな に対しては,値の小さい項の和の誤差が生じる.例えば,通常の C

言語では,ある値から小さい数は0 として処理されるかまたはアンダーフローを起

こす.

n

この節では,これらの問題を部分的に回避しながら2項確率 ( ; , )B x n p の値を計算する種々

のアルゴリズムを提案し,それらの良さ具合を比較・検討する.本節を通じて,確率変数

は2項分布 に従うものとする.また,2項確率の値を数十~数百回求める計算を前

提とする.式(5.1)の右辺の和の計算において,

XB( , )n p

xがあまり大きくないときはこの和を直接

計算しても問題はない.しかし,xが非常に大きい場合には,計算する項の数も非常に大き

なものとなる,更に個々の項の値が計算不要な程に小さいものも多く存在する.そこで,xが非常に大きい場合に式(5.1)の右辺の各項のうち値の小さい項の計算を省略することを考

える.計算機による和の計算は倍精度で行うので,その精度は高々15桁ないし16桁である.

この精度の下では,平均 からかなり離れたnp x′に対する ( ; , )B x n p′ は 15 桁の精度の下で

は無視できる.従って, ( )P X L≤ ≤ 1510−および ( )P X R≥ ≤ 1510−

となる整数 ,

( )が決定できれば,x),( pnLL =

),( pnRR = L ≤ R L≤ または R x≤ なる xについては の

項の計算を省略することができる.すなわち,x

( ; , )b x n p

L≤ のとき, ( ; , )B x n p の近似値

として を,R のとき,

ˆ( ; , )B x n p

0 x≤ ( ; , )B x n p の近似値 として1を採用するのである.上

のような左側限界 ,右側限界 を求めるために上側および下側2項確率の評価が必要と

なる.本論では左側限界,右側限界を求める方法として,ここでは,片側2項確率の評価

式である Kambo and Kotz が改良した Uspensky の不等式と Bahadur の不等式を利用した2

種類の方法を考える.どちらの方法がよいかは数値実験の結果を基に議論する.第1の方

法として,改良された Uspensky の不等式を利用した決め方を述べよう.

ˆ( ; , )B x n p

L R

24

Page 26: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

定理 5.1. 確率変数 は2項分布 に従うものとする.次の不等式が成立する. X B( , )n p

(5.2) ( ( )) ≤P X n q c≥ + P X n p c( ( )) ≤ 1510− , 2/10 ≤< p , ≤ −

(5.3) ))~(( cqnXP −≤ ≤ ))~(( cpnXP +≥ ≤ 1510− , 12/1 << p .

ここに

2

1 (180 log 10)960 log 103 9 ( )

npqcn

pqn

=+ +

この定理を証明する前に若干の準備をする.証明において重要な役割を果たすのが拡張さ

れ た Uspensky の 不等 式 で ある . Uspensky の 不 等式 (Uspensky(1937)) の 改 良 は

Okamoto(1958)によりなされ,その不等式を Kambo and Kotz(1966)が更に改良した.

補題 5.1(Kambo and Kotz,1966). 確率変数 は2項分布 に従うものとし,X B( , )n p

npqσ = , npµ = とおく.任意の正数 cに対し,次の不等式が成立する.

(5.4)

2 4

3

1 4( )( ) exp ,2 9nc ncP X nc p

σ⎛ ⎞⎛ ⎞≤ − < − − ≤⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠⎝ ⎠

1/ 2.

(5.5)

2 4

3

1 4( )( ) exp ,2 9nc ncP X nc p

σ⎛ ⎞⎛ ⎞≥ + < − − ≥⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠⎝ ⎠

1/ 2.

次の不等式は2項分布の基本的性質であるが,有用である.

補題 5.2. 確率変数 は2項分布 に従うものとする.任意の実数 tに対し,次の

不等式が成立する.

X B( , )n p

(i) , ;)()( tnXPtXP −≤≤≥ 2/nt ≥ 1/ 2p ≤ .

(ii) , )()( tnXPtXP −≥≤≤ 2/nt ≤ ; . 1/ 2p ≥

証明. , とする. のとき,1/ 2p ≤ 2/nt ≥ nt ≥ 0)( =≥ tXP だから不等式(i)は成立する.

で tが整数のとき,不等式 ntn ≤≤2/(*) )()( tnXPtXP −≤≤≥

が 成 立 す る こ と を 示 そ う . 1/ 2p ≤ だ か ら ./ 1q p ≥ 02 ≤− tn だ か ら ,

),;(/),;( pntnbpntb − = tnpq 2)/( − ≤ 1.従って, ),;(),;( pntnbpntb −≤ . これより,

25

Page 27: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

ntn ≤≤2/ で tが整数のとき,不等式(*)が成立することが示された.次に, で

が整数でないとき,不等式(i)が成立することを示す.

ntn ≤≤2/t }1][{}{ +≥=≥ tXtX より,

.)( tXP ≥ = )1][(X +≥ tP 1][2/ +≤ tn と不等式(*)より, (**) )1][()( −−≤≥ tnPtXP . 一方, だから,ttt ≤≤− ][1 tntntn −≤−−≤−− 1][1 .これより, )1][( −−≤ tnXP

.従って,(**)より,≤ )( tnXP −≤ )()( tnPtXP −≤≥ .以上により, のとき,

なる任意の に対して,不等式

1/ 2p ≤2/nt ≥ t )()( tnPtXP −≤≥ が成立することが示された.

不等式(ii)は, XnY −= に不等式(i)を適用することにより,導かれる.

以上の準備のもとで定理 5.1 の証明をする.

定理 5.1 の証明: 2/10 ≤< p とする.不等式 の両辺

の対数をとり, とおいて変形すると, tの2次不等式

1542 10)9/4)2/(exp( −≤−− ncpqnc

2ct =

(5.6) 2 270log108 9pqt t pq

n+ − ≥ 0

が得られる.この不等式を条件 の下で cについて解く.2次方程式 0>c

2 270log108 9pqt t pqn

+ − = 0

の相異なる2つの解を とすると 1 2 1 2, ( )t t t t<

21

3 960 log103 9 ( )16

t ppq n

⎛ ⎞− ×= + +⎜ ⎟⎜ ⎟

⎝ ⎠q 0< ,

22

3 960 log103 9 ( )16

t ppq n

⎛ ⎞×= − + +⎜ ⎟⎜ ⎟

⎝ ⎠q 0> .

となる.解と係数の関係 より, 11 2 (8 ) 270 log10t t n −= − ×

2t 2

16 1 270 log103 8960log103 9 ( )

pqn

pqn

×= ×

⎛ ⎞+ +⎜ ⎟

⎝ ⎠

26

Page 28: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

2

(180log10)960log103 9 ( )

pq

n pn

=⎛ ⎞

+ +⎜ ⎟⎝ ⎠

q.

0t > より,不等式(5.6)の解は

2

(180log10)960log103 9 ( )

pqtn p

n

>⎛ ⎞

+ +⎜ ⎟⎝ ⎠

q.

一方, より,条件 の下での不等式(5.6)の解は 2t c= 0>c

2

1 (180log10)960log103 9 ( )

npqcn

pqn

≥+ +

上の不等式の右辺を とおく.即ち, c

2

1 (180log10)960log103 9 ( )

npqcn

pqn

=+ +

補題 5.1 の(i)より, .一方,1510)~( −≤−≥ cnnpXP 0 1p / 2< ≤ より1/ .これ

2 1q≤ <

0~ >c より, ( ) /n q c n 2+ > .補題 5.2 の(i)より, ( ( ))P X n q c≥ + ≤ ( (P X n p c≤ − )) .以上により,不等式(5.3)が証明された. 不等式(5.3)は, XnY −= に不等式(5.3)を適用

することにより,証明される.

(注 5.1) 上の定理の証明における2

23 960 log103 9 ( )

16t p

pq n⎛ ⎞×

= − + +⎜ ⎟⎜ ⎟⎝ ⎠

q の値をコ

ンピュータで計算するとき,nが大きければ,上式の の部分が情報落ち

し,根号の中が桁落ちする.これを避けるために,上の証明における別表現

1 2960( ) log10n pq−

⎟⎟⎠

⎞⎜⎜⎝

⎛++

=2

2)(10log96093

)10log180(

pqn

n

pqt

を使用する方法はよく知られている. n が大きいとき, ≈2)~( cn )10log180(

)93/( +npq = npq)10log30( より, 30log10 npq≈nc である.これは Okamoto(1958)

が改良した Uspensky の不等式を用いて,上と同様な議論により,導き出したものと一致す

27

Page 29: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

る.

定理 5.1 より,左側限界,右側限界の候補として,それぞれ

( ),0 1/( , )

( ),1/ 2 1U

n p c pL n p

n q c p− < ≤⎧

= ⎨ − < <⎩

2,,

,1.

( ),0 1/ 2

( , )( ),1/ 2U

n q c pR n p

n p c p+ < ≤⎧

= ⎨ + < <⎩

を採用することができる.

2項確率評価に関する不等式として改良された Uspensky の不等式を上で述べたが,これ

以外の評価として Bahadur の不等式(Bahadur(1960))がよく知られている.Bahadur の不等

式に似た不等式が Cormen et al.(1990)でも与えられている.第2の方法として,Bahadur

の不等式を利用する決め方を述べよう.

補題 5.3(Bahadur,1960). 確率変数 は2項分布B( に従うものとする.次の不等式

が成立する.

X , )n p

(i) np のとき, x n< <

(5.7) ( 1)( ) ( ; ,

( 1) ( 1)x qP X x b x n p

x n p+

≥ <+ − +

).

(ii) 0 x np< < のとき,

(5.8) ( 1 )( ) ( ; ,( 1)n x pP X x b x n pn p x+ −

≤ <+ −

).

Bahadur の不等式(5.7)と(5.8)を用いて左側限界,右側限界の候補を求める場合,改良され

た Uspensky の不等式を用いる方法のように明確な形としてとき,左側限界,右側限界を決

定することができない.ここでは,逐次2分法を用いた方法をのべる.最初に,左側限界

の候補を求めよう.

( 1 )( ) ( ; , )( 1)n x pg x b x n pn p x+ −

=+ −

, 0,1, ,x n=

とおく.不等式 は明確な形で解けないので逐次2分法を用いる. のと

き, とする. かつ

15( ) 10g x −≤ 2np <

( , ) 1BL n p = − 2np ≥ 15([ ] 1) 10g np −− ≤ のとき, とす

る.以下, と

( , )BL n p = [ ] 1np −

2np ≥ 15([ ] 1) 10g np −− > を仮定する.逐次2分法を始めるときの初期値を

とおき,計算ステップは次のように実行する. 0 0( , ) (0,[ ] 1)u v np= −

【ステップ0】 ならば,15

0( ) 10g u −> ( , )Bl n p = 1− とする.15

0( ) 10g u −≤ のとき,

1 0 0[( ) / 2]s u v= + とおく.15

1( ) 10g s −≤ ならば, 1 1( , )u v = 1 0( , )s v とおく.

ならば,15

1( ) 10g s −> 1 1( , )u v = 0 1( , )u s とおく.

28

Page 30: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

【ステップ1】 ならば,1j jv u− ≤ ( , )Bl n p = ju として終了する. 1j jv u− > ならば

ステップ2へとぶ.

【ステップ2】 とおく.1 [( ) / 2]j j js u v+ = + 151( ) 10jg s −+ ≤ ならば, 1 1( , ) =j ju v+ +

)1( ,j js v+ とおく.15

1( ) 10jg s −+ > ならば, 1 1( , )j ju v+ + = 1( , )j ju s + とおく.

ステップ1にとぶ.

上の逐次2分法(ステップ0からステップ2)で得られた を とする.以上

まとめると,左側限界の候補

( , )Bl n p ( , )BL n p

15

15

1, 1,( , ) [ ] 1, 2, ([ ] 1) 10 ,

( , ), 2, ([ ] 1) 10B

B

npL n p np np g np

l n p np g np

− ≤⎧⎪= − ≥ − ≤⎨⎪ ≥ − >⎩

が得られる.次に,右側限界の候補を求めよう.

( 1)( ) ( ; , )( 1) ( 1)

x qg x b x n px n p

+=

+ − +, 0,1, ,x n=

とする. のとき,1 [ ]n n− ≤ p ( , )BR n p = 1n + とする.[ ] 1np n< − かつ15([ ] 1) 10g np −+ ≤

のとき,右側限界を[ ] とする.以下,[ ]1np + 2np n≤ − と を仮定する.

逐次2分法を始めるときの初期値を

15([ ] 1) 10g np −+ >

0 0( , ) ([ ] 1, )u v np n= + とおき,計算ステップは次のよ

うに実行する.

【ステップ0】 ならば,15

0( ) 10g v −> ( , )Br n p = 1n + とする. のとき, 150( ) 10g v −≤

1 0 0[( ) / 2]s u v= + とおく.15

1( ) 10g s −≤ ならば, 1 1( , )u v = 0 1( , )u s とおく.

ならば,15

1( ) 10g s −> 1 1( , )u v = 1 0( , )s v とおく.

【ステップ1】 ならば,1j jv u− ≤ ( , )Br n p = jv として終了する. 1j jv u− > ならば

ステップ2へとぶ.

【ステップ2】 とおく.1 [( ) / 2]j j js u v+ = + 151( ) 10jg s −+ ≤ ならば, 1 1( , ) =j ju v+ +

1( , )j ju s + とおく.15

1( ) 10jg s −+ > ならば, 1 1( , )j ju v+ + = 1( ,j js v+ ) とおく.

ステップ1にとぶ.

上の逐次2分法(ステップ0からステップ2)で得られた を とする.以( , )Br n p ( , )BR n p

29

Page 31: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

上まとめると,右側限界の候補

15

15

1, [ ] 1,( , ) [ ] 1, [ ] 2, ([ ] 1) 10 ,

( , ), [ ] 2, ([ ] 1) 10 .B

B

n nR n p np n np g np

r n p n np g np

+ ≤⎧⎪= + ≤ − + ≤⎨⎪ ≤ − + >⎩

np +

が得られる.

限 界 と 限 界 を 用 い た と き , 省 略 さ れ な い 項 の 個 数 を ,

の各場合に対して比較してみよう.左側限界

と右側限界 の値および省略されない項の数とそれらの全体項数に対するパ

ーセントは表 5.1 のようになる.

UU RL , BB RL ,

5 7( , ); 1000,10 ,10 , 0.1,0.2,...,0.9n p n p= =

BU LL , BU RR ,

表 5.1 左側限界 と右側限界,U UL R ,B BL R の数値例.左側限界のセルでは上段,下段がそれぞれ を

表す.右側限界のセルでは上段,下段がそれぞれ を表す.計算すべき項数では上段,下段が

そ れ ぞ れ , を 表 す . パ ー セ ン ト で は 上 段 , 下 段 が そ れ ぞ れ

,10

,U BL L

,U BR R

1U UR L− − 1B BR L− −

100( 1) /( 1)U UR L n− − + 0( 1) /( 1)B BR L n− − + を表す.

30

Page 32: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

左側限界 右側限界計算すべき

項数パーセン

ト21 979 957 95.7%-1 582 582 58.2%

9211 90789 81577 81.6%6640 13735 7094 7.1%

992115 9007885 8015769 80.2%964631 1035743 71111 0.7%

94 906 811 81.1%-1 752 752 75.2%

18948 81052 62103 62.1%15407 24875 9467 9.5%

1989486 8010514 6021027 60.2%1952732 2047549 94816 0.9%

179 821 641 64.1%-1 869 869 86.9%

28795 71205 42409 42.4%24669 35519 10849 10.8%

2987955 7012045 4024089 40.2%2945781 3054407 108625 1.1%

271 729 457 45.7%-1 952 952 95.2%

38712 61288 22575 22.6%34247 45847 11599 11.6%

3987124 6012876 2025751 20.3%3941984 4058110 116125 1.2%

368 632 263 26.3%-1 1001 1001 100.1%

48685 51315 2629 2.6%44080 55920 11839 11.8%

4986858 5013142 26283 0.3%4940740 5059260 118519 1.2%

271 729 457 45.7%48 1001 952 95.2%

38712 61288 22575 22.6%54153 65753 11599 11.6%

3987124 6012876 2025751 20.3%5941890 6058016 116125 1.2%

1000 0.1

10万 0.1

1千万 0.1

1000 0.2

10万 0.2

1千万 0.2

1000 0.3

10万 0.3

1千万 0.3

1000 0.4

10万 0.4

1千万 0.4

1000 0.5

10万 0.5

1千万 0.5

1000 0.6

10万 0.6

1千万 0.6

n p

31

Page 33: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(表 5.1 つづき)

左側限界 右側限界計算すべき

項数パーセン

ト179 821 641 64.1%131 1001 869 86.9%

28795 71205 42409 42.4%64481 75331 10849 10.8%

2987955 7012045 4024089 40.2%6945593 7054219 108625 1.1%

94 906 811 81.1%248 1001 752 75.2%

18948 81052 62103 62.1%75125 84593 9467 9.5%

1989486 8010514 6021027 60.2%7952451 8047268 94816 0.9%

21 979 957 95.7%418 1001 582 58.2%

9211 90789 81577 81.6%86265 93360 7094 7.1%

992115 9007885 8015769 80.2%8964257 9035369 71111 0.7%

1000 0.7

10万 0.7

1千万 0.7

1000 0.8

10万 0.8

1千万 0.8

1千万 0.9

1000 0.9

10万 0.9

n p

32

Page 34: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 5.1 では計算すべき xの全体に対して,省略できる xの集合がどのような位置を占めるの

かがわかりにくいのでこれを図示化してみる. (1) で, が 1000,10 万,1 千万のときの表 5.1 の部分表 0.1p = n

左側限界 右側限界計算すべき

項数パーセン

ト21 979 957 95.7%-1 582 582 58.2%

9211 90789 81577 81.6%6640 13735 7094 7.1%

992115 9007885 8015769 80.2%964631 1035743 71111 0.7%

1千万 0.1

1000 0.1

10万 0.1

n p

を次の様に図視化する.

p=0.1 のときの計算すべき範囲

図 5.1 のときの計算すべき範囲 ,( ,0.1p = ( , )U UL R )B BL R の位置関係を全範囲 [0 に対する相対的

な幅を持つ帯グラフで図示した.

, ]n

n = 1000 ( , )L RU U

B B

)U U

B B

)U U

B B

( , )L R

n = 10 万 ( , L R

( , )L R

n = 1 千万 ( , L R

( , )L R

計算省略できる範囲 計算すべき範囲

0 n

計算省略できる範囲

33

Page 35: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(2) で, nが 1000,10 万,1 千万のときの表 5.1 の部分表 0.5p =

左側限界 右側限界計算すべき

項数パーセン

ト368 632 263 26.3%-1 1001 1001 100.1%

48685 51315 2629 2.6%44080 55920 11839 11.8%

4986858 5013142 26283 0.3%4940740 5059260 118519 1.2%

1000 0.5

10万 0.5

1千万 0.5

n p

を次の様に図視化する.

図 5.2 のときの計算すべき範囲 ( , ,0.5p = )U UL R ( , )B BL R の位置関係を全範囲 [0 に対する相対

的な幅を持つ帯グラフで図示した.

, ]n

p=0.5 のときの計算すべき範囲

0 n

計算省略できる範囲 計算すべき範囲 計算省略できる範囲

n = 1000 ( , )L RU U

B B

)U U

B B

)U U

B B

( , )L R

n = 10 万 ( ,L R

( , )L R

n = 1 千万 ( , L R

( , )L R

34

Page 36: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(3) で, nが 1000,10 万,1 千万のときの表 5.1 の部分表 0.8p =

左側限界 右側限界計算すべき

項数パーセン

ト94 906 811 81.1%

248 1001 752 75.2%18948 81052 62103 62.1%75125 84593 9467 9.5%

1989486 8010514 6021027 60.2%7952451 8047268 94816 0.9%

10万 0.8

1千万 0.8

1000 0.8

n p

を次の様に図視化する.

図 5.3 のときの計算すべき範囲 ( , ,0.8p = )U UL R ( , )B BL R の位置関係を全範囲 [0 に対する相

対的な幅を持つ帯グラフで図示した.

, ]n

表 5.1 より, pが小さいときは B UL L< , B UR R< となり, pが大きいときは ,U BL L<

U BR R< となることがわかる.また,計算すべき項数を比べると, を用いた方が少

ない項数となっている.図 5.1 に示すように,0から まで(0から まで)の項数,

BB RL ,

UL BL 1UL +

から まで( から まで)の項数,1UR − 1BL + 1BR − UR から まで(n BR から まで)の項数

の に対する相対的な大きさを帯グラフで表すと,そのことはより顕著に見て取れる.ただ

し,このことから を用いた方が を用いた方より良いと判断するのは早計であ

る.例えば,統計的検定における下側検定においては下側100

n

n

BB RL , UU RL ,

α %確率を計算する場合が

多々ある.表 5.2 に示すのは, 0.1p = から 0.9p = までのそれぞれの場合において,

p=0.8 のときの計算すべき範囲

0% 20% 40% 60% 80% 100%

計算省略できる範囲 計算すべき範囲 計算省略できる範囲

n = 1000 ( , )U U

B B

)U U

B B

)U U

B B

L R

( , )L R

n = 10 万 ( , L R

( , )L R

n = 1 千万 ( , L R

( , )L R

35

Page 37: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

[ 0x u npq np= + − .5] に対して ( ; , )B x n p を算出する際に,限界 および限界

を用いた場合の計算すべき範囲を求めたものである.ただし,[* はガウス記号,zUU RL ,

BB RL , ] α

は標準正規分布の下側100α %点を表す. 0.05α = , zα = 1.644853626951472− とする.

表 5.2 限界 を用いた場合と限界,U UL R ,B BL R を用いた場合の実質的に計算すべき範囲と計算

すべき項数.各セルで上段と下段に分かれて表示のある場合は,Lがそれぞれ を

表す.ここでは

,U BL L

1x R< − となっている.

x n p 計算すべき範囲

1L + x計算すべき項数

x L−

83 1000 0.1 22

0

83

83

62

84

9843 510 0.1 9212

6641

9843

9843

632

3203

998439 710 0.1 992116

964632

998439

998439

6324

33808

178 1000 0.2 95

0

178

178

84

179

19791 510 0.2 18949

15408

19791

19791

843

4384

1997918 710 0.2 1989487

1952733

1997918

1997918

8432

45186

275 1000 0.3 180

0

275

275

96

276

29761 510 0.3 28796

24670

29761

29761

966

5092

2997615 710 0.3 2987956

2945782

2997615

2997615

9660

51834

374 1000 0.4 272

0

374

374

103

375

39744 510 0.4 38713

34248

39744

39744

1032

5497

3997451 710 0.4 3987125

3941985

3997451

3997451

10327

55467

473 1000 0.5 369

0

473

473

105

474

36

Page 38: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

49739 510 0.5 48686

44081

49739

49739

1054

5659

4997398 710 0.5 4986859

4940741

4997398

4997398

10540

56658

574 1000 0.6 272

49

574

574

303

526

59744 510 0.6 38713

54154

59744

59744

21032

5591

5997451 710 0.6 3987125

5941891

5997451

5997451

2010327

55561

675 1000 0.7 180

132

675

675

496

544

69761 510 0.7 28796

64482

69761

69761

40966

5280

6997615 710 0.7 2987956

6945594

6997615

6997615

4009660

52022

778 1000 0.8 95

249

778

778

684

530

79791 510 0.8 18949

75126

79791

79791

60843

4666

7997918 710 0.8 1989487

7952452

7997918

7997918

6008432

45467

883 1000 0.9 22

419

883

883

862

465

89843 510 0.9 9212

86266

89843

89843

80632

3578

8998439 710 0.9 992116

8964258

8998439

8998439

8006324

34182

表 5.2 より,pが小さいときは を用いた場合の方が省略可能な項数が多く,UU RL , pが

大きいときは を用いた場合の方が省略可能な項数が多くなることがわかる.したが

って,この時点では, あるいは のどちらが優れているとも言えない.下側確

率のみならず上側確率の計算においても同様な場合が起こりうる.さらに,2つの方法の

計算時間の違いも考慮する必要がある.よって,2つの不等式のいずれが優っているかを

一概には決めることはこの段階ではできない.別の基準による数値実験については第6節

で詳細に議論する.

BB RL ,

UU RL , BB RL ,

37

Page 39: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

2つの不等式の比較については,この節では結論は出せないが,何らかの方法で左側限

界 と右側限界( , )L L n p= ( , )R R n p= が決定されたとしよう,決定された左側限界と右側

限界を用いて,2項確率 ( ; , )B x n p の近似値 ˆ( ; , )B x n p を計算することになる.ここでは,

ˆ( ; , )B x n p を計算するために2種類のアルゴリズムを述べよう.

アルゴリズムⅠ: 和を確率関数の値の小さい方から順に加算を実行していく方法である.

まず最初に,0 [( 1) ]x n p≤ ≤ + の場合について ( ; , )B x n p の近似値 ˆ( ; , )B x n p の計算方法を

述べよう. とおく.次の手順で行う. [( 1) ]m n p= +

(a) 0 x m≤ ≤ の場合:

(a1) 0 x L≤ ≤ の場合: ˆ( ; , )B x n p = 0 とする.

(a2) L x m< ≤ かつ x L− ≤ n x− の場合:

1

in i pi q

α − += , 1, ,i n=

とおく.昇順の漸化式

(5.9) ( ; , )b i n p = ( 1; , )i b i n pα × − , 1,2, ,i n=

を利用して計算する.不等式

1 2 1mα α α −> > > > mα ≥ 1 > 1 2 1m m n nα α α+ + −> > > >αˆ( ; , )

の値を B x n pが成立する.

ˆ( ; , )B x n p = ),;1( pnLb + ( )2 2 3 2 31 L L L L L xα α α α α α+ + + + ++ + + +

で定義する.上式の右辺の第1因子である2項確率関数 ),;1( pnLb + の計算は第4節で採

用されたアルゴリズムにより計算する. 上式の右辺の第2因子の和は左から順に加算を

行う.このとき,モグラたたき法による和を求める漸化式は次のようになる.

(5.10) iw = ( ( ( ), ( )A n I n≺ ( ( ), ( )A i I i≺ 1,0≺ ) ) ( ), ( )A i I i≺ ) , ⊗ w ⊗ 1i−w 1i i− i= ⊕z z w , 2, ,i L x= +

ただし, ,1L+z = 1L+w = 1,0≺ w = ( ), ( )A p I p≺ ( ), ( )A q I q≺

)

である.

を( 1; ,x L n p⊗ +z b ˆ( ; , )B x n p のモグラ表現として採用する. ならば,(5.10)は

少し簡単な形になる.

710n ≤

11 1( ), ( )i i

n i n iA Ii i −

− + − += ⊗w w≺ ⊗w

i

, . 1i i−= ⊕z z w 2, ,i L x= +

(a3) L x m< ≤ かつn x− < x L− の場合:右側限界Rを用いる.

38

Page 40: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(a31) m < 1R − の場合:

1ii qn i p

β +=

−, 0,1, , 1i n= −

とおく.昇順の漸化式(5.9)と降順の漸化式

(5.11) ( ; , )b i n p = ( 1; , )i b i n pβ × + , 0,1, , 1i n= − ,

を利用して計算する.不等式

0 1 2 1m mβ β β − −< < < < β ≤ 1 < 2 1m n nβ β β− −< < <

が成立することに注意しよう.

1 2 2 3 2( 1; , )(1 x x x x x mB b x n p 3 1)α α α α α α+ + + + + −= + + + + + ,

2 2 2 3 2( 1; , )(1 R R R R RB b R n p 3 )mβ β β β β β− − − − −= − + + + +

を計算する. ˆ( ; , )B x n p の値を ˆ( ; , )B x n p = 1 − ( 1B + 2B )

で定義する.

(a32) x < 1R − ≤ mの場合: ˆ( ; , )B x n p の値を

ˆ( ; , )B x n p = 1 − ( 1; , )b x n p+ ( )2 2 3 2 31 L L L L L Rα α α α α α+ + + + + −+ + + + 1

で定義する.

(a33) 1R − ≤ xの場合: ˆ( ; , )B x n p = 1とする.

(b) の場合: m x<

残りの [( の場合について1) ]n p+ < x ( ; , )B x n p の近似値 ˆ( ; , )B x n p の計算方法を述べ

よう.[( だから,[(1) ]n q+ = n − [( 1) ]n p+ 1) ]n p x+ < とn x− < [( 1) ]n q+ とは同値であ

る . と お く . 上 で 述 べ た 方 法 でy = n x− )ˆ( 1; ,B y n q− が 求 め ら れ る .

( ; , )B x n p = 1 − ( 1; , )B y n q− より, 1 − ˆ( 1; , )B y n q− の値を ˆ( ; , )B x n p と定義する.

アルゴリズムⅡ: 和を確率関数の値の大きい方から順に加算を実行していく方法である.

まず最初に,0 [( 1) ]x n p≤ ≤ + の場合について ( ; , )B x n p の近似値 ˆ( ; , )B x n p の計算方法を

述べよう. (1 )i i nα ≤ ≤ , (0 1)i i nβ ≤ ≤ − , は方法Ⅰで使用した記号と同じとする.次

の手順で行う.

m

(a) 0 x m≤ ≤ の場合:

(a1) 0 x L≤ ≤ の場合: ˆ( ; , )B x n p = 0 とする.

(a2) かつL x m< ≤ x L− ≤ n x− の場合:降順の漸化式(5.11)を利用して計算する.

ˆ( ; , )B x n p の値を ˆ( ; , )B x n p = ( ; , )b x n p ( )1 1 2 1 2 11 x x x x x Lβ β β β β β− − − − − ++ + + +

39

Page 41: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

で定義する.上式の右辺の第1因子である2項確率関数 は第4節で採用された

アルゴリズムにより計算する. 上式の右辺の第2因子の和は左から順に加算を行う.こ

のとき,モグラたたき法による和を求める漸化式は次のようになる.

( ; , )b x n p

(5.12) iw = ( ( ), ( )A i I i≺ ⊕ 1,0≺ ) ( ( ), ( )A n I n≺ ( ), ( )A i I i≺ ) , ⊗ w ⊗ 1i−w 1i i− i= ⊕z z w , , 1, ,i x x L 1= − + .

ただし, xz = xw = 1,0≺ , w = ( ), ( )A p I p≺ ( ), ( ) A q I q≺ とおく.

1 ( ; , )L x n p+ ⊗z b を ˆ( ; , )B x n p のモグラ表現として採用する. ならば,(5.12)は少

し簡単な形になる.

710n ≤

11 1( ), ( )i i

i iA In i n i −

+ += ⊗

− −w w≺ ⊗w

i 1

, . 1i i−= ⊕z z w , 1, ,i x x L= − +

(a3) Lx x m< ≤ かつn x− < Lx x− の場合:右側限界Rを使用する.

(a31) m < 1R − の場合: 昇順の漸化式(5.9)と降順の漸化式(5.11)を利用して計算す

る.

1 1 1 2 1 2 1( ; , )( )m m m m m LB b m n p β β β β β β− − − − − += + + + ,

2 1 1 2 1( ; , )(1 )m m m m m RB b m n p 2 1α α α α α α+ + + + + −= + + + +

を計算する. ˆ( ; , )B x n p の値を ˆ( ; , )B x n p = 1 − ( 1B + 2B )

で定義する.

(a32) x < 1R − ≤ mの場合: ˆ( ; , )B x n p の値を

ˆ( ; , )B x n p = 1 − ( 1; , )b R n p− ( )2 2 3 2 31 R R R R R xβ β β β β α− − − − −+ + + +

で定義する.

(a33) 1R − ≤ xの場合: ˆ( ; , )B x n p = 1とする.

(b) の場合: m x<

残りの [( の場合について1) ]n p+ < x ( ; , )B x n p の近似値 ˆ( ; , )B x n p の計算方法を述べ

よう.[( だから,[(1) ]n q+ = n − [( 1) ]n p+ 1) ]n p x+ < とn x− < [( 1) ]n q+ とは同値であ

る. xny −= とおく.上で述べた方法で ˆ( 1; , )B y n q− が求められる. ( ; , )B x n p =

1 ( 1; , )B y n− − )q より, ˆ1 ( 1; ,B y n q− − の値を ˆ( ; , )B x n p と定義する.

上で述べた2種類のアルゴリムは共に“2項確率関数×和”の形の計算と左側限界 ,

右側限界 の決め方が基本となっている.アルゴリズムⅠ, Ⅱのどちらがよい計算法

),( pnL

),( pnR

40

Page 42: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

であるかを判断するにはこれらを決定する必要がある.本節では数十~数百種類の2項確

率の値を求める計算を前提としているから,2項確率関数の計算アルゴリズムはすでに第

4節で提案されている.従って,アルゴリズムⅠ, Ⅱの違いは和の計算をそれぞれの項を小

さい方から加えるか,大きい方から加えるかの違いとなる.一方,左側限界,右側限界の

決め方は両者共に共通で,限界 と限界の2種類がある.従って次の4つの組み合わ

せが考えられる.

UU RL ,

方法Ⅰ:左側限界,右側限界として , を採用する. ),( pnLU ),( pnRU

ˆ( ; , )B x n p の計算はアルゴリズムⅠを採用する.

方法Ⅱ:左側限界,右側限界として , を採用する. ),( pnLU ),( pnRU

ˆ( ; , )B x n p の計算はアルゴリズムⅡを採用する.

方法Ⅲ:左側限界,右側限界として , を採用する. ),( pnLB ),( pnRB

ˆ( ; , )B x n p の計算はアルゴリズムⅠを採用する.

方法Ⅳ:左側限界,右側限界として , を採用する. ),( pnLB ),( pnRB

ˆ( ; , )B x n p の計算はアルゴリズムⅡを採用する.

2項確率分布関数 の計算方法として上述の4つの方法のどれがよいかというこ

とに関しては理論的な証明はできないので数値実験で検証することにする.数値実験は次

節で詳細に論ずる.

),;( pnxB

41

Page 43: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

6. 数値実験による2項確率の計算アルゴリズムの比較 2項確率 の計算法として方法Ⅰ,Ⅱ,Ⅲ,Ⅳを前節で述べた.本節ではこれら

4種類の計算法のどれがよいのかを調べるために種々の数値実験(以下の数値実験 6.1 から

6.4)を行なう.良さ具合の基準として絶対誤差,相対誤差,計算時間を採用する.本論で

は真値 に対する計算値 の絶対誤差,相対誤差をそれぞれ

),;( pnxB

( 0)t ≠ t |'| tt − , である.

4つの種類の実験の結果からどの方法がよいかを論ずるのであるが,議論を簡潔にするた

めに,各実験の要約から結論を最初に述べる.各数値実験での結果や議論は,その後,詳

細に述べる.

|/)'(| ttt −

数値実験 6.1 では,種々の組 ( , と,この組によって定まるある範囲内のいくつかの

に対して

)n p x( ; , )B x n p を方法ⅠからⅣで計算し,得られた値の最大絶対誤差,最大相対誤差を

基準にして比較・検討する.数値実験の結果,方法 Ⅰ,Ⅱの間に優劣の差はみられなかっ

た.同様なことが方法Ⅲ,Ⅳにおいてもいえる.ここでは “和の計算は値の小さい項から

順に加える”という数値計算の常識に基づいて,方法Ⅰ,Ⅱにおいては方法Ⅰを,方法Ⅲ,

Ⅳにおいては方法Ⅲを選ぶ.表 6.1 より,最大絶対誤差と最大相対誤差のどちらからみて

も両方法の間の差はなかった.一方,上側確率1 ( ; , )B x n p− を方法Ⅰと方法Ⅲで計算する場

合を考える. のとき,最大絶対誤差と最大相対誤差のどちらからみても両方法の間

の差はなかった.

0.5p =0.5p < のとき,nが大きくなるにつれて,方法Ⅰによる計算値の最大相

対誤差の方法Ⅲのそれに対する比は最大で約 になった.これより,相対誤差を基準にす

ると方法Ⅰより方法Ⅲの方がやや良いという結果になる.しかしながら,方法Ⅰも最大絶

対誤差と最大相対誤差の両方からみて実用上十分に使える方法である.また,計算時間を

考慮していないので,この実験ではまだどちらが良いという判断はできない.結局,方法

Ⅰと方法Ⅲのどちらがよいかは次の数値実験の結果から判断することになる.

410

数値実験 6.2 では,与えられたnに対して, として の5種類を

考える.各組 によって定まる1つの数 に対して

p 6 3 2 110 ,10 ,10 ,10 ,0.5− − − −

( , )n p x ( ; , )B x n p を方法Ⅰと方法Ⅲで計算

する.得られた5種類の計算値の最大相対誤差と最大計算時間を基準にして方法Ⅰと方法

Ⅲのどちらがよいかを比較・検討する.すべての を通して両方法の最大相対誤差には差が

ない.一方,最大計算時間からみると方法Ⅰは方法Ⅲより何十倍も短い.これより,方法

Ⅰは方法Ⅲより良いという結果になる.

n

数値実験 6.3 では,方法Ⅰとよく知られた2項確率の近似計算法(ポアソン近似,

Peizer-Pratt の近似)との比較を行う.与えられた に対して,nとして,50,500,1000,10

万,50 万,100 万,200 万,500 万,1 千万,2 千万,5 千万,1 億,1 億 5 千万,2 億,2 億 5 千万を考

える.各組 によって定まる1つの数 に対して

p

( , )n p x ( ; , )B x n p を方法Ⅰ,Molenaar のポア

ソン近似(Molenaar(1970, p107),Peizer-Pratt の近似(Peizer and Pratt(1968),山内編

(1992))で計算する.以下のように の値によって評価が異なる. p(i) の場合.すべての を通じて相対誤差は Molenaar のポアソン近似で算出した

610−=p n

42

Page 44: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

値が圧倒的によい.方法Ⅰもすべての を通じて実用的に十分使える.計算時間は

Peizer-Pratt の近似が圧倒的に短いが,相対誤差が大きすぎる.方法Ⅰは他の方法に比べ

て何十倍もの時間がかかるが,時間の単位がミリ秒なので,実用上の問題はない.

n

(ii) の場合.すべての を通じて相対誤差は方法Ⅰで算出した値が圧倒的によ

い.Molenaar のポアソン近似も約50万ぐらいまでの大きさの に対しては実用的に十分

使える.計算時間は Peizer-Pratt の近似が圧倒的に短いが,相対誤差が大きすぎる.方法

Ⅰは他の方法に比べて何十倍の時間がかかるが,単位がミリ秒なので,実用上は問題はな

い.

0.001p = nn

(iii) の場合.すべての を通じて相対誤差は方法Ⅰで算出した値が圧倒的によ

い.Molenaar のポアソン近似も約5万ぐらいまでの大きさの に対しては実用的に十分使

える.Peizer-Pratt の近似も約20万以上の大きさの に対しては実用的に十分使える.

計算時間は Peizer-Pratt の近似が圧倒的に短いが,相対誤差が大きすぎる.方法Ⅰは他の

方法に比べて何百倍の時間がかかるが,単位がミリ秒なので,実用上の問題はない.

0.01p = nn

n

(iv) の場合.すべての を通じて方法Ⅰで算出した値の相対誤差が一番小さい.特

に実用的な大きさの に対しては圧倒的に小さい.Molenaar のポアソン近似は相対誤差が

大きすぎて実用的ではない.Peizer-Pratt の近似は約5万以上の大きさの に対しては実

用的に十分使える.計算時間は Peizer-Pratt の近似が圧倒的に短い.方法Ⅰは他の方法に

比べて何千倍の時間がかかるが,単位がミリ秒なので,実用上の問題はない.

0.1p = nn

n

(v) の場合.約2百万以下のnに対しては方法Ⅰで算出した値の相対誤差が一番小

さい.約2千万以上のnに対しては Peizer-Pratt の近似で算出した値の相対誤差が一番小

さい.Molenaar のポアソン近似は相対誤差が大きすぎて実用的ではない.計算時間は

Peizer-Pratt の近似が圧倒的に短い.方法Ⅰは他の方法に比べて何千倍の時間がかかるが,

単位がミリ秒なので,実用上の問題はない.

0.5p =

(i)から(v)までの結果より,pの大小に関わらず,方法Ⅰで算出した値の相対誤差は 810−

程度となることがわかり,方法Ⅰが安定した精度をもつことがわかる.

数値実験 6.4 では,Maple の組み込み関数では計算できない大きさの (>2 億 5 千万)と

いくつかの の組に対して,方法Ⅰによる2項確率値を計算する.ここでは,Maple で計算

した Peizer-Pratt の近似で算出した数を真値として用いる.この結果, が何百億といっ

た巨大な数でも方法Ⅰは計算可能で,最大相対誤差は 程度となる.

np

n410 −

上で述べた各数値実験の要約から,結論としては,2項確率値の計算法として,少なく

ともnが 500 億ぐらいまでは方法Ⅰが実用的であると判断される.また,方法Ⅰより時間は

少しかかるが,精度がやや良い方法Ⅲも十分実用的である.

従来,大きな標本数 に対する2項確率の計算は, , に関する条件によってポアソ

ン近似,正規近似等の方法を使い分けて求めるのが標準的であった.本稿で提案する方法

Ⅰにより, や の大きさに関係なく2項確率を計算することが可能となった.

n n p

n p各数値実験において,種々の確率値,絶対誤差および相対誤差の値の算出はすべてモグ

43

Page 45: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

ラたたき法で行った.しかし,モグラ数の表現のままでは通常の数表現での解釈がしにく

い面もあるので,本節のすべての表における数値は,モグラ数で計算した後にあらためて

通常の数表現に変換した値を用いた(付録または付属の CD-ROM 参照).

数値実験 6.1. いろいろな に対し,方法Ⅰ,Ⅱ,Ⅲ,Ⅳでx ( ; , )B x n p の値を計算し,各方

法の絶対誤差と相対誤差を比較することによりどの方法が精度が良いかを調べる.ここで

は pが ,0.001,0.01,0.1,0.3,0.5 の6通りの場合を設定する.各610 − pに対し,nとして, 50,500,1000,10 万,50 万,100 万,200 万,500 万,1 千万,2 千万,5 千万,1 億,1 億 5 千

万,2 億,2 億 5 千万の 14 通りを選ぶ.2項確率 ( ; , )B x n p の真値として Maple による計算値

を使用するが,Mapleには計算可能な に限界があるため,nの値は 2億 5千万までとした.

各 に対し,Bahadur の不等式を用いて得られる開区間 (第5節参

照)内の点の中から等間隔に 100 点を選び,これらの点での2項確率値を計算する.ただ

し,n 50 の場合は全点で計算する.

n( , )n p ( ( , ), ( , ))B BL n p R n p

=

数値実験 6.1 の結果. 各 に対し,50 個または 100 個の2項確率値が計算される.こ

の内, をみたす に対応する2項確率値

( , )n p

0.0001 ( ; , ) 0.9999B x n p≤ ≤ x ˆ( ; , )B x n p の中での絶

対誤差,相対誤差および上側確率1 ( ; , )B x n p− に対する ˆ1 ( ; , )B x n p− の相対誤差の最大値,

最小値を求めた結果を表 6.1 から表 6.6 に示す.それぞれの表において各セルにおける 4

個の数値は上段から順にそれぞれ方法Ⅰ,方法Ⅱ,方法Ⅲ,方法Ⅳで計算した結果を表す.

44

Page 46: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.1. のとき, の真値および計算値 に対する絶対誤差と相対誤差の 610p −= ( ; , )B x n p ˆ( ; , )B x n p最大値・最小値. 表中で に対応する箇所がないのは, であるという理

由による.

50n = 6(0;50,10 ) 0.9999B − >

p=0.000001n 最小値 最大値 最小値 最大値 最小値 最大値

1.8E-14 ~ 1.8E-14 1.8E-14 ~ 1.8E-14 3.6E-11 ~ 3.6E-111.8E-14 ~ 1.8E-14 1.8E-14 ~ 1.8E-14 3.6E-11 ~ 3.6E-111.8E-14 ~ 1.8E-14 1.8E-14 ~ 1.8E-14 3.6E-11 ~ 3.6E-111.8E-14 ~ 1.8E-14 1.8E-14 ~ 1.8E-14 3.6E-11 ~ 3.6E-113.6E-14 ~ 3.6E-14 3.7E-14 ~ 3.7E-14 3.6E-11 ~ 3.6E-113.6E-14 ~ 3.6E-14 3.7E-14 ~ 3.7E-14 3.6E-11 ~ 3.6E-113.6E-14 ~ 3.6E-14 3.7E-14 ~ 3.7E-14 3.6E-11 ~ 3.6E-113.6E-14 ~ 3.6E-14 3.7E-14 ~ 3.7E-14 3.6E-11 ~ 3.6E-113.4E-12 ~ 6.6E-12 3.8E-12 ~ 6.6E-12 3.6E-11 ~ 4.3E-083.4E-12 ~ 6.6E-12 3.8E-12 ~ 6.6E-12 3.6E-11 ~ 4.3E-083.4E-12 ~ 6.6E-12 3.8E-12 ~ 6.6E-12 3.6E-11 ~ 4.3E-083.4E-12 ~ 6.6E-12 3.8E-12 ~ 6.6E-12 3.6E-11 ~ 4.3E-086.2E-12 ~ 1.3E-11 7.6E-12 ~ 1.3E-11 3.4E-11 ~ 1.1E-086.2E-12 ~ 1.3E-11 7.6E-12 ~ 1.3E-11 3.4E-11 ~ 1.1E-086.2E-12 ~ 1.3E-11 7.6E-12 ~ 1.3E-11 3.4E-11 ~ 1.1E-086.2E-12 ~ 1.3E-11 7.6E-12 ~ 1.3E-11 3.4E-11 ~ 1.1E-081.1E-11 ~ 3.2E-11 1.8E-11 ~ 3.2E-11 2.8E-11 ~ 1.9E-071.1E-11 ~ 3.2E-11 1.8E-11 ~ 3.2E-11 2.8E-11 ~ 1.9E-071.1E-11 ~ 3.2E-11 1.8E-11 ~ 3.2E-11 2.8E-11 ~ 1.9E-071.1E-11 ~ 3.2E-11 1.8E-11 ~ 3.2E-11 2.8E-11 ~ 1.9E-071.3E-11 ~ 6.5E-11 3.6E-11 ~ 6.5E-11 1.0E-10 ~ 1.1E-071.3E-11 ~ 6.5E-11 3.6E-11 ~ 6.5E-11 1.0E-10 ~ 1.1E-071.3E-11 ~ 6.5E-11 3.6E-11 ~ 6.5E-11 1.0E-10 ~ 1.1E-071.3E-11 ~ 6.5E-11 3.6E-11 ~ 6.5E-11 1.0E-10 ~ 1.1E-079.8E-12 ~ 1.3E-10 7.2E-11 ~ 1.3E-10 1.5E-10 ~ 5.5E-079.8E-12 ~ 1.3E-10 7.2E-11 ~ 1.3E-10 1.5E-10 ~ 5.5E-079.8E-12 ~ 1.3E-10 7.2E-11 ~ 1.3E-10 1.5E-10 ~ 5.5E-079.8E-12 ~ 1.3E-10 7.2E-11 ~ 1.3E-10 1.5E-10 ~ 5.5E-07

200万

100万

50万

20万

10万

1000

500

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

45

Page 47: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.1 つづき. のとき, の真値および計算値 に対する絶対誤差と相対誤差の最

大値・最小値

610p −= ( ; , )B x n p ˆ( ; , )B x n p

p=0.000001n 最小値 最大値 最小値 最大値 最小値 最大値

1.8E-12 ~ 4.0E-10 2.6E-10 ~ 4.0E-10 1.2E-09 ~ 1.8E-061.8E-12 ~ 4.0E-10 2.6E-10 ~ 4.0E-10 1.2E-09 ~ 1.8E-061.8E-12 ~ 4.0E-10 2.6E-10 ~ 4.0E-10 1.2E-09 ~ 1.8E-061.8E-12 ~ 4.0E-10 2.6E-10 ~ 4.0E-10 1.2E-09 ~ 1.8E-061.4E-12 ~ 8.1E-10 5.2E-10 ~ 8.1E-10 7.3E-10 ~ 2.7E-061.4E-12 ~ 8.1E-10 5.2E-10 ~ 8.1E-10 7.3E-10 ~ 2.7E-061.4E-12 ~ 8.1E-10 5.2E-10 ~ 8.1E-10 7.3E-10 ~ 2.7E-061.4E-12 ~ 8.1E-10 5.2E-10 ~ 8.1E-10 7.3E-10 ~ 2.7E-062.7E-13 ~ 1.6E-09 1.0E-09 ~ 1.6E-09 2.8E-09 ~ 3.8E-062.7E-13 ~ 1.6E-09 1.0E-09 ~ 1.6E-09 2.8E-09 ~ 3.8E-062.7E-13 ~ 1.6E-09 1.0E-09 ~ 1.6E-09 2.8E-09 ~ 3.8E-062.7E-13 ~ 1.6E-09 1.0E-09 ~ 1.6E-09 2.8E-09 ~ 3.8E-063.5E-12 ~ 3.7E-09 2.2E-09 ~ 3.7E-09 2.6E-09 ~ 9.8E-063.5E-12 ~ 3.7E-09 2.2E-09 ~ 3.7E-09 2.6E-09 ~ 9.8E-063.5E-12 ~ 3.7E-09 2.2E-09 ~ 3.7E-09 2.6E-09 ~ 9.8E-063.5E-12 ~ 3.7E-09 2.2E-09 ~ 3.7E-09 2.6E-09 ~ 9.8E-068.5E-13 ~ 7.3E-09 4.4E-09 ~ 7.3E-09 1.1E-08 ~ 5.6E-058.5E-13 ~ 7.3E-09 4.4E-09 ~ 7.3E-09 1.1E-08 ~ 5.6E-058.5E-13 ~ 7.3E-09 4.4E-09 ~ 7.3E-09 1.1E-08 ~ 5.6E-058.5E-13 ~ 7.3E-09 4.4E-09 ~ 7.3E-09 1.1E-08 ~ 5.6E-054.9E-12 ~ 1.1E-08 6.9E-09 ~ 1.1E-08 1.6E-08 ~ 2.6E-054.9E-12 ~ 1.1E-08 6.9E-09 ~ 1.1E-08 1.6E-08 ~ 2.6E-054.9E-12 ~ 1.1E-08 6.9E-09 ~ 1.1E-08 1.6E-08 ~ 2.6E-054.9E-12 ~ 1.1E-08 6.9E-09 ~ 1.1E-08 1.6E-08 ~ 2.6E-052.8E-12 ~ 1.5E-08 8.9E-09 ~ 1.5E-08 3.4E-08 ~ 8.4E-052.8E-12 ~ 1.5E-08 8.9E-09 ~ 1.5E-08 3.4E-08 ~ 8.4E-052.8E-12 ~ 1.5E-08 8.9E-09 ~ 1.5E-08 3.4E-08 ~ 8.4E-052.8E-12 ~ 1.5E-08 8.9E-09 ~ 1.5E-08 3.4E-08 ~ 8.4E-056.4E-12 ~ 1.8E-08 1.0E-08 ~ 1.8E-08 1.1E-08 ~ 1.6E-046.4E-12 ~ 1.8E-08 1.0E-08 ~ 1.8E-08 1.1E-08 ~ 1.6E-046.4E-12 ~ 1.8E-08 1.0E-08 ~ 1.8E-08 1.1E-08 ~ 1.6E-046.4E-12 ~ 1.8E-08 1.0E-08 ~ 1.8E-08 1.1E-08 ~ 1.6E-04

2億5千万

2億

1億5千万

1億

5000万

2000万

1000万

相対誤差(下側確率) 相対誤差(上側確率)

500万

絶対誤差

表 6.1 より,絶対誤差の最大値・最小値,下側確率の相対誤差の最大値・最小値,上側確率の

相対誤差の最大値・最小値については,どの についても方法ⅠからⅣの間に差はほとんど見ら

れないことがわかる.また,すべてのnを通してどの方法も絶対誤差の最大値 程度を保っ

ていることがわかる.

n810−

46

Page 48: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.2. のとき, の真値および計算値 に対する絶対誤差と相対誤差の 0.001p = ( ; , )B x n p ˆ( ; , )B x n p最大値・最小値

p=0.001n 最小値 最大値 最小値 最大値 最小値 最大値

3.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-143.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-143.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-143.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-142.8E-15 ~ 4.5E-15 4.1E-15 ~ 4.6E-15 7.6E-15 ~ 2.4E-112.8E-15 ~ 5.3E-15 4.6E-15 ~ 5.3E-15 7.6E-15 ~ 2.9E-112.8E-15 ~ 4.5E-15 4.1E-15 ~ 4.6E-15 7.6E-15 ~ 2.4E-112.8E-15 ~ 5.3E-15 4.6E-15 ~ 5.3E-15 7.6E-15 ~ 2.9E-113.4E-15 ~ 9.5E-15 9.1E-15 ~ 9.5E-15 2.6E-14 ~ 1.5E-113.4E-15 ~ 9.5E-15 8.3E-15 ~ 9.5E-15 2.3E-14 ~ 1.5E-113.4E-15 ~ 9.5E-15 9.1E-15 ~ 9.5E-15 2.6E-14 ~ 1.5E-113.4E-15 ~ 9.5E-15 8.3E-15 ~ 9.5E-15 2.3E-14 ~ 1.5E-111.2E-16 ~ 7.1E-13 6.3E-13 ~ 7.1E-13 1.1E-12 ~ 5.5E-091.2E-16 ~ 7.1E-13 6.2E-13 ~ 7.1E-13 1.1E-12 ~ 5.5E-091.2E-16 ~ 7.1E-13 6.4E-13 ~ 7.2E-13 1.1E-12 ~ 5.5E-091.2E-16 ~ 7.1E-13 6.2E-13 ~ 7.1E-13 1.1E-12 ~ 5.5E-093.9E-16 ~ 1.4E-12 1.2E-12 ~ 1.4E-12 3.4E-12 ~ 8.2E-093.9E-16 ~ 1.4E-12 1.2E-12 ~ 1.4E-12 3.4E-12 ~ 8.2E-094.0E-16 ~ 1.4E-12 1.3E-12 ~ 1.4E-12 3.4E-12 ~ 8.3E-093.9E-16 ~ 1.4E-12 1.2E-12 ~ 1.4E-12 3.4E-12 ~ 8.2E-093.1E-16 ~ 2.8E-12 2.4E-12 ~ 2.9E-12 6.1E-12 ~ 2.9E-093.1E-16 ~ 2.8E-12 2.4E-12 ~ 2.8E-12 6.1E-12 ~ 2.8E-093.7E-16 ~ 3.1E-12 2.9E-12 ~ 3.2E-12 6.8E-12 ~ 3.1E-093.1E-16 ~ 2.8E-12 2.4E-12 ~ 2.8E-12 6.1E-12 ~ 2.8E-091.1E-15 ~ 5.7E-12 4.8E-12 ~ 5.7E-12 7.9E-12 ~ 5.4E-091.1E-15 ~ 5.7E-12 4.8E-12 ~ 5.7E-12 7.9E-12 ~ 5.3E-091.4E-15 ~ 6.1E-12 5.7E-12 ~ 6.4E-12 9.0E-12 ~ 5.8E-091.1E-15 ~ 5.7E-12 4.8E-12 ~ 5.7E-12 7.9E-12 ~ 5.3E-091.3E-14 ~ 1.1E-11 9.6E-12 ~ 1.1E-11 3.7E-11 ~ 8.2E-081.3E-14 ~ 1.1E-11 9.6E-12 ~ 1.1E-11 3.7E-11 ~ 8.2E-081.6E-14 ~ 1.2E-11 1.1E-11 ~ 1.2E-11 4.1E-11 ~ 8.8E-081.3E-14 ~ 1.1E-11 9.6E-12 ~ 1.1E-11 3.7E-11 ~ 8.2E-08

50

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

1000

500

20万

10万

100万

50万

200万

47

Page 49: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.2.つづき のとき, の真値および計算値 に対する絶対誤差と相対誤差の

最大値・最小値 0.001p = ( ; , )B x n p ˆ( ; , )B x n p

p=0.001n 最小値 最大値 最小値 最大値 最小値 最大値

7.6E-14 ~ 7.7E-11 7.7E-11 ~ 8.2E-11 2.0E-10 ~ 3.4E-077.6E-14 ~ 7.7E-11 7.7E-11 ~ 8.2E-11 2.0E-10 ~ 3.4E-071.8E-14 ~ 7.7E-11 1.8E-14 ~ 8.2E-11 7.4E-11 ~ 2.8E-081.8E-14 ~ 7.7E-11 1.8E-14 ~ 8.2E-11 7.4E-11 ~ 2.8E-081.0E-13 ~ 1.5E-10 1.5E-10 ~ 1.6E-10 3.4E-10 ~ 5.1E-071.0E-13 ~ 1.5E-10 1.5E-10 ~ 1.6E-10 3.4E-10 ~ 5.1E-074.7E-14 ~ 1.5E-10 4.7E-14 ~ 1.6E-10 1.5E-10 ~ 6.1E-094.7E-14 ~ 1.5E-10 4.7E-14 ~ 1.6E-10 1.5E-10 ~ 6.1E-093.0E-13 ~ 3.1E-10 3.1E-10 ~ 3.3E-10 8.4E-10 ~ 1.7E-063.0E-13 ~ 3.1E-10 3.1E-10 ~ 3.3E-10 8.4E-10 ~ 1.7E-065.5E-14 ~ 2.8E-10 5.5E-14 ~ 3.3E-10 3.1E-10 ~ 3.2E-095.5E-14 ~ 2.8E-10 5.5E-14 ~ 3.3E-10 3.1E-10 ~ 3.2E-092.7E-15 ~ 3.0E-11 1.4E-11 ~ 3.0E-11 4.1E-11 ~ 4.1E-082.7E-15 ~ 3.0E-11 1.4E-11 ~ 3.0E-11 4.1E-11 ~ 4.0E-082.5E-15 ~ 2.5E-11 2.2E-14 ~ 3.1E-11 2.9E-11 ~ 1.5E-102.7E-15 ~ 2.5E-11 2.3E-14 ~ 3.0E-11 3.0E-11 ~ 1.4E-102.4E-14 ~ 6.0E-11 2.8E-11 ~ 6.1E-11 1.6E-10 ~ 3.6E-072.5E-14 ~ 6.0E-11 2.9E-11 ~ 6.0E-11 1.6E-10 ~ 3.5E-071.0E-14 ~ 4.5E-11 1.0E-14 ~ 6.1E-11 5.9E-11 ~ 1.6E-101.0E-14 ~ 4.3E-11 1.0E-14 ~ 6.0E-11 5.9E-11 ~ 1.6E-103.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-143.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-143.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-143.7E-16 ~ 3.7E-16 3.7E-16 ~ 3.9E-16 0.0E+00 ~ 9.4E-143.4E-14 ~ 1.2E-10 5.5E-11 ~ 1.2E-10 2.8E-10 ~ 5.5E-073.6E-14 ~ 1.2E-10 5.8E-11 ~ 1.2E-10 2.8E-10 ~ 5.4E-072.7E-14 ~ 8.5E-11 2.7E-14 ~ 1.2E-10 1.2E-10 ~ 2.8E-102.7E-14 ~ 8.3E-11 2.7E-14 ~ 1.2E-10 1.2E-10 ~ 2.8E-108.7E-13 ~ 2.4E-09 2.0E-09 ~ 2.4E-09 4.5E-09 ~ 7.1E-068.7E-13 ~ 2.4E-09 2.0E-09 ~ 2.4E-09 4.5E-09 ~ 7.1E-068.4E-13 ~ 1.5E-09 8.4E-13 ~ 2.3E-09 2.5E-09 ~ 4.5E-098.4E-13 ~ 1.5E-09 8.5E-13 ~ 2.3E-09 2.5E-09 ~ 4.5E-09

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

500万

1000万

2000万

5000万

1億

1億5千万

2億

2億5千万

表 6.2 より,絶対誤差の最大値・最小値については,どの についても方法ⅠからⅣの

間に差はほとんど見られない.下側確率の相対誤差の最小値については が 500 万以上では

方法ⅢあるいはⅣのそれが小さい.下側確率の相対誤差の最大値についてはどの について

も方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最小値については,

どのnについても方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最大

値については,nが 500 万以上では方法ⅢあるいはⅣのそれが小さい.絶対誤差の最大値の

nn

n

48

Page 50: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表から,すべての を通してどの方法も絶対誤差の最大値n 910− 程度を保っていることがわ

かる.

表 6.3. のとき, の真値および計算値 に対する絶対誤差と相対誤差の 0.01p = ( ; , )B x n p ˆ( ; , )B x n p最大値・最小値

p=0.01n 最小値 最大値 最小値 最大値 最小値 最大値

4.7E-17 ~ 2.4E-15 4.7E-17 ~ 2.5E-15 0.0E+00 ~ 2.1E-131.3E-15 ~ 2.8E-15 2.2E-15 ~ 2.8E-15 2.5E-15 ~ 1.4E-114.7E-17 ~ 2.4E-15 4.7E-17 ~ 2.5E-15 0.0E+00 ~ 2.1E-131.3E-15 ~ 2.8E-15 2.2E-15 ~ 2.8E-15 2.5E-15 ~ 1.4E-111.4E-16 ~ 2.6E-14 2.1E-14 ~ 2.6E-14 8.1E-14 ~ 1.3E-101.4E-16 ~ 2.6E-14 2.0E-14 ~ 2.6E-14 7.6E-14 ~ 1.3E-101.4E-16 ~ 2.6E-14 2.1E-14 ~ 2.6E-14 8.1E-14 ~ 1.3E-101.4E-16 ~ 2.6E-14 2.0E-14 ~ 2.6E-14 7.6E-14 ~ 1.3E-101.1E-16 ~ 5.2E-14 4.2E-14 ~ 5.2E-14 6.0E-14 ~ 1.9E-101.1E-16 ~ 5.2E-14 4.1E-14 ~ 5.3E-14 6.0E-14 ~ 1.9E-101.1E-16 ~ 5.2E-14 4.2E-14 ~ 5.2E-14 6.0E-14 ~ 1.9E-101.1E-16 ~ 5.2E-14 4.1E-14 ~ 5.3E-14 6.0E-14 ~ 1.9E-101.2E-15 ~ 5.1E-12 4.2E-12 ~ 5.1E-12 7.9E-12 ~ 6.2E-091.2E-15 ~ 5.1E-12 4.2E-12 ~ 5.1E-12 7.9E-12 ~ 6.2E-091.2E-15 ~ 5.1E-12 4.3E-12 ~ 5.1E-12 8.0E-12 ~ 6.3E-091.2E-15 ~ 5.1E-12 4.2E-12 ~ 5.1E-12 7.9E-12 ~ 6.2E-099.9E-16 ~ 1.0E-11 8.4E-12 ~ 1.0E-11 1.2E-11 ~ 8.0E-099.9E-16 ~ 1.0E-11 8.4E-12 ~ 1.0E-11 1.2E-11 ~ 7.9E-091.0E-15 ~ 1.0E-11 8.6E-12 ~ 1.0E-11 1.2E-11 ~ 8.0E-091.0E-15 ~ 1.0E-11 8.4E-12 ~ 1.0E-11 1.2E-11 ~ 7.9E-092.9E-14 ~ 2.6E-11 2.2E-11 ~ 2.6E-11 8.4E-11 ~ 1.9E-072.9E-14 ~ 2.6E-11 2.2E-11 ~ 2.6E-11 8.4E-11 ~ 1.9E-073.7E-15 ~ 2.7E-11 3.7E-15 ~ 2.7E-11 2.8E-11 ~ 1.4E-083.7E-15 ~ 2.6E-11 3.7E-15 ~ 2.6E-11 2.8E-11 ~ 1.4E-083.9E-14 ~ 5.3E-11 4.4E-11 ~ 5.3E-11 1.4E-10 ~ 2.9E-073.9E-14 ~ 5.3E-11 4.4E-11 ~ 5.3E-11 1.4E-10 ~ 2.9E-079.8E-15 ~ 5.2E-11 9.8E-15 ~ 5.4E-11 5.4E-11 ~ 2.9E-099.7E-15 ~ 5.2E-11 9.7E-15 ~ 5.3E-11 5.0E-11 ~ 2.8E-091.3E-13 ~ 1.1E-10 8.8E-11 ~ 1.1E-10 1.1E-10 ~ 7.5E-081.3E-13 ~ 1.1E-10 8.8E-11 ~ 1.1E-10 1.1E-10 ~ 7.5E-081.3E-13 ~ 1.0E-10 1.5E-13 ~ 1.1E-10 1.1E-10 ~ 1.5E-091.3E-13 ~ 9.9E-11 1.5E-13 ~ 1.1E-10 1.1E-10 ~ 1.5E-09

50

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

1000

500

20万

10万

100万

50万

200万

49

Page 51: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.3 つづき のとき, の真値および計算値 に対する絶対誤差と相対誤差の最

大値・最小値

0.01p = ( ; , )B x n p ˆ( ; , )B x n p

p=0.01n 最小値 最大値 最小値 最大値 最小値 最大値

2.8E-15 ~ 6.3E-11 1.9E-11 ~ 6.3E-11 7.7E-11 ~ 6.7E-082.8E-15 ~ 6.3E-11 1.9E-11 ~ 6.3E-11 7.7E-11 ~ 6.6E-082.9E-15 ~ 5.1E-11 6.0E-14 ~ 6.3E-11 6.3E-11 ~ 2.7E-102.8E-15 ~ 5.1E-11 6.0E-14 ~ 6.3E-11 6.3E-11 ~ 2.7E-103.2E-14 ~ 1.3E-10 3.7E-11 ~ 1.3E-10 3.3E-10 ~ 7.4E-073.2E-14 ~ 1.3E-10 3.7E-11 ~ 1.3E-10 3.3E-10 ~ 7.4E-072.1E-14 ~ 9.2E-11 2.1E-14 ~ 1.3E-10 1.2E-10 ~ 3.4E-102.1E-14 ~ 9.1E-11 2.1E-14 ~ 1.3E-10 1.2E-10 ~ 3.3E-103.8E-14 ~ 2.5E-10 7.5E-11 ~ 2.5E-10 5.3E-10 ~ 9.0E-073.8E-14 ~ 2.5E-10 7.5E-11 ~ 2.5E-10 5.3E-10 ~ 8.9E-073.9E-14 ~ 1.7E-10 7.2E-14 ~ 2.5E-10 2.5E-10 ~ 5.3E-103.8E-14 ~ 1.7E-10 7.1E-14 ~ 2.5E-10 2.5E-10 ~ 5.3E-104.6E-14 ~ 2.8E-10 1.6E-10 ~ 2.8E-10 4.5E-10 ~ 5.7E-074.6E-14 ~ 2.8E-10 1.6E-10 ~ 2.8E-10 4.5E-10 ~ 5.7E-074.5E-14 ~ 1.7E-10 1.4E-13 ~ 2.8E-10 2.8E-10 ~ 4.6E-104.6E-14 ~ 1.7E-10 1.4E-13 ~ 2.8E-10 2.8E-10 ~ 4.5E-106.2E-14 ~ 5.6E-10 3.3E-10 ~ 5.6E-10 7.6E-10 ~ 7.7E-076.2E-14 ~ 5.6E-10 3.3E-10 ~ 5.6E-10 7.6E-10 ~ 7.7E-076.1E-14 ~ 3.2E-10 4.1E-13 ~ 5.6E-10 5.6E-10 ~ 7.6E-106.2E-14 ~ 3.2E-10 4.1E-13 ~ 5.6E-10 5.6E-10 ~ 7.6E-104.7E-17 ~ 2.4E-15 4.7E-17 ~ 2.5E-15 0.0E+00 ~ 2.1E-132.3E-15 ~ 2.8E-15 2.5E-15 ~ 2.8E-15 2.2E-14 ~ 1.4E-114.7E-17 ~ 2.4E-15 4.7E-17 ~ 2.5E-15 0.0E+00 ~ 2.1E-132.3E-15 ~ 2.8E-15 2.5E-15 ~ 2.8E-15 2.2E-14 ~ 1.4E-115.4E-14 ~ 2.1E-09 3.5E-10 ~ 2.1E-09 2.6E-09 ~ 2.4E-065.4E-14 ~ 2.1E-09 3.5E-10 ~ 2.1E-09 2.6E-09 ~ 2.4E-065.5E-14 ~ 1.2E-09 1.8E-12 ~ 2.1E-09 2.1E-09 ~ 2.7E-095.4E-14 ~ 1.2E-09 1.9E-12 ~ 2.1E-09 2.1E-09 ~ 2.6E-092.2E-12 ~ 1.7E-08 1.5E-08 ~ 1.7E-08 2.1E-08 ~ 1.9E-052.2E-12 ~ 1.7E-08 1.5E-08 ~ 1.7E-08 2.1E-08 ~ 1.9E-052.2E-12 ~ 9.3E-09 1.4E-11 ~ 1.7E-08 1.6E-08 ~ 2.1E-082.2E-12 ~ 9.3E-09 1.4E-11 ~ 1.7E-08 1.7E-08 ~ 2.1E-08

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

500万

1000万

2000万

5000万

1億

1億5千万

2億

2億5千万

表 6.3 より,絶対誤差の最大値・最小値については,どの についても方法ⅠからⅣの

間に差はほとんど見られない.下側確率の相対誤差の最小値についてはnが 50 万以上では

方法ⅢあるいはⅣのそれが小さい.下側確率の相対誤差の最大値についてはどの について

も方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最小値については,

どのnについても方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最大

値については, が 50 万以上では方法ⅢあるいはⅣのそれが小さい.絶対誤差の最大値の

表から,すべての を通してどの方法も絶対誤差の最大値

n

n

nn 910− 程度を保っていることがわ

50

Page 52: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

かる.

表 6.5. のとき, の真値および計算値 に対する絶対誤差と相対誤差の 0.1p = ( ; , )B x n p ˆ( ; , )B x n p

最大値・最小値

p=0.1n 最小値 最大値 最小値 最大値 最小値 最大値

0.0E+00 ~ 1.2E-15 0.0E+00 ~ 1.2E-15 0.0E+00 ~ 3.9E-120.0E+00 ~ 1.3E-15 0.0E+00 ~ 1.3E-15 0.0E+00 ~ 3.9E-120.0E+00 ~ 1.2E-15 0.0E+00 ~ 1.2E-15 0.0E+00 ~ 3.9E-120.0E+00 ~ 1.3E-15 0.0E+00 ~ 1.3E-15 0.0E+00 ~ 3.9E-124.1E-19 ~ 1.2E-14 1.4E-15 ~ 1.2E-14 2.0E-14 ~ 1.1E-101.8E-19 ~ 1.1E-14 1.5E-16 ~ 1.1E-14 2.0E-14 ~ 9.8E-114.1E-19 ~ 1.2E-14 1.4E-15 ~ 1.2E-14 2.0E-14 ~ 1.1E-101.8E-19 ~ 1.1E-14 1.5E-16 ~ 1.1E-14 2.0E-14 ~ 9.8E-115.5E-19 ~ 2.4E-14 9.5E-16 ~ 2.4E-14 2.3E-15 ~ 1.4E-104.5E-19 ~ 2.0E-14 7.9E-16 ~ 2.0E-14 2.1E-15 ~ 1.2E-102.6E-18 ~ 2.3E-14 4.6E-15 ~ 2.3E-14 4.2E-15 ~ 1.4E-104.5E-19 ~ 2.0E-14 7.9E-16 ~ 2.0E-14 2.1E-15 ~ 1.2E-105.4E-17 ~ 2.3E-12 2.9E-13 ~ 2.5E-12 2.6E-12 ~ 2.0E-085.4E-17 ~ 2.1E-12 1.7E-13 ~ 2.1E-12 2.1E-12 ~ 1.8E-083.1E-17 ~ 2.2E-12 8.7E-17 ~ 2.6E-12 0.0E+00 ~ 3.3E-113.4E-17 ~ 1.9E-12 8.7E-17 ~ 2.0E-12 0.0E+00 ~ 2.8E-113.7E-16 ~ 4.6E-12 5.6E-13 ~ 4.8E-12 1.1E-11 ~ 1.7E-083.7E-16 ~ 4.1E-12 3.7E-13 ~ 4.1E-12 9.0E-12 ~ 1.5E-084.1E-16 ~ 4.3E-12 1.2E-15 ~ 5.0E-12 3.8E-12 ~ 4.0E-113.4E-16 ~ 3.6E-12 1.2E-15 ~ 4.1E-12 3.8E-12 ~ 3.4E-111.2E-15 ~ 1.3E-11 1.1E-12 ~ 1.3E-11 3.7E-11 ~ 9.3E-081.3E-15 ~ 1.3E-11 1.2E-12 ~ 1.3E-11 3.8E-11 ~ 9.5E-081.1E-15 ~ 9.5E-12 1.6E-15 ~ 1.3E-11 8.1E-12 ~ 3.8E-111.3E-15 ~ 9.7E-12 1.8E-15 ~ 1.3E-11 1.3E-11 ~ 3.8E-111.5E-15 ~ 2.6E-11 2.6E-12 ~ 2.6E-11 5.5E-11 ~ 9.9E-082.4E-15 ~ 2.6E-11 4.0E-12 ~ 2.6E-11 5.8E-11 ~ 1.0E-071.6E-15 ~ 1.8E-11 6.9E-15 ~ 2.6E-11 2.3E-11 ~ 5.6E-112.4E-15 ~ 1.8E-11 7.0E-15 ~ 2.6E-11 2.6E-11 ~ 5.8E-111.6E-15 ~ 5.0E-11 4.7E-12 ~ 5.0E-11 8.4E-11 ~ 1.1E-072.5E-15 ~ 5.2E-11 7.3E-12 ~ 5.2E-11 8.7E-11 ~ 1.1E-071.4E-15 ~ 3.1E-11 2.4E-14 ~ 5.0E-11 5.2E-11 ~ 8.4E-112.4E-15 ~ 3.2E-11 2.4E-14 ~ 5.2E-11 5.2E-11 ~ 8.7E-11

50

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

1000

500

20万

10万

100万

50万

200万

51

Page 53: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.4.つづき のとき, の真値および計算値 に対する絶対誤差と相対誤差の最

大値・最小値

0.1p = ( ; , )B x n p ˆ( ; , )B x n p

p=0.1n 最小値 最大値 最小値 最大値 最小値 最大値

3.7E-15 ~ 1.3E-10 1.7E-11 ~ 1.3E-10 1.8E-10 ~ 1.9E-073.7E-15 ~ 1.3E-10 1.7E-11 ~ 1.3E-10 1.8E-10 ~ 1.9E-074.0E-15 ~ 7.7E-11 8.4E-14 ~ 1.3E-10 1.3E-10 ~ 1.9E-103.7E-15 ~ 7.5E-11 8.5E-14 ~ 1.3E-10 1.3E-10 ~ 1.8E-106.5E-15 ~ 2.6E-10 3.4E-11 ~ 2.6E-10 3.5E-10 ~ 3.6E-076.5E-15 ~ 2.6E-10 3.5E-11 ~ 2.6E-10 3.5E-10 ~ 3.6E-076.2E-15 ~ 1.5E-10 1.8E-13 ~ 2.6E-10 2.5E-10 ~ 3.5E-106.5E-15 ~ 1.5E-10 1.8E-13 ~ 2.6E-10 2.6E-10 ~ 3.5E-109.7E-15 ~ 5.1E-10 6.8E-11 ~ 5.1E-10 6.2E-10 ~ 5.5E-079.9E-15 ~ 5.1E-10 7.0E-11 ~ 5.1E-10 6.2E-10 ~ 5.5E-079.6E-15 ~ 2.8E-10 4.7E-13 ~ 5.1E-10 5.0E-10 ~ 6.2E-109.9E-15 ~ 2.8E-10 4.8E-13 ~ 5.1E-10 5.1E-10 ~ 6.2E-102.2E-15 ~ 1.1E-09 1.7E-11 ~ 1.1E-09 1.3E-09 ~ 1.1E-062.1E-15 ~ 1.1E-09 1.6E-11 ~ 1.1E-09 1.3E-09 ~ 1.1E-062.5E-15 ~ 5.8E-10 1.1E-12 ~ 1.1E-09 1.1E-09 ~ 1.3E-092.1E-15 ~ 5.8E-10 1.1E-12 ~ 1.1E-09 1.1E-09 ~ 1.3E-093.8E-15 ~ 2.2E-09 3.4E-11 ~ 2.2E-09 2.4E-09 ~ 1.9E-063.7E-15 ~ 2.2E-09 3.3E-11 ~ 2.2E-09 2.4E-09 ~ 1.9E-063.8E-15 ~ 1.1E-09 2.5E-12 ~ 2.2E-09 2.2E-09 ~ 2.4E-093.7E-15 ~ 1.1E-09 2.5E-12 ~ 2.2E-09 2.2E-09 ~ 2.4E-097.9E-13 ~ 4.0E-09 4.0E-09 ~ 7.3E-09 4.3E-09 ~ 3.4E-067.9E-13 ~ 4.0E-09 4.0E-09 ~ 7.3E-09 4.3E-09 ~ 3.4E-067.9E-13 ~ 2.1E-09 4.6E-12 ~ 7.3E-09 4.0E-09 ~ 4.3E-097.9E-13 ~ 2.1E-09 4.6E-12 ~ 7.3E-09 4.0E-09 ~ 4.3E-091.1E-12 ~ 5.7E-09 5.7E-09 ~ 1.0E-08 6.1E-09 ~ 4.8E-061.1E-12 ~ 5.7E-09 5.7E-09 ~ 1.0E-08 6.1E-09 ~ 4.8E-061.1E-12 ~ 2.9E-09 6.7E-12 ~ 1.0E-08 5.7E-09 ~ 6.1E-091.1E-12 ~ 2.9E-09 6.7E-12 ~ 1.0E-08 5.7E-09 ~ 6.1E-091.3E-12 ~ 6.7E-09 6.8E-09 ~ 1.2E-08 7.1E-09 ~ 5.5E-061.3E-12 ~ 6.7E-09 6.8E-09 ~ 1.2E-08 7.1E-09 ~ 5.5E-061.3E-12 ~ 3.5E-09 8.3E-12 ~ 1.2E-08 6.8E-09 ~ 7.1E-091.3E-12 ~ 3.5E-09 8.2E-12 ~ 1.2E-08 6.7E-09 ~ 7.1E-09

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

500万

1000万

2000万

5000万

1億

1億5千万

2億

2億5千万

表 6.4 より,絶対誤差の最大値・最小値については,どの についても方法ⅠからⅣの

間に差はほとんど見られない.下側確率の相対誤差の最小値についてはnが 10 万以上では

方法ⅢあるいはⅣのそれが小さい.下側確率の相対誤差の最大値についてはどの について

も方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最小値については,

どのnについても方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最大

値については, が 10 万以上では方法ⅢあるいはⅣのそれが小さい.絶対誤差の最大値の

表から,すべての を通してどの方法も絶対誤差の最大値

n

n

nn 910− 程度を保っていることがわ

52

Page 54: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

かる.

表 6.5. のとき, の真値および計算値 に対する絶対誤差と相対誤差の 0.3p = ( ; , )B x n p ˆ( ; , )B x n p最大値・最小値

p=0.3n 最小値 最大値 最小値 最大値 最小値 最大値

0.0E+00 ~ 2.6E-15 0.0E+00 ~ 2.7E-15 0.0E+00 ~ 1.3E-120.0E+00 ~ 2.7E-15 0.0E+00 ~ 2.8E-15 0.0E+00 ~ 1.3E-120.0E+00 ~ 2.6E-15 0.0E+00 ~ 2.7E-15 0.0E+00 ~ 1.3E-120.0E+00 ~ 2.7E-15 0.0E+00 ~ 2.8E-15 0.0E+00 ~ 1.3E-122.2E-19 ~ 2.7E-14 2.6E-16 ~ 2.7E-14 2.1E-15 ~ 8.1E-112.7E-19 ~ 2.3E-14 6.5E-16 ~ 2.3E-14 2.1E-15 ~ 7.2E-113.8E-19 ~ 2.8E-14 1.3E-15 ~ 2.8E-14 2.1E-15 ~ 8.4E-110.0E+00 ~ 2.3E-14 0.0E+00 ~ 2.3E-14 2.1E-15 ~ 7.2E-111.4E-18 ~ 4.9E-14 1.3E-16 ~ 4.9E-14 8.3E-14 ~ 2.8E-108.6E-19 ~ 4.5E-14 1.2E-15 ~ 4.5E-14 7.2E-14 ~ 2.5E-106.8E-19 ~ 5.3E-14 4.5E-15 ~ 5.6E-14 9.3E-14 ~ 3.0E-104.3E-19 ~ 4.5E-14 2.2E-15 ~ 4.5E-14 7.2E-14 ~ 2.5E-101.3E-16 ~ 5.4E-12 1.5E-13 ~ 5.4E-12 1.2E-11 ~ 2.0E-088.2E-17 ~ 5.3E-12 1.1E-13 ~ 5.3E-12 1.2E-11 ~ 2.0E-081.9E-16 ~ 3.8E-12 1.3E-15 ~ 5.6E-12 4.9E-12 ~ 1.2E-114.6E-17 ~ 3.6E-12 1.5E-15 ~ 5.3E-12 5.3E-12 ~ 1.2E-111.5E-16 ~ 1.1E-11 3.1E-13 ~ 1.1E-11 1.8E-11 ~ 2.3E-081.2E-16 ~ 1.1E-11 2.7E-13 ~ 1.1E-11 1.8E-11 ~ 2.3E-082.1E-16 ~ 7.0E-12 4.7E-15 ~ 1.1E-11 1.0E-11 ~ 1.9E-118.5E-17 ~ 6.7E-12 4.8E-15 ~ 1.1E-11 1.0E-11 ~ 1.8E-114.2E-16 ~ 2.4E-11 2.1E-12 ~ 2.4E-11 3.1E-11 ~ 2.9E-081.9E-16 ~ 2.3E-11 5.8E-13 ~ 2.3E-11 3.0E-11 ~ 2.8E-083.0E-16 ~ 1.5E-11 1.9E-14 ~ 2.7E-11 2.3E-11 ~ 3.6E-111.5E-16 ~ 1.3E-11 1.9E-14 ~ 2.3E-11 2.3E-11 ~ 3.0E-114.0E-16 ~ 4.6E-11 2.1E-12 ~ 4.6E-11 5.9E-11 ~ 5.7E-083.9E-16 ~ 4.7E-11 1.5E-12 ~ 4.7E-11 6.0E-11 ~ 5.7E-088.2E-16 ~ 2.7E-11 3.9E-14 ~ 4.7E-11 4.7E-11 ~ 6.1E-113.4E-16 ~ 2.6E-11 3.8E-14 ~ 4.7E-11 4.6E-11 ~ 6.0E-115.7E-16 ~ 9.3E-11 4.1E-12 ~ 9.3E-11 1.1E-10 ~ 9.0E-085.0E-16 ~ 9.4E-11 2.6E-12 ~ 9.4E-11 1.1E-10 ~ 9.0E-081.0E-15 ~ 5.1E-11 9.8E-14 ~ 9.6E-11 9.4E-11 ~ 1.1E-104.6E-16 ~ 5.0E-11 9.7E-14 ~ 9.4E-11 9.4E-11 ~ 1.1E-10

50

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

1000

500

20万

10万

100万

50万

200万

53

Page 55: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.5 つづき. のとき, の真値および計算値 に対する絶対誤差と相対誤差の

最大値・最小値

0.3p = ( ; , )B x n p ˆ( ; , )B x n p

p=0.3n 最小値 最大値 最小値 最大値 最小値 最大値

2.4E-16 ~ 2.4E-10 1.5E-12 ~ 2.5E-10 2.8E-10 ~ 2.4E-075.2E-16 ~ 2.4E-10 3.7E-12 ~ 2.4E-10 2.8E-10 ~ 2.4E-078.6E-17 ~ 1.3E-10 2.5E-13 ~ 2.5E-10 2.4E-10 ~ 2.9E-104.8E-16 ~ 1.3E-10 2.5E-13 ~ 2.4E-10 2.4E-10 ~ 2.8E-107.4E-16 ~ 4.9E-10 6.1E-12 ~ 4.9E-10 5.3E-10 ~ 4.3E-079.0E-16 ~ 4.8E-10 7.2E-12 ~ 4.8E-10 5.3E-10 ~ 4.3E-074.3E-16 ~ 2.6E-10 5.5E-13 ~ 5.0E-10 4.8E-10 ~ 5.4E-108.5E-16 ~ 2.5E-10 5.5E-13 ~ 4.8E-10 4.8E-10 ~ 5.3E-101.5E-15 ~ 9.7E-10 1.4E-11 ~ 9.8E-10 1.0E-09 ~ 8.2E-071.5E-15 ~ 9.7E-10 1.4E-11 ~ 9.7E-10 1.0E-09 ~ 8.2E-071.2E-15 ~ 5.1E-10 1.2E-12 ~ 9.8E-10 9.7E-10 ~ 1.1E-091.5E-15 ~ 5.0E-10 1.2E-12 ~ 9.7E-10 9.7E-10 ~ 1.0E-093.8E-14 ~ 2.8E-09 2.7E-11 ~ 2.8E-09 2.8E-09 ~ 2.1E-063.3E-14 ~ 2.8E-09 2.3E-11 ~ 2.8E-09 2.8E-09 ~ 2.1E-062.6E-14 ~ 1.4E-09 3.6E-12 ~ 2.8E-09 2.8E-09 ~ 2.8E-093.3E-14 ~ 1.4E-09 3.6E-12 ~ 2.8E-09 2.8E-09 ~ 2.8E-096.8E-14 ~ 5.5E-09 4.7E-11 ~ 5.5E-09 5.7E-09 ~ 4.4E-066.6E-14 ~ 5.5E-09 4.4E-11 ~ 5.5E-09 5.7E-09 ~ 4.4E-064.6E-14 ~ 2.8E-09 7.0E-12 ~ 5.5E-09 5.5E-09 ~ 5.7E-096.6E-14 ~ 2.8E-09 7.1E-12 ~ 5.5E-09 5.5E-09 ~ 5.7E-093.2E-11 ~ 2.9E-08 2.2E-08 ~ 2.9E-08 3.0E-08 ~ 2.2E-053.2E-11 ~ 2.9E-08 2.2E-08 ~ 2.9E-08 3.0E-08 ~ 2.2E-053.2E-11 ~ 1.5E-08 3.7E-11 ~ 2.9E-08 2.9E-08 ~ 3.0E-083.2E-11 ~ 1.5E-08 3.7E-11 ~ 2.9E-08 2.9E-08 ~ 3.0E-084.2E-11 ~ 4.1E-08 3.0E-08 ~ 4.1E-08 4.2E-08 ~ 3.1E-054.2E-11 ~ 4.1E-08 3.0E-08 ~ 4.1E-08 4.2E-08 ~ 3.1E-054.2E-11 ~ 2.1E-08 5.4E-11 ~ 4.1E-08 4.1E-08 ~ 4.2E-084.2E-11 ~ 2.1E-08 5.4E-11 ~ 4.1E-08 4.1E-08 ~ 4.2E-085.3E-11 ~ 5.0E-08 3.7E-08 ~ 5.0E-08 5.1E-08 ~ 3.8E-055.3E-11 ~ 5.0E-08 3.7E-08 ~ 5.0E-08 5.1E-08 ~ 3.8E-055.2E-11 ~ 2.5E-08 6.6E-11 ~ 5.0E-08 5.1E-08 ~ 5.1E-085.3E-11 ~ 2.5E-08 6.6E-11 ~ 5.0E-08 5.0E-08 ~ 5.1E-08

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

500万

1000万

2000万

5000万

1億

1億5千万

2億

2億5千万

表 6.5 より,絶対誤差の最大値・最小値については,どの についても方法ⅠからⅣの

間に差はほとんど見られない.下側確率の相対誤差の最小値についてはnが 10 万以上では

方法ⅢあるいはⅣのそれが小さい.下側確率の相対誤差の最大値についてはどの について

も方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最小値については,

どのnについても方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最大

値については, が 10 万以上では方法ⅢあるいはⅣのそれが小さい.絶対誤差の最大値の

n

n

n

54

Page 56: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表から,すべての を通してどの方法も絶対誤差の最大値n 810− 程度を保っていることがわ

かる.

表 6.6. のとき, の真値および計算値 に対する絶対誤差と相対誤差の 0.5p = ( ; , )B x n p ˆ( ; , )B x n p最大値・最小値

p=0.5n 最小値 最大値 最小値 最大値 最小値 最大値

2.4E-21 ~ 8.7E-17 2.9E-18 ~ 9.9E-17 0.0E+00 ~ 8.5E-142.4E-21 ~ 2.4E-16 2.9E-18 ~ 5.6E-16 0.0E+00 ~ 8.5E-142.4E-21 ~ 8.7E-17 2.9E-18 ~ 9.9E-17 0.0E+00 ~ 8.5E-142.4E-21 ~ 2.4E-16 2.9E-18 ~ 5.6E-16 0.0E+00 ~ 8.5E-143.6E-18 ~ 4.1E-16 3.6E-18 ~ 1.4E-13 0.0E+00 ~ 7.8E-133.4E-18 ~ 1.9E-16 3.6E-18 ~ 1.4E-13 0.0E+00 ~ 7.8E-136.3E-20 ~ 4.1E-16 3.6E-18 ~ 1.0E-15 0.0E+00 ~ 7.8E-132.8E-19 ~ 1.9E-16 3.6E-18 ~ 1.4E-15 0.0E+00 ~ 7.8E-132.5E-18 ~ 1.2E-16 2.5E-18 ~ 3.4E-14 0.0E+00 ~ 1.6E-132.5E-18 ~ 5.1E-16 2.5E-18 ~ 3.6E-14 0.0E+00 ~ 1.6E-131.9E-18 ~ 1.2E-15 2.5E-18 ~ 2.8E-15 0.0E+00 ~ 1.6E-131.5E-18 ~ 5.1E-16 2.5E-18 ~ 1.7E-15 0.0E+00 ~ 1.6E-136.5E-17 ~ 5.2E-14 1.2E-16 ~ 1.2E-13 5.4E-14 ~ 7.4E-136.7E-17 ~ 5.4E-14 1.2E-16 ~ 1.2E-13 5.4E-14 ~ 7.4E-138.9E-17 ~ 4.1E-14 1.2E-16 ~ 9.2E-14 5.4E-14 ~ 7.4E-131.1E-16 ~ 5.4E-14 1.2E-16 ~ 1.2E-13 5.4E-14 ~ 7.4E-139.3E-18 ~ 7.4E-15 9.3E-18 ~ 2.2E-13 0.0E+00 ~ 5.3E-149.3E-18 ~ 9.7E-15 9.3E-18 ~ 2.2E-13 0.0E+00 ~ 5.3E-147.3E-19 ~ 1.3E-15 9.3E-18 ~ 3.1E-15 0.0E+00 ~ 5.3E-144.5E-18 ~ 9.7E-15 9.3E-18 ~ 2.2E-14 0.0E+00 ~ 5.3E-141.1E-17 ~ 2.9E-14 9.1E-17 ~ 6.5E-14 0.0E+00 ~ 7.0E-131.8E-17 ~ 3.4E-14 9.1E-17 ~ 7.7E-14 0.0E+00 ~ 7.0E-132.0E-17 ~ 1.6E-14 2.0E-17 ~ 3.5E-14 0.0E+00 ~ 7.0E-132.0E-17 ~ 3.4E-14 2.0E-17 ~ 7.7E-14 0.0E+00 ~ 7.0E-133.5E-17 ~ 3.3E-14 3.5E-17 ~ 1.2E-13 0.0E+00 ~ 7.7E-143.5E-17 ~ 4.1E-14 3.5E-17 ~ 1.2E-13 0.0E+00 ~ 9.0E-148.4E-18 ~ 4.1E-15 5.2E-17 ~ 9.6E-15 0.0E+00 ~ 1.3E-145.9E-17 ~ 4.1E-14 5.9E-17 ~ 8.8E-14 0.0E+00 ~ 9.0E-142.6E-17 ~ 7.1E-14 2.6E-17 ~ 1.8E-13 8.2E-14 ~ 1.5E-131.4E-16 ~ 8.8E-14 1.4E-16 ~ 1.9E-13 8.2E-14 ~ 1.8E-137.7E-17 ~ 2.7E-14 8.5E-17 ~ 5.7E-14 4.7E-14 ~ 8.2E-142.6E-17 ~ 8.8E-14 2.6E-17 ~ 1.8E-13 8.2E-14 ~ 1.8E-13

50

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

1000

500

20万

10万

100万

50万

200万

55

Page 57: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.6 つづき. のとき, の真値および計算値 に対する絶対誤差と相対誤差の

最大値・最小値

0.5p = ( ; , )B x n p ˆ( ; , )B x n p

p=0.5n 最小値 最大値 最小値 最大値 最小値 最大値

3.3E-16 ~ 1.0E-13 4.7E-16 ~ 2.4E-13 8.1E-14 ~ 2.4E-133.4E-16 ~ 1.2E-13 4.7E-16 ~ 2.5E-13 8.1E-14 ~ 2.4E-131.4E-16 ~ 5.5E-14 3.6E-16 ~ 1.1E-13 8.1E-14 ~ 1.1E-133.0E-16 ~ 1.2E-13 4.7E-16 ~ 2.4E-13 8.1E-14 ~ 2.4E-138.1E-16 ~ 2.9E-13 8.9E-16 ~ 6.0E-13 8.0E-14 ~ 5.8E-138.5E-16 ~ 3.2E-13 8.9E-16 ~ 6.4E-13 8.0E-14 ~ 6.4E-135.2E-16 ~ 2.0E-13 5.6E-16 ~ 4.0E-13 8.0E-14 ~ 4.0E-138.2E-16 ~ 3.2E-13 8.9E-16 ~ 6.4E-13 8.0E-14 ~ 6.4E-139.6E-16 ~ 3.7E-13 9.6E-16 ~ 7.7E-13 7.3E-13 ~ 7.5E-131.1E-15 ~ 4.2E-13 1.1E-15 ~ 8.3E-13 7.3E-13 ~ 8.3E-136.2E-16 ~ 2.3E-13 6.3E-16 ~ 4.6E-13 0.0E+00 ~ 4.7E-131.1E-15 ~ 4.2E-13 1.1E-15 ~ 8.3E-13 7.3E-13 ~ 8.3E-134.1E-15 ~ 1.5E-12 4.3E-15 ~ 3.0E-12 2.9E-12 ~ 3.0E-124.1E-15 ~ 1.5E-12 4.3E-15 ~ 3.1E-12 2.9E-12 ~ 3.1E-123.4E-15 ~ 1.3E-12 3.6E-15 ~ 2.5E-12 2.2E-12 ~ 2.5E-124.1E-15 ~ 1.5E-12 4.3E-15 ~ 3.1E-12 2.9E-12 ~ 3.1E-127.0E-15 ~ 2.6E-12 7.5E-15 ~ 5.3E-12 5.0E-12 ~ 5.3E-127.2E-15 ~ 2.7E-12 7.6E-15 ~ 5.5E-12 5.0E-12 ~ 5.5E-126.0E-15 ~ 2.3E-12 6.4E-15 ~ 4.6E-12 4.3E-12 ~ 4.6E-127.2E-15 ~ 2.7E-12 7.6E-15 ~ 5.5E-12 5.0E-12 ~ 5.5E-122.4E-21 ~ 8.7E-17 2.9E-18 ~ 9.9E-17 0.0E+00 ~ 8.5E-142.4E-21 ~ 2.4E-16 2.9E-18 ~ 5.6E-16 0.0E+00 ~ 8.5E-142.4E-21 ~ 8.7E-17 2.9E-18 ~ 9.9E-17 0.0E+00 ~ 8.5E-142.4E-21 ~ 2.4E-16 2.9E-18 ~ 5.6E-16 0.0E+00 ~ 8.5E-146.8E-11 ~ 2.5E-08 7.0E-11 ~ 5.1E-08 5.1E-08 ~ 5.1E-086.8E-11 ~ 2.5E-08 7.0E-11 ~ 5.1E-08 5.1E-08 ~ 5.1E-086.6E-11 ~ 2.5E-08 6.8E-11 ~ 4.9E-08 4.9E-08 ~ 4.9E-086.8E-11 ~ 2.5E-08 7.0E-11 ~ 5.1E-08 5.1E-08 ~ 5.1E-086.7E-11 ~ 2.5E-08 6.7E-11 ~ 4.9E-08 4.9E-08 ~ 4.9E-086.7E-11 ~ 2.5E-08 6.7E-11 ~ 4.9E-08 4.9E-08 ~ 4.9E-086.7E-11 ~ 2.5E-08 6.7E-11 ~ 4.9E-08 4.9E-08 ~ 4.9E-086.7E-11 ~ 2.5E-08 6.7E-11 ~ 4.9E-08 4.9E-08 ~ 4.9E-08

絶対誤差 相対誤差(下側確率) 相対誤差(上側確率)

500万

1000万

2000万

5000万

1億

1億5千万

2億

2億5千万

表 6.6 より,絶対誤差の最大値・最小値については,どの についても方法ⅠからⅣの

間に差はほとんど見られない.下側確率の相対誤差の最小値についてはどの についても方

法ⅠからⅣの間に差はほとんど見られない.下側確率の相対誤差の最大値については nが100 万以下では方法ⅢまたはⅣのそれが小さい.上側確率の相対誤差の最小値については,

どのnについても方法ⅠからⅣの間に差はほとんど見られない.上側確率の相対誤差の最大

値については,どの についても方法ⅠからⅣの間に差はほとんど見られない.絶対誤差の

最大値の表から,すべての を通してどの方法も絶対誤差の最大値

nn

nn 810− 程度を保っている

56

Page 58: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

ことがわかる.

表 6.1 から 6.6 における議論をまとめると,方法Ⅰ,Ⅱは同等,方法Ⅲ,Ⅳは同等であ

る.ここでは”和の計算は小さい方の項から順に加える”という数値計算の常識に従って,

方法ⅠとⅡでは方法Ⅰを,方法ⅢとⅣでは方法Ⅲを採用する.下側確率の絶対誤差の最大

値および下側確率の絶対誤差の最大値からは判断すると,方法Ⅰと方法Ⅲの間に差はみら

れない.上側確率の相対誤差の最大値からは判断すると,方法Ⅰより方法Ⅲの方が良い.

この段階ではやや方法Ⅲの方がよいという程度でしか判断できない.

数値実験 6.1 では絶対誤差や相対誤差を基に方法Ⅰ,Ⅱ,Ⅲ,Ⅳのどれが良いかを調べ

た.その結果,方法Ⅰと方法Ⅲの優劣を判断すればよいことになった.次の数値実験 6.2

では,計算時間に着目して方法Ⅰと方法Ⅲの比較を行う.

数値実験 6.2. 方法Ⅰと方法Ⅲについて精度と計算時間を基準にして両方法の優劣を比較

する. pが , 0.001, 0.01, 0.1, 0.5 の場合と が 20,50,100,200,500,千,2 千,5 千,1

万,2万,5万,10万,20万,50万,100万,200万,500万,1千万,2千万,5千万,1億,1億5千万,2

億 ,2 億 5 千 万 の 場 合 を 組 み 合 わ せ た そ れ ぞ れ の 場 合 に お い て ,

610 − n

max{0,[ 0.5]}x z npq npα= + − に対して,方法ⅠとⅢで2項確率分布関数の値 ( ; , )B x n p

を計算した.ここに,[* はガウス記号,] zα は標準正規分布の下側100α %点である.本実

験では, 0.05α = , zα =-1.644853626951472 とする.分布関数の真値として Maple による

計算値を使用する.Maple には計算可能な に限界があるため,nの値は 2億 5千万までと

した.計算回数は,方法Ⅰでは と のそれぞれの組み合わせに対して 10000 回であり,

方法Ⅲではいずれの についても 100 回である.相対誤差の計算では Maple で計算した2

項確率の値を真値としている.ただし,Maple による計算では,浮動小数点近似による確率

関数の和を計算している.確率関数の各項の計算は第4節で用いた Maple による方法と同

じである.

np n

p

ここで計算時間とは,同じ計算を繰り返した際の平均計算時間のことをいう.計算回数

が多いのは計算時間の測定のためであり,相対誤差を求める際は1回のみの計算となる.

数値実験 6.3 と 6.4 においても同様の表現を用いることにする.

数値実験 6.2 の結果. 表 6.7 の各セルの上段の数値は,固定した に対して,5通りの

について相対誤差の絶対値を求め,その中の最大値を表したものである.表中の各セルの

下段の数値は相対誤差の絶対値を求めた際の計算時間のうち最大のもの(単位ミリ秒)を表

す.

n p

57

Page 59: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

表 6.7. モグラ算術による2項確率の計算値の相対誤差の最大値と計算時間(単位ミリ秒)の最大値.

n 20 50 100 200 500 1000 2000 5000

7.2E-16 2.1E-15 4.5E-15 9.0E-15 2.1E-14 4.3E-14 8.4E-14 2.5E-130.01 0.01 0.07 0.10 0.21 0.38 0.71 1.68

7.2E-16 2.1E-15 4.5E-15 9.0E-15 2.1E-14 4.3E-14 8.4E-14 2.5E-130.14 0.19 0.58 1.15 2.50 4.89 17.35 46.87

方法Ⅰ

方法Ⅲ

n 1万 2万 5万 10万 20万 50万 100万 200万

5.0E-13 1.0E-12 2.1E-12 4.2E-12 8.4E-12 2.2E-11 4.4E-11 8.8E-113.29 6.43 15.81 15.96 13.92 15.95 3.22 33.44

5.0E-13 1.0E-12 2.2E-12 4.3E-12 8.6E-12 2.3E-11 4.5E-11 9.0E-1199.38 217.97 554.37 478.75 472.18 491.88 293.60 1484.69

方法Ⅰ

方法Ⅲ

n 500万 1千万 2千万 5千万 1億 1億5千万 2億 2億5千万

2.6E-10 5.2E-10 1.0E-09 2.2E-09 4.4E-09 2.6E-08 5.1E-08 4.9E-0815.82 16.96 46.12 20.41 28.88 41.46 46.20 64.06

2.6E-10 5.2E-10 1.0E-09 2.2E-09 4.4E-09 2.6E-08 4.9E-08 4.9E-081031.56 1220.16 2187.50 3248.28 4124.53 5170.31 4991.41 5265.94

方法Ⅰ

方法Ⅲ

表 6.7 より,方法Ⅰと方法Ⅲの間の精度には大差がないが計算時間には大きな差があるこ

とがわかる.したがって,2項確率分布関数の計算方法として方法Ⅰを採用する.ただし,

数値実験 6.1 で述べたように, の値によっては方法Ⅰより方法Ⅲで算出した上側確率値の

相対誤差の方が小さい.計算時間は問題ではなく,より精度のよい上側確率の値を求めたい

ときは方法Ⅲも十分有効である.

p

(注 6.1)数値実験 6.2 では, zα = -1.644853626951472 の場合の計算結果について述べた.

付 録 CD-ROM に は , 1.644853626951472 ,zα = zα = -2.326347874040841 , zα =

-1.959963984540054 にて対して,真値 ( ; , )B x n p に対する計算値 ˆ( ; , )B x n p の絶対誤差,相対誤

差の詳細な数値表を載せている.

(注 6.2) 表 6.7 では,nが大きくなるにつれておおむね計算時間も増加することが予想さ

れる.しかし, =100 万のときは, =50 万のときより計算時間が短いなど部分的に計算時

間が減少している場合が見られる.表中,方法Ⅰの =50 万, =100 万のときは,それぞれ

,B の計算時間であり,同じ 値での算出値ではない.

そこで,同じ 値どうしで計算時間を比較すると, に 15.95 ミリ秒,

に 1.49 ミリ秒であり,やはり は大きくなっても計算時間は逆に小さくな

っている.このような逆転現象は以下に述べる事情のために起こるものである.

n nn n

5ˆ (49650;5 10 ,0.1)B × 6ˆ (9835;10 ,0.01) p

p 5ˆ (49650;5 10 ,0.1)B ×6ˆ (99506;10 ,0.1)B n

5ˆ (49650;5 10 ,0.1)B × と について,方法Ⅰで計算したときの の

決定, の計算(DS 法)での , ,( )

6ˆ (99506;10 ,0.1)B ,U UL R

nCx !n !x !n x− , !( )!x n x− , !/( !( )!)n x n x− の計算,x n rp q −

の計算,項の和の計算に要する時間を別々に測定すると以下のような結果となる.(なお,

58

Page 60: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

別々に測定した結果なので,計算時間合計は上記よりも大きい値となっている.)

5ˆ (49650;5 10 ,0.1)B × 6ˆ (99506;10 ,0.1)B

計算時間 計算時間

求めるもの (単位ミリ秒) 計算回数 求めるもの (単位ミリ秒) 計算回数 ---------------------------------------- --------------------------------------

0.00 100 0.00 100 UL UL UR 0.00 100 UR 0.00 100

=500000! 0.00 100 =1000000! 0.00 100 !n !n =48237! 10.00 100 =97507! 0.63 100 !x !x =451763! 10.78 100 (n x− )! )!(n x− =902493! 0.46 100

!( )!x n x− 0.00 100 !( )!x n x− 0.00 100

0.00 100 !/( !( )!)n x n x− !/( !( )!)n x n x− 0.00 100

(nCx (DS 法)計 20.78 ) ( nCx (DS 法) 計 1.09 )

x n rp q −

0.00 100 x n rp q −

0.00 100

1414 項の和 0.47 100 2000 項の和 0.63 100 ---------------------------------------- --------------------------------------

計算時間合計 21.25 計算時間合計 1.72

上記の計算時間を見るとわかるように, と のいず

れの場合にも,計算時間の大半は2項係数 の計算に費やされている.階乗計算でのデー

タベース使用のルールより, =48237!の計算には 1から 48237 までの 48237 回の積算が必要

となるが, =97507!の計算には10万から97507までの2493回の除算のみが必要となるため,

前者の方により時間がかかることになる.同様に,451763!には 51763 回の積算,902493!に

は 2493 回の積算が必要となるため,ここでも前者の方により時間がかかることになる.項の

和の計算では, では,実際に 1414 項の和を求め, で

は,実際に 2000 項の和を求めているので,後者の方により時間がかかることになる.結局,

2項係数 の計算時間の違いの方が大きいためにこのような逆転現象が見られたのである.

5ˆ (49650;5 10 ,0.1)B × 6ˆ (99506;10 ,0.1)B

nCx!x

!x

5ˆ (49650;5 10 ,0.1)B × 6ˆ (99506;10 ,0.1)B

nCx

(注 6.3) Maple による分布関数 ( ; , )B x n p の計算では,標準関数 binomial()を用いたステ

ートメント(stats[statevalf,dcdf,binomial[n,p]](x))を用いるのが普通であろう.しか

し , が 大 き い と き に は こ の 標 準 関 数 は 正 し く 作 動 し な い . 例 え ば ,

では誤った値を算出する.このような理由のため,数値実験 6.1

以降の実験ではこのステートメントによる方法を用いずに別途プログラムを作成して計算し

た.

n5000, 2000, 0.5n x p= = =

Maple で浮動小数点近似で計算した場合の計算時間は やn pの値によって異なる.数値実験

6.2に対応する やn pのいくつかの場合についてのMapleによる ( ; , )B x n p の計算時間は以下

59

Page 61: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

の通りである(単位秒).ただし,すべて Athlon2800 が装着されたパソコンによる計算結果

である.

=0.001 =0.010 =0.100 =0.500 n p p p p ------------------------------------------------------------

1 万 0.000 0.000 0.089 0.390

10 万 0.000 0.060 0.770 4.034

100 万 0.080 0.790 8.241 40.708

1 千万 0.780 8.170 83.029 408.359

1 億 8.161 84.100 836.341 3871.469

2 億 19.837 169.964 1603.916 7843.611

2 億 5 千万 24.634 216.722 2044.072 9645.260

------------------------------------------------------------

これを見ると, の値によって同じ の大きさでも計算時間には大きく差があることが

見られる.さらに,nが大きくなるにしたがって計算時間は増大する(例えば,

の算出に約1時間かかる)ので,計算可能な最大の を特定することは実質的に困難である.

しかし,第4節では が約 2億 5千万までは Maple によって計算可能であった事より,分布

関数の計算においてもn =約 2 億 5 千万までの Maple による値を真値として用意することと

した.

p n8( ;10 ,0.5)B x

nn

(注 6.4) 方法Ⅲ,方法Ⅳについても方法Ⅰや方法Ⅱで見られたような計算時間の逆転現象

が見られる.方法Ⅲのn =50 万の場合と =100 万の場合を同じn p値について計算時間を比較

しよう.

5ˆ (49650;5 10 ,0.1)B × と について,方法Ⅲで計算したときの の

決定, の計算(DS 法)での , ,( )

6ˆ (99506;10 ,0.1)B ,B BL R

nCx !n !x !n x− , !( )!x n x− , !/( !( )!)n x n x− の計算,x n rp q −

の計算,項の和の計算に要する時間を別々に測定すると以下のような結果となる.

5ˆ (49650;5 10 ,0.1)B × 6ˆ (99506;10 ,0.1)B

計算時間 計算時間

求めるもの (単位ミリ秒) 計算回数 求めるもの (単位ミリ秒) 計算回数 ---------------------------------------- --------------------------------------

210.47 100 75.31 100 BL BL BR 242.18 100 BR 106.10 100

=500000! 0.00 100 =1000000! 0.00 100 !n !n =42241! 8.44 100 =88946! 2.34 100 !x !x =457759! 9.22 100 (n x− )! )!(n x− =911054! 2.19 100

!( )!x n x− 0.00 100 !( )!x n x− 0.00 100

60

Page 62: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

0.00 100 !/( !( )!)n x n x− !/( !( )!)n x n x− 0.00 100

(nCx (DS 法)計 17.66 ) ( nCx (DS 法) 計 4.53 )

x n rp q −

0.00 100 x n rp q −

0.00 100

7410 項の和 2.50 100 10561 項の和 3.44 100 ---------------------------------------- --------------------------------------

計算時間合計 472.81 計算時間合計 189.53

上記の計算時間を見るとわかるように, と のいず

れの場合にも,計算時間の大半は二分法を用いた の計算に費やされており,2項係数

の割合は少ない.数値実験 6.2 で見られたような2項係数の計算時間での逆転も見られ

るし, の計算時間での逆転が見られることがわかる.

5ˆ (49650;5 10 ,0.1)B × 6ˆ (99506;10 ,0.1)B

,B BL R

nCx,B BL R

数値実験 6.3. 数値実験 6.2 において2項確率 ( ; , )B x n p の値の計算法として方法Ⅰが提

案された.この方法の精度の良さ具合を調べるのが本実験の目的である.そのために,2

項確率近似法としてよく知られているポアソン近似や Peizer-Pratt の近似で算出される確

率値の相対誤差や計算時間を基準にして比較検討する.2項確率 ( ; , )B x n p の真値は,数値

実験 6.1 と同様に Maple で算出した値を採用する.Molenaar のポアソン近似

(Molenaar(1970,p107))とは

2ˆ ( ; , ) 1

2! !

x

MB x n p ex

λ λ λλ− ⎛ ⎞= + + + +⎜ ⎟

⎝ ⎠,

((12 2 ) 7 )((12 8 ) / )

p n x npp n x x n

λ − −=

− − +

である.Peizer-Pratt の近似(Peizer and Pratt(1968))とは

ˆ ( ; , ) ( ( , , ))PB x n p z x n p= Φ ,

1/ 2( , , ) 12 0.5 0.5( , , ) ( 0.5) log ( 0.5) log0.5 1 6

d x n p n x n xz x n p x n xx np n np nq

⎡ ⎤+ −= + + − −

−⎢ ⎥+ − + ⎣ ⎦

2 1 0.5( , , ) 0.023 3 1 1

q p pd x n p x n px n x n

−⎛ ⎞ ⎛= + − + + − +⎜ ⎟ ⎜ + − +⎝ ⎠ ⎝⎞⎟⎠

である.ここに は標準正規分布関数である. ( )zΦ

本実験では n 20,50,100,200,500,1000,2000,5000,1万,2万,5万,10万,20万,50万,100

万,200万,500万,1千万,2千万,5千万,1億,1億 5千万,2億,2億 5千万,

=

p = 610 − ,0.001,

0.01,0.1,0.5 の各場合に対して2項確率 ( ; , )B x n p の値を計算する. が大きいとき,対

象 と な る の 個 数 が 非 常 に 多 く な る . こ こ で は , あ る 特 別 な 点

nx

x = max{ 0, [ 0.5]z npq npα + − ( ; , )}での値B x n p についてのみ計算する.ここには zα は

標準正規分布の上側100 %α 点である.本実験では,α = 0.05, zα = − 1.644853626951472

61

Page 63: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

とする.分布関数の真値として Maple による計算値を使用するが,Maple には計算可能な

に限界があるため, の値は 2 億 5 千万までとした.計算回数は,方法Ⅰ,ポアソン近似,

Peizer-Pratt の近似ともに

nn

pとnのそれぞれの組み合わせに対して 10000 回である.

(注 6.5)方法Ⅰについてはモグラ算術を用いている.一方,Poisson 近似はモグラ算術で

はなく,通常の Cプログラミングによる倍精度計算をおこなっている.Poisson 近似の値は

モグラ算術で実行することは可能であるが本論では議論しない.その理由は,Poisson 近似

法を通常の C プログラムで実行するとき,どのようなとき計算不能になるかとか,その計

算値がどの程度の精度になるかを調べるためである.以下の表 6.8 から表 6.13 においては,

計算不可能な場合は表中のセルを空白とした.なお,Peizer-Pratt の近似は正規確率値を

必要とするが,正規確率の計算も含めて,通常の C プログラミングによる倍精度計算をお

こなっている.

数値実験 6.3 の結果.

(1) のとき,上記の各 について,方法Ⅰ,Poisson 近似,Peizer-Pratt の近似各

方法での計算値の相対誤差の絶対値および計算時間を表 6.8 に示す.

610p −= n

表 6.8. のとき,3つの方法での計算値の相対誤差および計算時間.各セルにおいて上段が

相対誤差の絶対値,下段が計算時間(単位ミリ秒)を表す.

610p −=

n 20 50 100 200 500 1000 2000 50007.2E-16 1.8E-15 3.5E-15 7.0E-15 1.8E-14 3.7E-14 7.3E-14 2.5E-13

0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.010.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0015 0.0016 0.0015 0.0000 0.0000 0.0000 0.0000 0.00002.4E-06 7.7E-06 1.6E-05 3.3E-05 7.9E-05 1.5E-04 2.7E-04 5.7E-040.0015 0.0016 0.0016 0.0031 0.0016 0.0016 0.0015 0.0016

n 1万 2万 5万 10万 20万 50万 100万 200万5.0E-13 1.0E-12 1.9E-12 3.8E-12 7.6E-12 1.8E-11 3.6E-11 7.2E-11

0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.010.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0000 0.0000 0.0000 0.0015 0.0016 0.0016 0.0015 0.00169.4E-04 1.4E-03 2.0E-03 1.8E-03 5.8E-04 1.8E-01 9.9E-03 1.7E-020.0015 0.0015 0.0032 0.0015 0.0016 0.0016 0.0031 0.0016

n 500万 1千万 2千万 5千万 1億 1億5千万 2億 2億5千万2.6E-10 5.2E-10 1.0E-09 2.2E-09 4.4E-09 6.9E-09 8.9E-09 1.0E-08

0.02 0.02 0.02 0.03 0.07 0.08 0.10 0.127.7E-16 1.3E-15 2.3E-15 2.7E-15 8.5E-15 8.6E-15 9.6E-15 1.5E-140.0016 0.0015 0.0031 0.0234 0.0969 0.2281 0.4188 0.67032.7E-02 7.1E-04 1.1E-04 2.0E-05 4.6E-06 2.4E-06 1.5E-06 1.0E-060.0016 0.0015 0.0031 0.0016 0.0015 0.0016 0.0031 0.0015

方法Ⅰ

Poisson近似

Peizer-Pratt近似

方法Ⅰ

Poisson近似

Peizer-Pratt近似

方法Ⅰ

Poisson近似

Peizer-Pratt近似

表 6.8 より, p = 610 − のときは,すべてのnについてポアソン近似の精度の良さが見て

取れる.ポアソン近似は,nが 2 億 5 千万のときでも 1410− のオーダーの精度を保持してい

る.ポアソン近似以外では が 2 億 5 千万のとき,方法Ⅰはn 810− のオーダーの精度,

Peizer-Pratt の近似は のオーダーの精度をもつことがわかる.よって,610− p = 610 − のと

62

Page 64: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

きはポアソン近似の精度ほどではないが,方法Ⅰの精度はそれほど低くはないことがわか

る.

(2) のとき,上記の各 について,方法Ⅰ,Poisson 近似,Peizer-Pratt の近似

各方法での計算値の相対誤差の絶対値および計算時間を表 6.9 に示す.

0.001p = n

表 6.9. のとき,3つの方法での計算値の相対誤差の絶対値および計算時間.各セルにおいて 0.001p =上段が相対誤差,下段が計算時間(単位ミリ秒)を表す.計算不可能な場合は表中のセルを

空白とした.

n 20 50 100 200 500 1000 2000 50002.6E-16 3.2E-16 6.4E-16 1.1E-15 4.5E-15 9.2E-15 1.8E-14 8.9E-14

0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.015.6E-13 1.4E-12 2.8E-12 5.6E-12 1.4E-11 2.8E-11 5.6E-11 1.4E-100.0015 0.0000 0.0000 0.0000 0.0015 0.0016 0.0016 0.00151.3E-03 1.9E-03 1.8E-03 5.8E-04 1.8E-01 9.9E-03 1.7E-02 2.7E-020.0016 0.0016 0.0031 0.0016 0.0016 0.0031 0.0016 0.0015

n 1万 2万 5万 10万 20万 50万 100万 200万1.8E-13 3.6E-13 3.2E-13 6.4E-13 1.2E-12 2.4E-12 4.8E-12 9.6E-12

0.01 0.01 0.02 0.06 0.09 0.19 0.35 0.661.0E-10 9.6E-11 1.1E-10 9.7E-11 1.0E-10 1.0E-10 0.0E+00 0.0E+000.0016 0.0046 0.0219 0.0984 0.4250 2.8219 0.0000 0.00007.2E-04 1.1E-04 2.0E-05 4.7E-06 1.5E-06 3.4E-07 1.1E-07 3.8E-080.0015 0.0032 0.0015 0.0016 0.0016 0.0015 0.0016 0.0016

n 500万 1千万 2千万 5千万 1億 1億5千万 2億 2億5千万8.2E-11 1.6E-10 3.3E-10 1.4E-11 2.8E-11 2.7E-09 5.5E-11 2.0E-09

1.59 3.17 7.53 18.90 23.25 41.46 46.20 64.060.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.00009.1E-09 1.8E-09 8.8E-10 4.0E-09 6.1E-09 8.2E-09 8.3E-09 3.5E-080.0015 0.0031 0.0016 0.0015 0.0016 0.0031 0.0015 0.0016

Peizer-Pratt近似

Poisson近似

Peizer-Pratt近似

方法Ⅰ

Poisson近似

方法Ⅰ

Poisson近似

Peizer-Pratt近似

方法Ⅰ

表 6.9 より, 0.001 のときは,ポアソン近似の計算が不可能となるのは が 50 万よ

り大きいときである.計算可能な範囲内の精度のみを見ても,ポアソン近似は が 50 万の

ときでも のオーダーの精度であり,これに対して方法Ⅰは

p = nn

1010− 1210− のオーダーの精度を

保持することがわかる.さらに,nが 2億 5千万のとき,方法Ⅰは 910− のオーダーの精度,

Peizer-Pratt の近似は のオーダーの精度をもっている.よって,810− p = 0.001 のときは

方法Ⅰが最も高い精度を保持することがわかる.

63

Page 65: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(3) のとき,上記の各 について,方法Ⅰ,Poisson 近似,Peizer-Pratt の近似

各方法での計算値の相対誤差の絶対値および計算時間を表 6.10 に示す.

0.01p = n

表 6.10. のとき,3つの方法での計算値の相対誤差および計算時間.各セルにおいて上段が 0.01p =相対誤差の絶対値,下段が計算時間(単位ミリ秒)を表す.計算不可能な場合は表中のセル

を空白とした.

n 20 50 100 200 500 1000 2000 50001.1E-16 2.1E-15 4.5E-15 9.0E-15 2.1E-14 4.3E-14 8.4E-14 3.6E-14

0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.025.7E-09 1.4E-08 2.8E-08 5.7E-08 1.4E-07 1.1E-07 9.8E-08 1.1E-070.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0031 0.02196.1E-04 1.7E-01 1.0E-02 1.7E-02 2.7E-02 7.7E-04 1.3E-04 2.4E-050.0016 0.0015 0.0016 0.0016 0.0015 0.0032 0.0015 0.0016

n 1万 2万 5万 10万 20万 50万 100万 200万9.7E-14 1.9E-13 2.1E-12 4.2E-12 8.4E-12 2.2E-11 4.4E-11 8.8E-11

3.19 6.33 15.64 0.34 0.67 1.63 3.22 6.329.8E-08 1.0E-07 1.1E-07 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0984 0.4172 2.8172 0.0000 0.0000 0.0000 0.0000 0.00005.6E-06 1.8E-06 4.2E-07 1.4E-07 4.5E-08 1.1E-08 4.0E-09 1.5E-090.0015 0.0032 0.0015 0.0015 0.0016 0.0016 0.0031 0.0016

n 500万 1千万 2千万 5千万 1億 1億5千万 2億 2億5千万1.9E-11 3.7E-11 7.5E-11 1.6E-10 3.3E-10 2.4E-09 3.5E-10 1.5E-08

15.82 16.96 46.12 3.73 5.26 6.42 7.40 8.260.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.00007.1E-10 8.8E-10 2.1E-10 7.1E-10 2.1E-09 2.1E-09 1.7E-08 3.1E-080.0016 0.0015 0.0032 0.0015 0.0015 0.0016 0.0016 0.0031

Peizer-Pratt近似

Poisson近似

Peizer-Pratt近似

方法Ⅰ

Poisson近似

方法Ⅰ

Poisson近似

Peizer-Pratt近似

方法Ⅰ

表 6.10 より, p = 0.01 のときは,ポアソン近似の計算が不可能となるのはnが 5万より

大きいときである.計算可能な範囲内の精度のみを見ても,ポアソン近似は が 5万のとき

でも のオーダーの精度であり,これに対して方法Ⅰは

n710− 1210− のオーダーの精度を保持す

ることがわかる.さらに, が 2 億 5 千万のとき,方法Ⅰはn 810− のオーダーの精度,

Peizer-Pratt の近似は のオーダーの精度をもっている.よって,810− p = 0.01 のときは方

法Ⅰが最も高い精度を保持することがわかる.

64

Page 66: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(4) のとき,上記の各 について,方法Ⅰ,Poisson 近似,Peizer-Pratt の近似各

方法での計算値の相対誤差の絶対値および計算時間を表 6.11 に示す.

0.1p = n

表 6.11. のとき,3つの方法での計算値の相対誤差および計算時間.各セルにおいて上段が 0.1p =相対誤差の絶対値,下段が計算時間(単位ミリ秒)を表す.計算不可能な場合は表中のセルを空

白とした. n 20 50 100 200 500 1000 2000 5000

6.2E-17 1.9E-16 2.2E-16 1.6E-16 2.1E-15 1.4E-15 2.3E-15 8.8E-150.01 0.01 0.01 0.01 0.02 0.36 0.70 1.65

6.7E-05 1.1E-04 1.3E-04 1.2E-04 1.2E-04 1.2E-04 1.2E-04 1.2E-040.0016 0.0016 0.0000 0.0031 0.0218 0.0984 0.4235 2.84222.0E-02 6.0E-03 1.3E-03 2.6E-04 4.4E-05 1.4E-05 4.2E-06 9.8E-070.0016 0.0016 0.0015 0.0032 0.0015 0.0015 0.0016 0.0031

n 1万 2万 5万 10万 20万 50万 100万 200万3.5E-14 3.3E-14 1.5E-13 2.9E-13 5.7E-13 1.1E-12 2.6E-12 4.7E-12

3.23 6.39 15.75 3.23 6.41 15.95 1.49 33.440.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.00003.2E-07 1.1E-07 2.8E-08 9.7E-09 3.4E-09 8.4E-10 3.4E-10 7.8E-110.0016 0.0016 0.0016 0.0031 0.0032 0.0015 0.0015 0.0016

n 500万 1千万 2千万 5千万 1億 1億5千万 2億 2億5千万1.7E-11 3.4E-11 6.8E-11 1.8E-11 3.5E-11 7.3E-09 1.0E-08 1.2E-08

3.25 4.57 7.06 11.13 15.73 21.24 24.52 27.430.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.00002.7E-11 5.5E-10 8.3E-10 4.2E-09 1.1E-08 4.2E-09 1.7E-08 3.5E-090.0031 0.0016 0.0016 0.0016 0.0015 0.0016 0.0015 0.0015

Peizer-Pratt近似

Poisson近似

Peizer-Pratt近似

方法Ⅰ

Poisson近似

方法Ⅰ

Poisson近似

Peizer-Pratt近似

方法Ⅰ

表 6.11 より, p = 0.1 のときは,ポアソン近似の計算が不可能となるのは が 5000 より

大きいときである.計算可能な範囲内の精度のみを見ても,ポアソン近似はnが 5000 のと

きでも のオーダーの精度であり,これに対して方法Ⅰは

n

410− 1510− のオーダーの精度を保持

することがわかる.さらに, が 2 億 5 千万のとき,方法Ⅰはn 810− のオーダーの精度,

Peizer-Pratt の近似は のオーダーの精度をもっている.よって,910− p = 0.1 のときは方

法Ⅰが最も高い精度を保持することがわかる.

65

Page 67: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

(5) のとき,上記の各nについて,方法Ⅰ,Poisson 近似,Peizer-Pratt の近似各

方法での計算値の相対誤差の絶対値および計算時間を表 6.12 に示す.

0.5p =

表 6.12. のとき,3つの方法での計算値の相対誤差および計算時間.各セルにおいて上段が 0.5p =相対誤差の絶対値,下段が計算時間(単位ミリ秒)を表す.計算不可能な場合は表中のセルを空

白とした. n 20 50 100 200 500 1000 2000 5000

0.0E+00 0.0E+00 1.6E-16 0.0E+00 0.0E+00 5.9E-16 1.9E-15 5.2E-150.01 0.01 0.07 0.10 0.20 0.37 0.71 1.67

3.6E-02 3.3E-02 3.0E-02 3.4E-02 3.2E-02 3.3E-02 0.0E+00 0.0E+000.0015 0.0079 0.0265 0.1078 0.7157 2.9563 0.0000 0.00001.5E-03 1.6E-04 3.2E-05 8.6E-06 1.2E-06 3.0E-07 7.4E-08 1.1E-080.0016 0.0015 0.0015 0.0032 0.0015 0.0016 0.0016 0.0031

n 1万 2万 5万 10万 20万 50万 100万 200万3.5E-15 6.6E-15 5.2E-15 1.1E-13 1.6E-14 6.4E-14 7.3E-14 1.5E-13

3.26 6.43 15.81 15.96 1.11 15.87 2.44 3.410.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.00002.8E-09 7.1E-10 1.1E-10 2.1E-11 6.8E-12 3.4E-11 6.9E-11 1.4E-100.0016 0.0016 0.0015 0.0015 0.0032 0.0015 0.0016 0.0016

n 500万 1千万 2千万 5千万 1億 1億5千万 2億 2億5千万2.1E-13 5.8E-13 7.5E-13 3.0E-12 5.3E-12 2.6E-08 5.1E-08 4.9E-08

5.34 7.55 11.71 20.41 28.88 35.41 40.86 45.710.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+00 0.0E+000.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.00008.8E-14 3.9E-13 6.5E-14 3.8E-13 9.2E-13 1.3E-12 1.4E-08 1.2E-120.0031 0.0016 0.0016 0.0015 0.0015 0.0032 0.0015 0.0016

Peizer-Pratt近似

Poisson近似

Peizer-Pratt近似

方法Ⅰ

Poisson近似

方法Ⅰ

Poisson近似

Peizer-Pratt近似

方法Ⅰ

表 6.12 より, p = 0.5 のときは, が 2 億 5 千万のとき,方法Ⅰは のオーダーの精

度,LG 法は のオーダーの精度,Peizer-Pratt の近似は

n 810−

610− 1210− のオーダーの精度をもっ

ている.ただし, Peizer-Pratt の近似については,nが 200 万以下の範囲では,方法Ⅰよ

り低い精度であり, が 500 万以上の範囲では,Peizer-Pratt の近似の方が高い精度を示

している.表 6.8 から表 6.10 と比較すると,Peizer-Prat の近似の精度が方法Ⅰより高い

のは 0.5 のときのみであることもわかる.

n

p =

66

Page 68: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

数値実験 6.4. が 3 億,4 億,5 億,10 億,20 億,50 億,100 億,200 億,500 億の各

場合と,

npが ,0.001,0.01,0.1,0.5 の各場合の組み合わせに対して,方法Ⅰによる2項

確率

610−

( ; , )B x n p の計算値の相対誤差および計算時間を調べる.ここでは,ある特別な点

x = max{ 0, [ 0.5]z npq npα + − ( ; , )}での値B x n p についてのみ計算する.ここに zα は標

準正規分布の下側100α %点である.本実験では,α = 0.05, zα = − 1.644853626951472 と

する.n >2 億 5 千万の場合については,Maple に組み込まれた関数を用いた2項確率の値の

計算ができないため,ここでは Maple で計算した Peizer-Pratt による近似値を真値とする.

計算時間は,各組 ( , に対して同じ計算を 1000 回繰り返してその平均をとったものであ

る.

)n p

数値実験 6.4 の結果. 方法Ⅰで算出した2項確率の値の真値に対する相対誤差および計

算時間を表 6.15 に示す.

表 6.15. が ,0.001,0.01,0.1,0.5 の各場合の方法Ⅰによる計算値の相対誤差および計算時間. p 610−

各セルにおいて上段は相対誤差の絶対値,下段は計算時間(単位ミリ秒)を表す.

n 3億 4億 5億 10億 20億 50億 100億 200億 500億7.3E-07 4.9E-07 3.6E-07 6.3E-06 8.3E-06 1.2E-05 1.5E-05 1.2E-04 3.1E-04

0.17 0.20 0.23 0.08 0.09 0.16 0.22 0.31 0.495.2E-09 1.5E-10 4.4E-09 7.9E-06 3.6E-06 2.0E-05 3.7E-05 6.5E-05 8.0E-0648.27 27.61 4.38 2.14 3.05 4.77 6.73 9.48 15.00

4.9E-09 7.8E-10 2.9E-08 7.4E-06 3.4E-06 2.4E-05 2.4E-05 1.1E-04 1.1E-049.94 11.95 13.24 7.03 9.73 14.97 21.27 29.75 46.91

1.5E-08 2.1E-08 2.6E-08 1.4E-06 3.4E-06 6.3E-06 8.3E-06 1.2E-04 4.0E-0433.77 38.39 43.20 20.13 28.41 44.81 63.36 89.52 141.59

5.0E-08 5.2E-08 5.4E-08 4.1E-06 8.3E-06 5.2E-06 1.0E-05 1.5E-04 1.7E-0555.58 64.31 71.41 33.48 47.16 74.50 105.59 149.08 235.23

p=0.5

p=0.01

p=0.1

p=0.001

610p −=

表 6.15 より,方法Ⅰで算出した値は,nが 500 億のときでも Peizer-Pratt の近似で算出し

た値に対して のオーダーの精度が得られることがわかる. 410−

67

Page 69: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

7. おわりに 本稿では,より大きな に対しても2項確率n ( ; , )B x n p の直接計算が可能となる方法を考

案した.そのためにパソコンとC言語による計算環境の下で,巨大数と微小数を処理する

ための算術システムを理論的に構築し,かつこの算術システムをパソコン上に実装(実現)

した.この算術システムは巨大整数の計算技法として広く普及している多倍長技法とは異

なる.算術システムという名から当然のことであるが,このシステムは数値計算全般に適

用可能である.さらに,このシステムを用いた2項確率 ( ; , )B x n p 計算アルゴリズムを提案

した.

2項確率は数学的表現が簡単にもかかわらず,nがやや大きくなると通常のパソコンの算

術システムでは計算が困難または不可能であるからである.この問題を回避する方法とし

て,正規近似やポアソン近似に代表される他の(計算可能な)確率を用いて2項確率を近

似する方法が普及している.そのため,本来なら非常に大きな nに対して成り立つ近似式を

ある程度小さな に対しても近似が良くなるようにいろいろと工夫を凝らして近似式を導

出しているのが現状である.その代表的なものがポアソン近似式や Peizer-Pratt の近似式

である.提案された2項確率計算アルゴリズムは,nが巨大(例えば が 500 億)でも,2

項確率の計算を可能にしている.しかしながら,オーバーフローやアンダーフローを回避

できればよいというものではなく,結果として得られる数値の精度や計算時間が重要であ

る.本論で提案したアルゴリズムは,時間と精度の両方を基準にして,nが5億以下のとき

は直接計算,5億より大きいときは

n

n

log ( )xΓ の漸近展開による近似を用いた近似計算を採

用している.

提案されたアルゴリズムの良さ具合をみるためにいろいろな数値実験を行った.よく知

られているようにポアソン近似や Peizer-Pratt の近似はその相対誤差が , pに強く依存

するため, n, に関する適当な条件を満たすかどうかでどちらの近似法を使うかを選択

する.一方,提案したアルゴリズムではその相対誤差は,n, にはほとんど依存しない.

また,よく使用される大きさ(例えば,数十,数百)の に対して,その相対誤差は上記の

2つの近似法のそれより,ほとんどの場合,圧倒的によい.従って,提案されたアルゴリ

ズムはかなり広い範囲 n, に対して十分実用的であると判断される.また,このアルゴ

リズムとパソコンの性能向上により,近似式がカバーしてきた の範囲が,例えば5億まで

押し上げられることになった.近似式による2項確率計算が不要であるという結果になる.

ただし,nが巨大(例えば5億以上)なときは,近似精度や計算時間から判断して,ポアソ

ン近似や Peizer-Pratt 近似による確率計算が有用であると考えられる.

np

pn

pn

今後の課題として2点挙げられる.1つは,C言語の算術システムでは,場合によって

は,計算が困難な確率分布(例えば,超幾何分布,多変量2項分布等)の確率計算アルゴ

リズムを提案された算術システムを用いて構築することである.もう1点は,本稿で述べ

た算術システムをC言語の算術システムの機能に依存しないように拡張することである.

その理由は提案された算術システムはC言語の算術システムの機能を超えることができな

いという弱点があるからである.確率計算においても精度の高い数値は要求されるので,

この算術システムを任意の精度計算ができるように拡張できれば高精度の統計計算が可能

となる.

68

Page 70: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

参考文献

Abramowitz, M. and Stegun, I. A.(Ed.)(1972): Handbook of mathematical functions with

formulas, graphs and mathematical tables. Dover Publications, New York.

Bahadur, R. R.(1969): Some approximations to the binomial distribution function. Ann.

Math. Statist. 31, 43 – 53.

Bolshev, L.N., Gladkov, B.J. and Shcheglova,M.V.(1961): Tables for the Calculation of B-

and z-distribution functions. Theory of Prob. Applic. 6, 410 – 419.

ボーランド社(2003): http://www.borland.co.jp/cppbuilder/freecompiler/

Bowerman, P.N. and Scheuer, E.M.(1990): Calculation of the binomial survivor function.

IEEE Trans. Reliability 39, 162 – 166.

Cormen, T. H., Leiserson, C. E. and Rivest, R. L.(1990): Introduction to Algorithms. MIT

Press, Massachusetts.

Dennis, J.E.,Jr. and Schnabel, R.B.(1996): Numerical methods for unconstrained

optimization and nonlinear equations. SIAM, Philadelphia.

D’Ortenzio, R. J.(1965): Approximating the normal distribution function. System Design, 9,

4 – 7.

Ghosh, B. K.(1980): Two normal approximations to the binomial distribution. Commun.

Statist. A9, 427 - 438.

Heal, K. H., Hansen, M. L. and Richard, K. M.(1996): はじめての Maple V.笠嶋友美訳.シ

ュプリンガー・フェアラーク東京.

岩崎 学(2000): 統計的推測における正確法と近似法. 応用統計学会チュートリアルセミナ

ー,1 - 26.

岩崎 学(2001): 2段階抽出による2つの二項確率の検定におけるサンプルサイズの推定と

検出力の評価.応用統計学 30, 91 – 105.

Johnson, N. L., Kotz, S. and Kemp, A. W.(1992): Univariate discrete distributions. John

Wiley & Sons, New York.

Knuth, D. E.(1981): The art of computer programming. Volume 2: Seminumerical algorithms

(2nd edition). Addison-Wesley, Reading, AM.

Kambo, N. S. and Kotz, S.(1966): On exponential bounds for binomial probabilities. Ann.

Inst. Statist. Math. 18, 277 – 287.

Kotz, S. and Johnson, N. L.(Eds.) (1985): Encyclopedia of Statistical Sciences, Vol. 6. John

Wiley & Sons, New York.

メイプル ver 7(2001): 数式処理ソフトウェア. Waterloo Maple.

マセマティカ ver 4(2000): 数式処理ソフトウェア. Wolfram Research.

松尾精彦(2000): 2次元統計量を用いた線形ロジスティックモデルの条件付正確検定.

応用統計学 29, 1 – 25.

森口繁一・宇田川銈久・一松 信(1995): 岩波 数学公式Ⅲ―特殊関数―. 岩波書店.

Molenaar, W.(1973): Approximations to the Poisson, binomial and hypergeometric distribution

Functions. Mathematisch Centrum.

大野 豊・磯田和男(監修)(1993): 数値計算ハンドブック. オーム社.

Patel, J. K. and Read, C.B.(1996): Handbook of the normal distribution. Marcel Dekker,

69

Page 71: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

New York.

Peizer, D. B. and Pratt, J. W.(1968): A normal approximation for binomial, F, beta, and

other common, related tail probabilities, I. J. Amer. Statist. Assoc. 63, 1416 - 1456.

Pratt, J. W.(1968): A normal approximation for binomial, F, beta, and other common, related

tail probabilities, II. J. Amer. Statist. Assoc. 63, 1457 - 1483.

Raff, M. S.(1956): On approximating the point binomial. J. Amer. Statist. Assoc. 51, 293 -

303.

Robertson, W. H.(1960): Tables of the binomial distribution function for small values of p.

Sandia Corp., Albuquerque, New Mexico, U.S.A.

Stuart, A. and Ord, J. K.(1994): Kendall's Advanced Theory of Statistics, Vol.1, Sixth

Edition, London.

竹内 啓・藤野和建(1981): 2項分布とポアソン分布. 東京大学出版会.

Weintraub, S.(1963): Tables of the cumulative binomial probability distribution for small

values of p. The Free Press of Glencoe, New York;III.1.

山内二郎編(1992): 統計数値表. 日本規格協会.

70

Page 72: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

付 録

1. 計算機環境について

本論での数値実験において,モグラたたき計算を実行する言語は(有料の)Borland

C++(version 5.0J)を使用して行った.この製品は 2004 年現在では販売されていない.そ

の代わり,(無料の)Borland C++ Compiler 5.5 がボーランド社のホームページから無償ダ

ウンロードできる.モグラたたき計算で得られた結果の精度を調べるには真値が必要にな

る.そのために,非常に高精度計算のできる数値処理ソフトが必要になる.このような高

い能力を持ったアプリケーション・ソフトは現在知られているものとしては(有料の)Maple,

(有料の)Mathematica などがある.我々の経験から判断すると,GUI 環境は Mathematica

が,計算は Maple がやや良い.この理由のため,その算出値を真値として採用する数値処理

ソフトとして Maple を採用した.使用したパソコンは Pentium 4(2.66GHz)が装着された

ものである.

2. Maple の精度計算法と計算時間

本論におけるほとんどの数値実験において,Maple で求めた値を真値として採用している.

Maple で算出した値がどの程度の精度があるのかを2項確率関数の計算例で説明しよう.

Maple には,精度計算として,正確な表示による計算(整数の四則演算)と浮動小数点近似

計算がある(例えば,Heal and etc.(1996)).特に,正確な表示による計算法では,整数

の四則演算は約 50 万桁まで可能である.

例 2.1. 正確な表示による計算と浮動小数点近似計算の違いをみるために次の簡単なプロ

グラムを実行してみる.

(1) > 1/3; ← 正確な表示による計算法

31 ← 分数(人が理解できる記号)として表示

(2) > evalf(1/3, 20); ← 正確な表示による計算

0.33333333333333333333 (3 が 20 個)

> evalf(1/3, 40);

0.33333333333333333333333333333333333333333 (3 が 40 個)

このように,小数点以下の桁数を指定(約50万まで可)することにより,

深いところまで正確に小数点表示できる.

(3) > 1.0/3.0; ← 浮動小数点近計算(デフォルトは少数点 10 桁)

0.3333333333

(4) > evalf(1.0/3.0, 10);

0.3333333333 ← デフォルトと同じ

71

Page 73: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

> evalf(1.0/3.0, 20);

0.3333333333 ← 変わらない

上のプログラム例(1)から(4)をみると,正確な表示による計算と浮動小数点近似計算の違

いがよくわかる.

Maple の浮動小数点近似計算においては,計算に必要な桁数の指定(Digits)ができる.そ

の例を述べよう.

(5) > Digits:=40; ← 40 桁の計算の指定

> 1.0/3.0;

0.33333333333333333333333333333333333333333 ← 3 が 40 個

どちらの計算法にしても,扱える数の大きさには限りがある.それを2項確率関数

の計算を例にして説明する.Maple には標準関数(組み込み関数)があるので, ( ; , )b x n p① 標準関数 stats[statevalf, pf, binomiald[n,p]](x)をそのまま用いる方法,

② binomial(n,x)(2項係数を求める標準関数)を用いたプログラムを作成して計算 する方法

を用いるのが自然であろう.ここでは,n =200 万のときに計算を実行してみよう.以下の

結果は Pentium4(2.66GHz)が装着されたパソコンによる計算結果である.

① の方法で 万 , 0 を計算した場合: (199167;200b .1)プログラム1:

> Digits:=100; ← 100 桁の計算の指定

> n:=2000000; x:=199167; p:=1/10;

> stats[statevalf, pf, binomiald[n,p]](x);

の結果は

.0001367586824821503424790034240470692078125956985255809

410405955777446350593842447283614272330414343576

となる.

プログラム2:

> Digits:=100; ← 100 桁の計算の指定

> n:=2000000; x:=199167; p:=0.1;

> stats[statevalf, pf, binomiald[n,p ]](x);

の結果は

.0001367586824821503424790034240470692078125956985255809

410405955777446350593842447283614272330414343576

となる.プログラム1,2の違いは変数 pの入力の型のみである.(Digits 指定が同じだか

ら)結果が同じであることと,一見同じようなプログラムにみえることから2つのプログ

ラムは同じであるように思えるが,Maple の内部計算は全く異なる.その理由は計算時間が

72

Page 74: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

非常に異なるのためであるが,計算時間については後で述べる.

② の方法で 万 , 0 を計算した場合: (199167;200b .1)「正確な表示による計算」は以下のプログラムによる.

----------------------

単項確率の計算ルーチン:

> BinomTanko1:=proc(n,x,p)

> local b,q;

> q:= 1-p;

> b:= binomial(n, x)*(p^x)*(q^(n-x));

> return b;

> end proc:

上記ルーチンを用いる際のプログラム:

> p:=1/10;

> n:=2000000; x:=199167; p:=1/10;

> evalf(BinomTanko1(n,x,p), 100);

計算結果:

.0001367586824821503424790034240470692078125956985255809

410405955777446350593842447283614272330414343576,

浮動小数点近似計算は以下のプログラムによる.

----------------------

単項確率の計算ルーチン:

> BinomTanko2:=proc(n,x,p)

> local b,q;

>

> q:= 1.0-p;

> b:= binomial(n, x)*(p^x)*(q^(n-x));

> # print("b(",x, n, p,")="); print( b );

> return b;

> end proc:

上記ルーチンを用いる際のプログラム:

> Digits:=100;

> n:=2000000.; x:=199167.; p:=0.1;

> evalf(BinomTanko2(n,x,p), 100);

73

Page 75: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

計算結果:

.0001367586824821503424790034240470692078125956985255809

410405955777446350593842447283614272330414343576

となる.Digits:=100を指定しているので,浮動小数点近似計算でも正確な値が得られる.

しかしながら,Maple を使用すればどんな大きさのnに対しても2項確率関数の値の計算が

可能というわけではない.浮動小数点近似計算においてすら の大きさに限りがある.例え

ば, のとき, は浮動小数点近似計算可能で,そ

の値は

n268609160n = (26860916;b 268609160, 0.1)

0.000081138766361434018804052618121801174603901573547003

である.一方, は計算不可能となる.すなわち, nの値が

を超えると浮動小数点近似による計算ではオーバーフローとなった.この理由

のため,本論における数値実験では,真値が必要な場合には の値として 2億 5千 25 万(表

4.1 参照)または 2億 5千万(表 6.1-6.6 参照)まで数値実験を行った.これに対して,モ

グラたたき算術による2項確率関数の値の計算はさらに大きな の値に対しても計算が可

能となる.例えば,

(26860916;b 268609161, 0.1)

268609160n

n

7 8(5 10 ;5 10 ,0.1)b × × = 40.5947081 10−× ,

8 9(10 ;10 ,0.1)b = 40.4205195 10−× , 8 9(2 10 ;2 10 ,0.1)b × × = 40.2973533 10−× ,

8 9(5 10 ;5 10 ,0.1)b × × = 40.1880592 10−× , 9 10(10 ;10 ,0.1)b = 40.1329894 10−× となる.ただ

し,これらの値が真値をどの程度近似しているのは不明である.正確な表示による計算に

おいては,計算に時間がかかっているのか,あるいは計算処理がハングアップしているの

かがわからない等の理由で,計算可能な最大の の特定はできなかった. n 次に,計算時間に注目してみよう.上で述べた例でこれを調べてみる.2項確率関数

の計算の仕方としては上と同様に ( ; , )b x n p① 標準関数 stats[statevalf, pf, binomiald[n,p]](x)をそのまま用いる方法,

② binomial(n,x)(2項係数を求める標準関数)を用いたプログラムを作成して計算 する方法

を用いる.以下の結果は Pentium4(2.66GHz)が装着されたパソコンによる計算結果である.

①の方法で計算をする場合:2つの計算方法での計算時間は以下の通りである.

正確な表示による計算 浮動小数点近似計算

万 , 0 13.5 秒 6.2 秒 (9813;10b .1) 万 , 0 25 分 14 秒 13 分 3 秒 (99411;100b .1) 万 1 時間 38 分 49 分 14 秒 (199167;200b , 0.1)

74

Page 76: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

正確な表示による計算では n 10 万では計算時間がかかるようになる.浮動小数点近似計

算でも正確な表示による計算の半分程度ではあるが, n 10 万では計算時間がかかるよう

になることがわかる.

>>

次に,②の方法では,nが大きいときには,それぞれの方法での計算時間は以下のようにな

る.

正確な表示による計算 浮動小数点近似計算

万 , 0 7.169 秒 0.00009 秒 (9813;10b .1) 万 , 0 24 分 47 秒 0.000094 秒 (99411;100b .1) 万 1 時間 36 分 0.000094 秒 (199167;200b , 0.1)正確な表示による計算では n 10 万では計算時間がかかるようになる.一方,浮動小数点

近似計算では, が非常に大きくなっても計算時間は短いことがわかる.

>n

次に,分布関数の値を求める場合は,多くの項の和を求めるので,②の方法で浮動小数

点近似計算によって計算することにした.以下のプログラムによる. > BinomPF2:=proc( x1, x2, n, y, z ) > local i,k,prob,p,q,probold,SS; > > p:=y/z*1.; # 浮動小数点近似 > q:= 1.0 -p; > prob := BinomTanko2( n, x1, p); > > SS:=prob; > for k from x1+1 to x2 do > probold := prob; > prob :=(n-k+1)/k *p /q *probold; > SS := SS + prob; > od; > > end proc; >

上記ルーチンを用いる際のプログラム:

> Digits:=50;

> t:=-1.644853626951472714863848907993: # 下側 5.0%点 > y:=1; > n:=10000; xL:=9813; BinomPF2( 0, xL, n, y,10 );

nが大きいときには,②の方法で浮動小数点近似計算による計算時間は以下のようになる.

浮動小数点近似計算

万 1.327 秒 (9843;10B , 0.1) 万 , 0 12.828 秒 (99506;100B .1) 万 , 0 128.402 秒 (998439;1000B .1) 億 1276.769 秒 (9995064;1B , 0.1)このように,②の方法で浮動小数点近似計算による計算でも Maple ではかなりの計算時間

75

Page 77: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

がかかることがわかる.

3. Borland C++の計算精度について

本論の数値実験で行った Borland C++ のプログラムでは,実数に対応する変数は全て

long double 型で宣言している.Borland C++のマニュアル(Borland C++ バージョン 5.0 プ

ログラマーズガイド,ボーランド社編訳,1995)によると,long double 精度では有効桁

数が 18 桁である.本論の数値実験では Maple で計算した数値を真値として採用している.

このため,Maple で計算した精度の高い(例えば,50桁以上真値と一致する)数値を Borland

C++ のプログラム内の実変数(long double 型)に代入することになる.ここで精度がかな

り落ちる.どの程度精度が落ちるのかを確認するため,Borland C++において,long double

型変数の計算結果がどの程度の精度を持つかを次の2点について調べた.

(1) 16 桁を超える多数桁の数を Borland C++ のプログラムに代入したら,どれだけ精度

がおちるか.

(2) 上の代入を実行した後,1回の演算(√を求める)をおこなうと,精度はどれくらい

下がるか.

例 3.1. Maple で値 1.111111111111111111111111111111(1 が 31 個)が得られたとし

よう.この値を Borland C++のプログラムの long double 型変数 u に代入する. u = 1.111111111111111111111111111111; ← 代入前のuの値

のように,代入文形式で実行すると,代入直後の uの値は, u = 1.1111111111111111600000000000 ← 代入後のuの値

と表示される.代入前の の値(下記参照)と一致するのは上位 17 桁(下線部)となる.

引き続き,sqrt(u)の計算を実行し,計算結果を表示させると,

u

sqrt(u) = 1.0540925533894598410000000000

となる.代入前のuの値に対する u の(Maple による)値(下記参照)と一致するのは上

位 16 桁(下線部)となる.一方,Maple で代入前および代入後の u の値に対する u の値

を求めると

sqrt(1.111111111111111111111111111111) ← 代入前の uに対する u

= 1.0540925533894597773329645148108534732788489067862,

sqrt(1.11111111111111116) <== 代入後の uに対する u = 1.0540925533894598005230006893790210241413397853657

となる.一致するのは上位 17 桁(下線部)となる.

例 3.2. Maple で 1.23456789012345678901234567890(30 桁)が得られたとしよう.

この値を Borland C++のプログラムの long double 型変数 u に代入する.この値を Borland

C++のプログラムの long double 型変数 u に代入する. u = 1.23456789012345678901234567890; ← 代入前のuの値

のように,代入文形式で実行すると,代入直後の uの値は, u = 1.2345678901234566900000000000 ← 代入後のuの値

と表示される.真値 u の値と一致するのは上位 16 桁(下線部)となる.引き続き,sqrt(u)の計算を実行し,計算結果を表示させると,

sqrt(u) = 1.1111111061111109690000000000

となる.Maple の代入前の u の値(下記参照)と一致するのは上位 15 桁(下線部)とな

76

Page 78: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

る.一方,Maple で代入前および代入後の uの値に対する u の値を求めると

sqrt(1.23456789012345678901234567890) ← 代入前の uに対する u

= 1.1111111061111110993611110581855552552624286445487,

sqrt(1.234567890123456690) ← 代入後の uに対する u

= 1.1111111061111110548055553021805529887260172761555

となる.一致するのは上位 15 桁(下線部)となる.

4. 数値表ついて

本論の第4節から第6節までは,数値計算の結果をまとめた表が多数ある.これらの数

値実験における計算はすべてモグラたたき算術で行っている.したがって,得られるモグ

ラ数は<2.104549872794610e+152, -1>のような形になっている.結果を表にまとめる

際には,<2.104549872794610e+152, -1>のようなモグラ表現とはせず,通常の表示に

変換したもの 0.2104549872794610 を更に省略して 2.1E-01 のように指数表示としている.

次に表中の絶対誤差,相対誤差について述べよう.第4節と第6節の数値計算結果の表

には,絶対誤差あるいは相対誤差が 0.0E+00 と表現されている箇所がある.これは Maple

によって計算された真値が,有効桁の低い Borland C++のプログラム内に代入される際に精

度の低い数値となるために起こるものである(付録3節参照).例えば,本当は絶対誤差(ま

たは相対誤差)の値が 0.0E+00 ではないのに,先ほどの理由により,絶対誤差(または相

対誤差)の値が 0.0E+00 となる場合が起こる.以下にその例を述べよう.記号や用語の意

味は対応する節の本文のそれと同じとする.

例 4.1. を5節の方法Ⅰで計算する.真値 の Maple による計算結

果は, (13;50,0.5)B (3;50,0.1)B

4.68111455425912481587147340178489685058593749999970e-4

となる.真値 のモグラ表現は次のようになる. (13;50,0.5)B真値 = < 4.68111455425912484000000000000000000000e-4,

0.000000>.

Maple での計算結果と一致するのは上位 17 桁となる(下線部).一方,方法Ⅰによる計算値

ˆ( ; , )B x n p のモグラ表現は次のようになる.

計算値 = < 4.68111455425912481600000000000000000000e-04,

0.000000> .

この場合,モグラ算術における真値 ( ; , )B x n p と計算値 ˆ( ; , )B x n p の絶対誤差と相対誤差のモ

グラ表現はそれぞれ次のようになる.

絶対誤差=< 2.38228016415271970400000000000000000000e-21,

0.000000>,

相対誤差=< 5.08913024139773645800000000000000000000e-18,

77

Page 79: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

0.000000>

このように,Maple による計算値を真値としているが,その値が C プログラム内で代入処

理される際に精度が下がり,それが結果的に絶対誤差や相対誤差の精度にも影響するとい

う事実に注意して,表に現れた数値の精度を解釈しなければならない.

例 4.2. を5節の方法Ⅰで計算する.真値 の Maple による計算結果

は,

ˆ(3;50,0.1)B (3;50,0.1)B

2.50293905953307670288269819454349184344930242920760e-1;

となる.真値 ( ; , )B x n p のモグラ表現は次のようになる.

真値 =< 2.50293905953307649500000000000000000000e+152,

-1.000000>

最初の Maple での計算結果と一致するのは上位 16 桁となる(下線部).一方,モグラたた

き計算による計算値 ˆ( ; , )B x n p のモグラ表現は次のようになる.

計算値 =< 2.50293905953307649500000000000000000000e+152,

-1.000000>

この場合,代入された後の真値 ( ; , )B x n p と計算値 ˆ( ; , )B x n p は 39 桁(BorlandC++の有効桁

数は 18)がちょうど同じ値となるので,絶対誤差と相対誤差のモグラ表現はそれぞれ次の

ようになる.

絶対誤差=< 0.00000000000000000000000000000000000000e+00,

-1.000000>

相対誤差=< 0.00000000000000000000000000000000000000e+00,

0.000000>

つまり,Maple で算出された値(真値)が Borland C++で表現されると精度が下がったため

に,あたかも真値とモグラ計算値が一致するかのような現象が起きたのである.この場合,

表中での値は絶対誤差と相対誤差共に 0.0E+00 となる.このことを留意して表中の数値

0.0E+00 を解釈する必要がある.

5. 付録 CD-ROM について

本論の第4節から第6節において,関連した数値実験を含めて,掲載することのできな

かったいろいろな数値実験の詳細な結果を付録 CD-ROM に記録している.例えば,本論で掲

載している表も含めて p = ,0.001,0.01,0.1,0.5 の各場合,および =50,500,1000,10万, 50 万,100 万, 200 万, 500 万, 1 千万, 2 千万, 5 千万,1 億, 1 億 5 千万, 2 億, 2 億 5 千万の

各場合での計算値

610 − n

ˆ( ; , )B x n p の真値 ( ; , )B x n p に対する計算値 ˆ( ; , )B x n p ,計算値 ˆ( ; , )B x n p ,

絶対誤差,相対誤差の詳細な数値が含まれている.付録 CD-ROM に記録されている数表の1

例として,次ページの表に掲載する.この表は の 100 個の での値

の数表である.

)1.0,10;( 5xB x

)1.0,10;(,),1.0,10;(),1.0,10;( 5100

52

51 xBxBxB

78

Page 80: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

79

方法

Ⅰ(

n =

)(

p =

)

6641

1.0

E-307

1.0

E+00

1.0

24400615985550E-01

-2

1.0

00000000000000E+00

01.0

24400615985550E-01

-2

0.0

00000000000000E+00

06711

2.5

E-294

1.0

E+00

2.5

33482794065110E+12

-2

1.0

00000000000000E+00

02.5

33482794065110E+12

-2

0.0

00000000000000E+00

06781

2.9

E-281

1.0

E+00

2.8

65963762944790E+25

-2

1.0

00000000000000E+00

02.8

65963762944790E+25

-2

0.0

00000000000000E+00

06851

1.5

E-268

1.0

E+00

1.4

94144359406920E+38

-2

1.0

00000000000000E+00

01.4

94144359406920E+38

-2

0.0

00000000000000E+00

06921

3.6

E-256

1.0

E+00

3.6

16443957464850E+50

-2

1.0

00000000000000E+00

03.6

16443957464850E+50

-2

0.0

00000000000000E+00

06991

4.1

E-244

1.0

E+00

4.0

93286720630590E+62

-2

1.0

00000000000000E+00

04.0

93286720630590E+62

-2

0.0

00000000000000E+00

07061

2.2

E-232

1.0

E+00

2.1

81903436105590E+74

-2

1.0

00000000000000E+00

02.1

81903436105590E+74

-2

0.0

00000000000000E+00

07131

5.5

E-221

1.0

E+00

5.5

15478458191760E+85

-2

1.0

00000000000000E+00

05.5

15478458191760E+85

-2

0.0

00000000000000E+00

07201

6.7

E-210

1.0

E+00

6.6

56839715460600E+96

-2

1.0

00000000000000E+00

06.6

56839715460600E+96

-2

0.0

00000000000000E+00

07271

3.9

E-199

1.0

E+00

3.8

61771314761130E+107

-2

1.0

00000000000000E+00

03.8

61771314761130E+107

-2

0.0

00000000000000E+00

07341

1.1

E-188

1.0

E+00

1.0

83876942013710E+118

-2

1.0

00000000000000E+00

01.0

83876942013710E+118

-2

0.0

00000000000000E+00

07411

1.5

E-178

1.0

E+00

1.4

81278196577450E+128

-2

1.0

00000000000000E+00

01.4

81278196577450E+128

-2

0.0

00000000000000E+00

07481

9.9

E-169

1.0

E+00

9.9

19579221494870E+137

-2

1.0

00000000000000E+00

09.9

19579221494870E+137

-2

0.0

00000000000000E+00

07551

3.3

E-159

1.0

E+00

3.2

75191330861030E+147

-2

1.0

00000000000000E+00

03.2

75191330861030E+147

-2

0.0

00000000000000E+00

07621

5.4

E-150

1.0

E+00

5.3

64205737493320E+03

-1

1.0

00000000000000E+00

05.3

64205737493320E+03

-1

0.0

00000000000000E+00

07691

4.4

E-141

1.0

E+00

4.3

84209033257630E+12

-1

1.0

00000000000000E+00

04.3

84209033257630E+12

-1

0.0

00000000000000E+00

07761

1.8

E-132

1.0

E+00

1.7

98625161661280E+21

-1

1.0

00000000000000E+00

01.7

98625161661280E+21

-1

0.0

00000000000000E+00

07831

3.7

E-124

1.0

E+00

3.7

25258759259210E+29

-1

1.0

00000000000000E+00

03.7

25258759259210E+29

-1

0.0

00000000000000E+00

07901

3.9

E-116

1.0

E+00

3.9

17411113084830E+37

-1

1.0

00000000000000E+00

03.9

17411113084830E+37

-1

0.0

00000000000000E+00

07971

2.1

E-108

1.0

E+00

2.1

03239001517160E+45

-1

1.0

00000000000000E+00

02.1

03239001517160E+45

-1

0.0

00000000000000E+00

08041

5.8

E-101

1.0

E+00

5.7

97029600580300E+52

-1

1.0

00000000000000E+00

05.7

97029600580300E+52

-1

0.0

00000000000000E+00

08111

8.2

E-94

1.0

E+00

8.2

46939792137230E+59

-1

1.0

00000000000000E+00

08.2

46939792137230E+59

-1

0.0

00000000000000E+00

08181

6.1

E-87

1.0

E+00

6.0

87759482705820E+66

-1

1.0

00000000000000E+00

06.0

87759482705820E+66

-1

0.0

00000000000000E+00

08251

2.3

E-80

1.0

E+00

2.3

44077908584920E+73

-1

1.0

00000000000000E+00

02.3

44077908584920E+73

-1

0.0

00000000000000E+00

08321

4.7

E-74

1.0

E+00

4.7

32344698091080E+79

-1

1.0

00000000000000E+00

04.7

32344698091080E+79

-1

0.0

00000000000000E+00

08391

5.0

E-68

1.0

E+00

5.0

34769047827340E+85

-1

1.0

00000000000000E+00

05.0

34769047827340E+85

-1

0.0

00000000000000E+00

08461

2.8

E-62

1.0

E+00

2.8

37016760014310E+91

-1

1.0

00000000000000E+00

02.8

37016760014310E+91

-1

0.0

00000000000000E+00

08531

8.5

E-57

1.0

E+00

8.5

08973908362090E+96

-1

1.0

00000000000000E+00

08.5

08973908362090E+96

-1

0.0

00000000000000E+00

08601

1.4

E-51

1.0

E+00

1.3

65070852105090E+102

-1

1.0

00000000000000E+00

01.3

65070852105090E+102

-1

0.0

00000000000000E+00

08671

1.2

E-46

1.0

E+00

1.1

77076159140250E+107

-1

1.0

00000000000000E+00

01.1

77076159140250E+107

-1

0.0

00000000000000E+00

08741

5.5

E-42

1.0

E+00

5.4

81712431786000E+111

-1

1.0

00000000000000E+00

05.4

81712431786000E+111

-1

0.0

00000000000000E+00

08811

1.4

E-37

1.0

E+00

1.3

85375672152130E+116

-1

1.0

00000000000000E+00

01.3

85375672152130E+116

-1

0.0

00000000000000E+00

08881

1.9

E-33

1.0

E+00

1.9

09093216036280E+120

-1

1.0

00000000000000E+00

01.9

09093216036280E+120

-1

0.0

00000000000000E+00

08951

1.4

E-29

1.0

E+00

1.4

41322572830250E+124

-1

1.0

00000000000000E+00

01.4

41322572830250E+124

-1

0.0

00000000000000E+00

09021

6.0

E-26

1.0

E+00

5.9

90201430337200E+127

-1

1.0

00000000000000E+00

05.9

90201430337200E+127

-1

0.0

00000000000000E+00

0

x絶

対誤

差相

対誤

10万

0.1

絶対

誤差

(モグラ

表現

)相

対誤

差(モ

グラ

表現

)分

布関

数の

真値

(モグラ

表現

)(モ

グラ

表現

)絶

対誤

差相

対誤

差分

布関

数の

真値

分布

関数

の計

算値

Page 81: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

80

方法

Ⅰ(

n =

)(

p =

)

9091

1.4

E-22

1.0

E+00

4.1

00000000000000E+01

-1

1.0

00000000000000E+00

01.3

77068095212280E+131

-1

0.0

00000000000000E+00

09161

1.8

E-19

1.0

E+00

4.1

00000000000000E+01

-1

1.0

00000000000000E+00

01.7

59626123171420E+134

-1

0.0

00000000000000E+00

09231

2.0

E-17

1.6

E-01

4.1

00000000000000E+01

-1

1.6

23179023364540E-01

01.2

56036192122860E+137

-1

1.0

52159032158800E+137

-1

9301

2.0

E-17

4.0

E-04

4.1

00000000000000E+01

-1

4.0

49740915366020E-04

05.0

34326006990440E+139

-1

5.0

32287235389260E+139

-1

9371

2.0

E-17

1.8

E-06

4.1

00000000000000E+01

-1

1.7

89688166602550E-06

01.1

39177195538560E+142

-1

1.1

39175156766610E+142

-1

9441

2.0

E-17

1.4

E-08

4.1

00000000000000E+01

-1

1.3

92850040069630E-08

01.4

63772781141360E+144

-1

1.4

63772760753200E+144

-1

9511

2.0

E-17

1.9

E-10

4.1

00000000000000E+01

-1

1.8

99738475923770E-10

01.0

74887260286900E+146

-1

1.0

74887260082700E+146

-1

9581

2.2

E-17

4.8

E-12

4.1

00000000000000E+01

-1

4.7

85770648383590E-12

04.5

43790297830170E+147

-1

4.5

43790297808430E+147

-1

9651

5.4

E-17

4.8

E-13

4.1

00000000000000E+01

-1

4.8

00099803198380E-13

01.1

15314618057020E+149

-1

1.1

15314618056490E+149

-1

9721

5.0

E-16

3.1

E-13

4.1

00000000000000E+01

-1

3.0

85803535105760E-13

01.6

06990574769950E+150

-1

1.6

06990574769460E+150

-1

9791

4.1

E-15

2.9

E-13

4.1

00000000000000E+01

-1

2.9

45399696594920E-13

01.3

78955391371600E+151

-1

1.3

78955391371190E+151

-1

9861

2.1

E-14

2.9

E-13

4.1

00000000000000E+01

-1

2.9

13171094737450E-13

07.1

93609100662700E+151

-1

7.1

93609100660610E+151

-1

9931

6.8

E-14

2.9

E-13

4.1

00000000000000E+01

-1

2.8

81935094912620E-13

02.3

53376214516300E+152

-1

2.3

53376214515620E+152

-1

10001

1.3

E-12

2.5

E-12

4.1

00000000000000E+01

02.5

22165897626180E-12

05.0

68680374974320E+152

-1

5.0

68680374961540E-01

010071

1.8

E-12

2.4

E-12

4.1

00000000000000E+01

02.3

66191480346350E-12

07.7

46605448650450E+152

-1

7.7

46605448632120E-01

010141

2.2

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

19671334034690E-12

09.3

18661297216140E+152

-1

9.3

18661297194530E-01

010211

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

04452265385440E-12

09.8

69218333924080E+152

-1

9.8

69218333901340E-01

010281

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

02893206769010E-12

09.9

84439443853270E+152

-1

9.9

84439443830280E-01

010351

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.2

97446708027820E-12

09.9

98867767958800E+152

-1

9.9

98867767935830E-01

010421

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.2

96866466412680E-12

09.9

99949993188260E+152

-1

9.9

99949993165300E-01

010491

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.2

93412836454410E-12

09.9

99998664625610E+152

-1

9.9

99998664602680E-01

010561

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

00253417176200E-12

09.9

99999978477360E+152

-1

9.9

99999978454350E-01

010631

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

01927799898700E-12

09.9

99999999790710E+152

-1

9.9

99999999767690E-01

010701

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

09172601397680E-12

09.9

99999999998770E+152

-1

9.9

99999999975670E-01

010771

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

08447432774330E-12

09.9

99999999999990E+152

-1

9.9

99999999976910E-01

010841

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

09374642472240E-12

09.9

99999999999990E+152

-1

9.9

99999999976900E-01

010911

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

05488861886050E-12

09.9

99999999999990E+152

-1

9.9

99999999976940E-01

010981

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

36686128878020E-12

09.9

99999999999990E+152

-1

9.9

99999999976630E-01

011051

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

28803545403180E-12

09.9

99999999999990E+152

-1

9.9

99999999976710E-01

011121

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

27915366983480E-12

09.9

99999999999990E+152

-1

9.9

99999999976720E-01

011191

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

44679734655320E-12

09.9

99999999999990E+152

-1

9.9

99999999976550E-01

011261

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

43236444723310E-12

09.9

99999999999990E+152

-1

9.9

99999999976560E-01

011331

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

41349065581440E-12

09.9

99999999999990E+152

-1

9.9

99999999976580E-01

011401

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

41682132488830E-12

09.9

99999999999990E+152

-1

9.9

99999999976580E-01

011471

2.3

E-12

2.3

E-12

4.1

00000000000000E+01

02.3

32245236779520E-12

09.9

99999999999990E+152

-1

9.9

99999999976670E-01

0

絶対

誤差

(モグラ

表現

)相

対誤

差(モ

グラ

表現

)分

布関

数の

真値

(モグラ

表現

)(モ

グラ

表現

)絶

対誤

差相

対誤

差分

布関

数の

真値

分布

関数

の計

算値

10万

0.1

x絶

対誤

差相

対誤

Page 82: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

81

方法

Ⅰ(

n =

)(

p =

)

11541

2.3

E-12

2.3

E-12

2.3

29802746125340E-12

02.3

29802746125340E-12

09.9

99999999999990E+152

-1

9.9

99999999976700E-01

011611

2.3

E-12

2.3

E-12

2.3

29802746125340E-12

02.3

29802746125340E-12

09.9

99999999999990E+152

-1

9.9

99999999976700E-01

011681

2.3

E-12

2.3

E-12

2.3

17479270552000E-12

02.3

17479270552000E-12

09.9

99999999999990E+152

-1

9.9

99999999976820E-01

011751

2.3

E-12

2.3

E-12

2.3

11595088521490E-12

02.3

11595088521490E-12

09.9

99999999999990E+152

-1

9.9

99999999976880E-01

011821

2.3

E-12

2.3

E-12

2.3

07043174120530E-12

02.3

07043174120530E-12

09.9

99999999999990E+152

-1

9.9

99999999976920E-01

011891

2.3

E-12

2.3

E-12

2.3

10040776287020E-12

02.3

10040776287020E-12

09.9

99999999999990E+152

-1

9.9

99999999976890E-01

011961

2.3

E-12

2.3

E-12

2.3

24029586397290E-12

02.3

24029586397290E-12

09.9

99999999999990E+152

-1

9.9

99999999976750E-01

012031

2.3

E-12

2.3

E-12

2.3

22586296465280E-12

02.3

22586296465280E-12

09.9

99999999999990E+152

-1

9.9

99999999976770E-01

012101

2.3

E-12

2.3

E-12

2.3

23141407977590E-12

02.3

23141407977590E-12

09.9

99999999999990E+152

-1

9.9

99999999976760E-01

012171

2.3

E-12

2.3

E-12

2.3

24251631002220E-12

02.3

24251631002220E-12

09.9

99999999999990E+152

-1

9.9

99999999976750E-01

012241

2.3

E-12

2.3

E-12

2.3

21031984230800E-12

02.3

21031984230800E-12

09.9

99999999999990E+152

-1

9.9

99999999976780E-01

012311

2.3

E-12

2.3

E-12

2.3

21031984230800E-12

02.3

21031984230800E-12

09.9

99999999999990E+152

-1

9.9

99999999976780E-01

012381

2.3

E-12

2.3

E-12

2.3

16591092132300E-12

02.3

16591092132300E-12

09.9

99999999999990E+152

-1

9.9

99999999976830E-01

012451

2.3

E-12

2.3

E-12

2.3

35353861248470E-12

02.3

35353861248470E-12

09.9

99999999999990E+152

-1

9.9

99999999976640E-01

012521

2.3

E-12

2.3

E-12

2.3

33133415199220E-12

02.3

33133415199220E-12

09.9

99999999999990E+152

-1

9.9

99999999976660E-01

012591

2.3

E-12

2.3

E-12

2.3

40016797951890E-12

02.3

40016797951890E-12

09.9

99999999999990E+152

-1

9.9

99999999976590E-01

012661

2.3

E-12

2.3

E-12

2.3

39683731044510E-12

02.3

39683731044510E-12

09.9

99999999999990E+152

-1

9.9

99999999976600E-01

012731

2.3

E-12

2.3

E-12

2.3

24029586397290E-12

02.3

24029586397290E-12

09.9

99999999999990E+152

-1

9.9

99999999976750E-01

012801

2.3

E-12

2.3

E-12

2.3

27582300076090E-12

02.3

27582300076090E-12

09.9

99999999999990E+152

-1

9.9

99999999976720E-01

012871

2.3

E-12

2.3

E-12

2.3

26250032446540E-12

02.3

26250032446540E-12

09.9

99999999999990E+152

-1

9.9

99999999976730E-01

012941

2.3

E-12

2.3

E-12

2.3

25694920934230E-12

02.3

25694920934230E-12

09.9

99999999999990E+152

-1

9.9

99999999976740E-01

013011

2.3

E-12

2.3

E-12

2.3

37574307297720E-12

02.3

37574307297720E-12

09.9

99999999999990E+152

-1

9.9

99999999976620E-01

013081

2.3

E-12

2.3

E-12

2.3

33466482106610E-12

02.3

33466482106610E-12

09.9

99999999999990E+152

-1

9.9

99999999976660E-01

013151

2.3

E-12

2.3

E-12

2.3

28470478495790E-12

02.3

28470478495790E-12

09.9

99999999999990E+152

-1

9.9

99999999976710E-01

013221

2.3

E-12

2.3

E-12

2.3

29469679217960E-12

02.3

29469679217950E-12

09.9

99999999999990E+152

-1

9.9

99999999976700E-01

013291

2.3

E-12

2.3

E-12

2.3

29802746125340E-12

02.3

29802746125340E-12

09.9

99999999999990E+152

-1

9.9

99999999976700E-01

013361

2.3

E-12

2.3

E-12

2.3

20143805811100E-12

02.3

20143805811100E-12

09.9

99999999999990E+152

-1

9.9

99999999976790E-01

013431

2.3

E-12

2.3

E-12

2.3

18811538181550E-12

02.3

18811538181550E-12

09.9

99999999999990E+152

-1

9.9

99999999976810E-01

013501

2.3

E-12

2.3

E-12

2.3

05932951095900E-12

02.3

05932951095900E-12

09.9

99999999999990E+152

-1

9.9

99999999976940E-01

013571

2.3

E-12

2.3

E-12

2.3

04156594256500E-12

02.3

04156594256500E-12

09.9

99999999999990E+152

-1

9.9

99999999976950E-01

0

絶対

誤差

(モグラ

表現

)相

対誤

差(モ

グラ

表現

)分

布関

数の

真値

(モグラ

表現

)(モ

グラ

表現

)絶

対誤

差相

対誤

差分

布関

数の

真値

分布

関数

の計

算値

10万

0.1

x絶

対誤

差相

対誤

Page 83: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

6. 分布関数の相対誤差の挙動についての解釈

第6節では各方法による分布関数の計算値の相対誤差が表にまとめられている.真値 に

対する(ある方法の)計算値 の相対誤差 は である.0 でない真値 ,

に対する計算値をそれぞれ , とすれば,| |

t

t ( )r t ˆ( ) | ( ) / |r t t t t= − a

b a b a × ( )r a = ˆ| |a a− ,| | だ

から, かつ | | の下では,

b × ( )r b = ˆ| |b b−ˆˆ| | |a a b b− = − | | |a b< ( )r b < ( )r a となる.真値 が1に近い数

で,計算値 は真値に近いとしよう.真値1

( 1)t <

ˆ( 1)t < t− ( 0)> の計算値として を採用し

た場合,相対誤差 , がどのようになるか調べてみよう.仮定より

であり,

ˆ1 ( 0)t− >

t

( )r t (1 )r t− ˆ ˆ0 1 1t t< − < <ˆ| |t t− = ˆ| (1 ) (1 ) |t− − − は明らかだから, ˆ( )r t < ˆ(1 )r t− となる.以上の議論を2

項確率分布関数の計算法に対して考えてみよう.

0 x n< < で下側確率 ( ; , )B x n p がかなり1に近い場合を想定する. はほぼ絶

対誤差に等しい.計算値

ˆ( ( ; , ))r B x n pˆ( ; , )B x n p を利用して上側確率 1 ( ; , )B x n p− の計算値として

ˆ1 ( ; , )B x n p− を採用する.上で述べたことから, ˆ( ( ; , ))r B x n p < ˆ(1 ( ; , ))r B x n p− となる.逆

に,0 x n< < で下側確率 ( ; , )B x n p がかなり に近い場合を想定する.計算値0 ˆ( ; , )B x n p を利

用して上側確率1 ( ; , )B x n p− の計算値として ˆ1 ( ; , )B x n p− を採用する.上で述べたことから,

となる. ˆ(1 ( ; , ))r B x n p− < ˆ( ( ; , ))r B x n p 例 6.1. =1 億,n p =0.5 に対して,真値 を方法Ⅰで算出した値),;( pnxB ˆ( ; , )B x n p の絶対

誤差,相対誤差は次ページの表のようになる.

82

Page 84: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

83

方法

Ⅰ(

n =

)(

p =

)

49812603

1.0

E-307

1.0

E+00

9.9

95771252682900E-02

-2

1.0

00000000000000E+00

09.9

95771252682900E-02

-2

0.0

00000000000000E+00

049816350

1.2

E-295

1.0

E+00

1.2

15358608979090E+11

-2

1.0

00000000000000E+00

01.2

15358608979090E+11

-2

0.0

00000000000000E+00

049820097

8.4

E-284

1.0

E+00

8.4

30811384231830E+22

-2

1.0

00000000000000E+00

08.4

30811384231830E+22

-2

0.0

00000000000000E+00

049823844

3.3

E-272

1.0

E+00

3.3

36712442796600E+34

-2

1.0

00000000000000E+00

03.3

36712442796600E+34

-2

0.0

00000000000000E+00

049827591

7.5

E-261

1.0

E+00

7.5

34610772172620E+45

-2

1.0

00000000000000E+00

07.5

34610772172620E+45

-2

0.0

00000000000000E+00

049831338

9.7

E-250

1.0

E+00

9.7

07427998799930E+56

-2

1.0

00000000000000E+00

09.7

07427998799930E+56

-2

0.0

00000000000000E+00

049835085

7.1

E-239

1.0

E+00

7.1

36053528325670E+67

-2

1.0

00000000000000E+00

07.1

36053528325670E+67

-2

0.0

00000000000000E+00

049838832

3.0

E-228

1.0

E+00

2.9

93177404219420E+78

-2

1.0

00000000000000E+00

02.9

93177404219420E+78

-2

0.0

00000000000000E+00

049842579

7.2

E-218

1.0

E+00

7.1

63706888746160E+88

-2

1.0

00000000000000E+00

07.1

63706888746160E+88

-2

0.0

00000000000000E+00

049846326

9.8

E-208

1.0

E+00

9.7

83301710645120E+98

-2

1.0

00000000000000E+00

09.7

83301710645120E+98

-2

0.0

00000000000000E+00

049850073

7.6

E-198

1.0

E+00

7.6

24080842480440E+108

-2

1.0

00000000000000E+00

07.6

24080842480440E+108

-2

0.0

00000000000000E+00

049853820

3.4

E-188

1.0

E+00

3.3

90447023116360E+118

-2

1.0

00000000000000E+00

03.3

90447023116360E+118

-2

0.0

00000000000000E+00

049857567

8.6

E-179

1.0

E+00

8.6

04147937066260E+127

-2

1.0

00000000000000E+00

08.6

04147937066260E+127

-2

0.0

00000000000000E+00

049861314

1.2

E-169

1.0

E+00

1.2

46106959552020E+137

-2

1.0

00000000000000E+00

01.2

46106959552020E+137

-2

0.0

00000000000000E+00

049865061

1.0

E-160

1.0

E+00

1.0

29948831369500E+146

-2

1.0

00000000000000E+00

01.0

29948831369500E+146

-2

0.0

00000000000000E+00

049868808

4.9

E-152

1.0

E+00

4.8

58548403131050E+01

-1

1.0

00000000000000E+00

04.8

58548403131050E+01

-1

0.0

00000000000000E+00

049872555

1.3

E-143

1.0

E+00

1.3

08118736140910E+10

-1

1.0

00000000000000E+00

01.3

08118736140910E+10

-1

0.0

00000000000000E+00

049876302

2.0

E-135

1.0

E+00

2.0

10288663796900E+18

-1

1.0

00000000000000E+00

02.0

10288663796900E+18

-1

0.0

00000000000000E+00

049880049

1.8

E-127

1.0

E+00

1.7

63449693901410E+26

-1

1.0

00000000000000E+00

01.7

63449693901410E+26

-1

0.0

00000000000000E+00

049883796

8.8

E-120

1.0

E+00

8.8

30514676900270E+33

-1

1.0

00000000000000E+00

08.8

30514676900270E+33

-1

0.0

00000000000000E+00

049887543

2.5

E-112

1.0

E+00

2.5

24378934615740E+41

-1

1.0

00000000000000E+00

02.5

24378934615740E+41

-1

0.0

00000000000000E+00

049891290

4.1

E-105

1.0

E+00

4.1

20013967092880E+48

-1

1.0

00000000000000E+00

04.1

20013967092880E+48

-1

0.0

00000000000000E+00

049895037

3.8

E-98

1.0

E+00

3.8

39295657531810E+55

-1

1.0

00000000000000E+00

03.8

39295657531810E+55

-1

0.0

00000000000000E+00

049898784

2.0

E-91

1.0

E+00

2.0

42912718871870E+62

-1

1.0

00000000000000E+00

02.0

42912718871870E+62

-1

0.0

00000000000000E+00

049902531

6.2

E-85

1.0

E+00

6.2

07749302900220E+68

-1

1.0

00000000000000E+00

06.2

07749302900220E+68

-1

0.0

00000000000000E+00

049906278

1.1

E-78

1.0

E+00

1.0

77333167677080E+75

-1

1.0

00000000000000E+00

01.0

77333167677080E+75

-1

0.0

00000000000000E+00

049910025

1.1

E-72

1.0

E+00

1.0

67943366478900E+81

-1

1.0

00000000000000E+00

01.0

67943366478900E+81

-1

0.0

00000000000000E+00

049913772

6.0

E-67

1.0

E+00

6.0

47639553014160E+86

-1

1.0

00000000000000E+00

06.0

47639553014160E+86

-1

0.0

00000000000000E+00

049917519

2.0

E-61

1.0

E+00

1.9

56715245220790E+92

-1

1.0

00000000000000E+00

01.9

56715245220790E+92

-1

0.0

00000000000000E+00

049921266

3.6

E-56

1.0

E+00

3.6

17818135364500E+97

-1

1.0

00000000000000E+00

03.6

17818135364500E+97

-1

0.0

00000000000000E+00

049925013

3.8

E-51

1.0

E+00

3.8

23199155864550E+102

-1

1.0

00000000000000E+00

03.8

23199155864550E+102

-1

0.0

00000000000000E+00

049928760

2.3

E-46

1.0

E+00

2.3

09746709715640E+107

-1

1.0

00000000000000E+00

02.3

09746709715640E+107

-1

0.0

00000000000000E+00

049932507

8.0

E-42

1.0

E+00

7.9

79399555023330E+111

-1

1.0

00000000000000E+00

07.9

79399555023330E+111

-1

0.0

00000000000000E+00

049936254

1.6

E-37

1.0

E+00

1.5

76790316393650E+116

-1

1.0

00000000000000E+00

01.5

76790316393650E+116

-1

0.0

00000000000000E+00

049940001

1.8

E-33

1.0

E+00

1.7

82902066169410E+120

-1

1.0

00000000000000E+00

01.7

82902066169410E+120

-1

0.0

00000000000000E+00

0

絶対

誤差

相対

誤差

分布

関数

の真

値分

布関

数の

計算

値絶

対誤

差(モ

グラ

表現

)相

対誤

差(モ

グラ

表現

)分

布関

数の

真値

(モグラ

表現

)(モ

グラ

表現

)x

絶対

誤差

相対

誤差

1億

0.5

Page 85: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

84

方法

Ⅰ(

n =

)(

p =

)

49943748

1.2

E-29

1.0

E+00

4.1

00000000000000E+01

-1

1.0

00000000000000E+00

01.1

54013028966730E+124

-1

0.0

00000000000000E+00

049947495

4.3

E-26

1.0

E+00

4.1

00000000000000E+01

-1

1.0

00000000000000E+00

04.2

77978562069510E+127

-1

0.0

00000000000000E+00

049951242

9.1

E-23

1.0

E+00

4.1

00000000000000E+01

-1

1.0

00000000000000E+00

09.0

88053829504780E+130

-1

0.0

00000000000000E+00

049954989

1.1

E-19

1.0

E+00

4.1

00000000000000E+01

-1

1.0

00000000000000E+00

01.1

07197563408710E+134

-1

0.0

00000000000000E+00

049958736

4.7

E-17

6.1

E-01

4.1

00000000000000E+01

06.1

12750720886570E-01

07.7

42742054106820E+136

-1

3.0

09796846818790E-17

049962483

4.7

E-17

1.5

E-03

4.1

00000000000000E+01

01.5

21095598825690E-03

03.1

11536991710170E+139

-1

3.1

06804046486490E-14

049966230

4.7

E-17

6.6

E-06

4.1

00000000000000E+01

06.5

77070118382220E-06

07.1

96135852964450E+141

-1

7.1

96088523474360E-12

049969977

4.7

E-17

4.9

E-08

4.1

00000000000000E+01

04.9

32678303574410E-08

09.5

96110355202220E+143

-1

9.5

96109881856970E-10

049973724

4.8

E-17

6.5

E-10

4.1

00000000000000E+01

06.4

51155780918300E-10

07.3

97198480982210E+145

-1

7.3

97198476210160E-08

049977471

6.5

E-17

2.0

E-11

4.1

00000000000000E+01

01.9

59130857641940E-11

03.3

07723680264480E+147

-1

3.3

07723680199680E-06

049981218

5.0

E-16

5.8

E-12

4.1

00000000000000E+01

05.8

33732116170330E-12

08.6

22196701358190E+148

-1

8.6

22196701307890E-05

049984965

7.0

E-15

5.3

E-12

4.1

00000000000000E+01

05.3

17493473687720E-12

01.3

19632756886750E+150

-1

1.3

19632756879730E-03

049988712

6.3

E-14

5.3

E-12

4.1

00000000000000E+01

05.2

91464712201850E-12

01.1

98842450379930E+151

-1

1.1

98842450373590E-02

049992459

3.5

E-13

5.3

E-12

4.1

00000000000000E+01

05.2

85655441364740E-12

06.5

76446741042140E+151

-1

6.5

76446741007380E-02

049996206

1.2

E-12

5.3

E-12

4.1

00000000000000E+01

05.2

84600067412850E-12

02.2

40160185349450E+152

-1

2.2

40160185337610E-01

049999953

2.6

E-12

5.3

E-12

4.1

00000000000000E+01

05.2

90647693104990E-12

04.9

62898902766660E+152

-1

4.9

62898902740410E-01

050003700

1.2

E-12

1.6

E-12

4.1

00000000000000E+01

01.5

75348592692460E-12

07.7

03803405564040E+152

-1

7.7

03803405576180E-01

050007447

3.6

E-13

3.9

E-13

4.1

00000000000000E+01

03.8

66821471785350E-13

09.3

18221235280090E+152

-1

9.3

18221235283690E-01

050011194

6.7

E-14

6.7

E-14

4.1

00000000000000E+01

06.7

41305555038440E-14

09.8

74187884963720E+152

-1

9.8

74187884964390E-01

050014941

7.5

E-15

7.5

E-15

4.1

00000000000000E+01

07.4

68431439516090E-15

09.9

85973298923240E+152

-1

9.9

85973298923310E-01

050018688

4.7

E-16

4.7

E-16

4.1

00000000000000E+01

04.7

22138938502390E-16

09.9

99071443399410E+152

-1

9.9

99071443399410E-01

050022435

1.9

E-16

1.9

E-16

4.1

00000000000000E+01

01.8

78929147773390E-16

09.9

99963900416240E+152

-1

9.9

99963900416240E-01

050026182

2.1

E-17

2.1

E-17

4.1

00000000000000E+01

02.0

65405307586810E-17

09.9

99999181749300E+152

-1

9.9

99999181749300E-01

050029929

1.2

E-17

1.2

E-17

4.1

00000000000000E+01

01.1

98043401885550E-17

09.9

99999989240180E+152

-1

9.9

99999989240180E-01

050033676

1.0

E-16

1.0

E-16

4.1

00000000000000E+01

01.0

06681717161020E-16

09.9

99999999918200E+152

-1

9.9

99999999918200E-01

050037423

5.2

E-17

5.2

E-17

4.1

00000000000000E+01

05.1

71644362756040E-17

09.9

99999999999640E+152

-1

9.9

99999999999640E-01

050041170

1.9

E-16

1.9

E-16

4.1

00000000000000E+01

01.8

63201433416330E-16

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050044917

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050048664

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050052411

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050056158

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050059905

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050063652

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050067399

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

050071146

2.7

E-19

2.7

E-19

4.1

00000000000000E+01

02.7

10505431213760E-19

09.9

99999999999990E+152

-1

1.0

00000000000000E+00

0

1億

0.5

x絶

対誤

差相

対誤

差絶

対誤

差相

対誤

差分

布関

数の

真値

分布

関数

の計

算値

絶対

誤差

(モグラ

表現

)相

対誤

差(モ

グラ

表現

)分

布関

数の

真値

(モグラ

表現

)(モ

グラ

表現

)

Page 86: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

方法

Ⅰ(

n =

)(

p =

)

50074893

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050078640

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050082387

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050086134

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050089881

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050093628

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050097375

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050101122

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050104869

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050108616

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050112363

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050116110

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050119857

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050123604

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050127351

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050131098

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050134845

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050138592

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050142339

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050146086

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050149833

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050153580

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050157327

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050161074

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050164821

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050168568

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050172315

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050176062

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050179809

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

050183556

0.0

E+00

0.0

E+00

0.0

00000000000000E+00

00.0

00000000000000E+00

01.0

00000000000000E+00

01.0

00000000000000E+00

0

1億

0.5

x絶

対誤

差相

対誤

差絶

対誤

差相

対誤

差分

布関

数の

真値

分布

関数

の計

算値

絶対

誤差

(モグラ

表現

)相

対誤

差(モ

グラ

表現

)分

布関

数の

真値

(モグラ

表現

)(モ

グラ

表現

)

85

Page 87: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

A New Arithmetic and an Application to Binomial Probability for Very Large Size of Sample

Yasuhisa Hirai1 and Tadashi Nakamura2

1Faculty of Education, Okayama University

3-1-1 Tsushima-naka, Okayama, Okayama, 700-8530, Japan 2Department of Mathematics Information Science

Okayama University of Science

1-1 Ridai-cho, Okayama, Okayama, 700-0005, Japan

Abstract Although forms of probabilities of discrete distributions are simple, calculation of those values by

computer in 1970’s were very tedious when the sample size is large and there are a large number of terms

in the summation. Main reason may be that it is beyond the limit of floating point arithmetic and the

power of computer. To avoid these troubles, many useful approximations without straightforward

calculation has been proposed and often used up to now. Faster and more powerful computers available

in the market today are very cheap. In present circumstance, should we use approximations as ever?

Among various kinds of arithmetic which can treat very large/small number, the most popular one is the

multiple-precision arithmetic. In a practical field, for example, testing hypotheses, we want to get

probability quickly and not to require so accurate value. In these fields, the multiple-precision

arithmetic has demerits such as long calculation time and dependence of memory size of personal

computer. To avoid these demerits, we propose a new arithmetic on the set of real numbers. Based on

the proposed arithmetic, we construct an arithmetic system by C language, which works on the personal

computer. This arithmetic system is quite different from the multiple-precision arithmetic. This is

applicable to various fields in which numerical calculation is needed. Especially, we try to use this

system to calculate binomial probabilities, because computation of binomial probability by a modern

personal computer still includes troubles when the sample size is very large. To do this, we also propose

an algorithm to calculate the binomial probability without approximations and perform it on computer by

using the proposed arithmetic system. The proposed arithmetic system enables us to calculate the

binomial probability for very large sample size. Numerical experiments show that, from the standpoint

of both relative error and calculation time, the proposed algorithm is useful within a practical range of

size of sample.

Page 88: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

Key words: arithmetic algorithm, overflow, underflow, binomial probability

E-mail address: [email protected] (Yasuhisa Hirai)

Page 89: 岡山大学・教育学部:平井 安久 岡山理科大学・総合情報学部: …qdca1385/stat2012/BinomProb_TR90_20… · あった.浮動小数点算術の限界や計算機の能力を超えたことが主な理由で

TITLES

of

TECHNICAL REPORTS OF OKAYAMA STATISTICAL ASSOCIATION

OKAYAMA, JAPAN

formerly TR of Okayama Statisticians Group

September 27, 2004

All communications are to be sent to

Prof. Tomoyuki Tarumi

President of OSA

Okayama University

Okayama 700-8530, JAPAN

[80] 梁祐誠、張方紅、田中豊 (March, 2002)

正準相関分析における局所影響: S-PLUS プログラム

[81] Yoshihiro Yamanishi and Yutaka Tanaka (March, 2002)

Sensitivity Analysis in Functional Principal Component Analysis

[82] Yoshihiro Yamanishi and Yutaka Tanaka (March, 2002)

Penalized Canonical Discriminant Analysis with Multiple Functional Covariates

[83] Yoshihiro Yamanishi and Yutaka Tanaka (March, 2002)

Modeling Spatial Non-stationarity in Functional Regression for Scalar Responses

[84] Yoshihiro Yamanishi and Yutaka Tanaka (March, 2002)

Spatial Prediction based on Geographically Weighted Functional Regression Model

[85] 森 裕一, 飯塚誠也 (July, 2002)

主成分分析における変数選択手法の考察

[86] Eugene Kim, Norihiro Oide, Yutaka Tanaka and Kaoru Fueda (January, 2003)

A Simulation Study on Some Basic Properties ofIndependent Component Analysis

[87] Woosung Yang and Yutaka Tanaka (Febrary, 2003)

A Forward Search Algorithm for Robust Influence Analysis in Multivariate Methods

[88] Patricia Menendez Galvan and Yutaka Tanaka (January, 2004)

Principal Component Analysis and Duality Diagram: A Comparison of French and

Anglo-Saxon Approaches to Principal Component Analysis

[89] 原澤寛浩, 笛田薫, 田中豊 (July, 2004)

スカラー応答の関数回帰分析における感度分析