Chapter 19 確率分布
Rcpp は R にある主要な全ての確率分布関数を提供します。R と同じく各確率分布のそれぞれについて d p q r の文字から始まる4つの関数が定義されています。
確率分布 XXX に関する4つの関数
- dXXX: 確率密度関数
- pXXX: 累積分布関数
- qXXX: 分位関数
- rXXX: 乱数生成関数
19.1 確率分布関数の基本構造
Rcpp では、同じ名前の確率分布関数が R::
と Rcpp::
の2つの名前空間で定義されています。これらの違いは、Rcpp::
名前空間で定義されている確率分布関数はベクトルを返すのに対して、R::
名前空間の関数はスカラーを返すということです。通常は Rcpp::
名前空間の関数を使えば良いですが、スカラー値が欲しい場合は R:: 名前空間の関数のほうが速度が速いためそちらを用いたほうが良いでしょう。
下に Rcpp::
名前空間で定義されている確率分布関数の基本構造を示します。基本的には Rcpp::
名前空間で定義されている確率分布関数は R にある確率分布関数と同じ機能を持っています。実際にはソースコード中に Rcpp::
名前空間の確率分布関数の定義はそのまま書かれてはいない(マクロを使って記述されているため)のですが、ユーザーにとってはこのような形式の関数が定義されていると考えて差し支えありません。
NumericVector Rcpp::dXXX( NumericVector x, double par, bool log = false )
NumericVector Rcpp::pXXX( NumericVector q, double par, bool lower = true, bool log = false )
NumericVector Rcpp::qXXX( NumericVector p, double par, bool lower = true, bool log = false )
NumericVector Rcpp::rXXX( int n, double par )
次に R::
名前空間で定義されている確率分布関数の基本構造を示します。これは double を受け取り double を返すという点以外は Rcpp::
名前空間で定義されている確率分布関数と基本的には同じ機能を持っています。しかし、引数のデフォルト値は与えられていないのでユーザーが明示的に与える必要があります。
double R::dXXX( double x, double par, int log )
double R::pXXX( double q, double par, int lower, int log )
double R::qXXX( double p, double par, int lower, int log )
double R::rXXX( double par )
下に確率分布関数の引数の説明を示します。
引数 | 説明 |
---|---|
x, q | 確率変数の値(のベクトル) |
p | 分位数を求めたい確率値(のベクトル) |
n | 発生させたい乱数の個数 |
par | 分布パラメータの値(実際には確率分布によって分布パラメータの数は異なる) |
lower | true : 確率変数の値が x 以下の領域の確率を算出する、false : x より大の領域の確率を算出する |
log | true : 確率を対数変換した値を算出する |
##確率分布関数の一覧
以下では Rcpp が提供する確率分布関数の一覧を示します。ここでは確率分布の分布パラメータの名前は R の確率分布関数と一致させているので、詳しくは R のヘルプを参照してください。
19.1.1 連続分布
19.1.2 離散分布
- 二項分布
- 負の二項分布(成功確率を指定するバージョン)
- 負の二項分布(平均値を指定するバージョン)
- ポワソン分布
- 幾何分布
- 超幾何分布
- ウィルコクソン順位和検定統計量の分布
- ウィルコクソン符号順位検定統計量の分布
##連続分布
19.1.3 一様分布
区間 min から max の一様分布の情報を与えます。
Rcpp::dunif( x, min = 0.0, max = 1.0, log = false )
Rcpp::punif( x, min = 0.0, max = 1.0, lower = true, log = false )
Rcpp::qunif( q, min = 0.0, max = 1.0, lower = true, log = false )
Rcpp::runif( n, min = 0.0, max = 1.0 )
R::dunif( x, min, max, log )
R::punif( x, min, max, lower, log )
R::qunif( q, min, max, lower, log )
R::runif( min, max )
19.1.4 正規分布
平均値 mean 標準偏差 sd の正規分布の情報を与えます。
Rcpp::dnorm( x, mean = 0.0, sd = 1.0, log = false )
Rcpp::pnorm( x, mean = 0.0, sd = 1.0, lower = true, log = false )
Rcpp::qnorm( q, mean = 0.0, sd = 1.0, lower = true, log = false )
Rcpp::rnorm( n, mean = 0.0, sd = 1.0 )
R::dnorm( x, mean, sd, log )
R::pnorm( x, mean, sd, lower, log )
R::qnorm( q, mean, sd, lower, log )
R::rnorm( mean, sd )
19.1.5 対数正規分布
位置パラメータmeanlog 尺度パラメータ meansd の対数正規分布の情報を与えます。
Rcpp::dlnorm( x, meanlog = 0.0, sdlog = 1.0, log = false )
Rcpp::plnorm( x, meanlog = 0.0, sdlog = 1.0, lower = true, log = false )
Rcpp::qlnorm( q, meanlog = 0.0, sdlog = 1.0, lower = true, log = false )
Rcpp::rlnorm( n, meanlog = 0.0, sdlog = 1.0 )
R::dlnorm( x, meanlog, sdlog, log )
R::plnorm( x, meanlog, sdlog, lower, log )
R::qlnorm( q, meanlog, sdlog, lower, log )
R::rlnorm( meanlog, sdlog )
19.1.6 ガンマ分布
形状パラメータ shape、尺度パラメータ scale のガンマ分布の情報を与えます。
Rcpp::dgamma( x, shape, scale = 1.0, log = false )
Rcpp::pgamma( x, shape, scale = 1.0, lower = true, log = false )
Rcpp::qgamma( q, shape, scale = 1.0, lower = true, log = false )
Rcpp::rgamma( n, shape, scale = 1.0 )
R::dgamma( x, shape, scale, log )
R::pgamma( x, shape, scale, lower, log )
R::qgamma( q, shape, scale, lower, log )
R::rgamma( shape, scale )
19.1.7 ベータ分布
形状パラメータ shape1, shape2 を持つベータ分布の情報を与えます。これは R のベータ分布関数において非心パラメータ ncp の値に 0 を設定した場合に相当します。
Rcpp::dbeta( x, shape1, shape2, log = false )
Rcpp::pbeta( x, shape1, shape2, lower = true, log = false )
Rcpp::qbeta( q, shape1, shape2, lower = true, log = false )
Rcpp::rbeta( n, shape1, shape2)
R::dbeta( x, shape1, shape2, log )
R::pbeta( x, shape1, shape2, lower, log )
R::qbeta( q, shape1, shape2, lower, log )
R::rbeta( shape1, shape2 )
19.1.8 非心ベータ分布
形状パラメータ shape1、shape2、非心パラメータ ncp を持つベータ分布の情報を与えます。ncp = 0 ではベータ分布に一致します。
Rcpp::dnbeta( x, shape1, shape2, ncp, log = false );
Rcpp::pnbeta( x, shape1, shape2, ncp, lower = true, log = false );
Rcpp::qnbeta( q, shape1, shape2, ncp, lower = true, log = false );
// Rcpp::rnbeta関数は存在しません
R::dnbeta( x, shape1, shape2, ncp, log )
R::pnbeta( x, shape1, shape2, ncp, lower, log )
R::qnbeta( q, shape1, shape2, ncp, lower, log )
R::rnbeta( shape1, shape2, ncp )
19.1.9 カイ2乗分布
自由度 df のカイ2乗分布の情報を与えます。これは R のカイ2乗分布関数において非心パラメータ ncp の値に 0 を設定した場合に相当します。
19.1.10 非心カイ2乗分布
自由度 df 、非心パラメータ ncp を持つベータ分布の情報を与えます。ncp = 0 ではカイ2乗分布に一致します。
Rcpp::dnchisq( x, df, ncp, log = false )
Rcpp::pnchisq( x, df, ncp, lower = true, log = false )
Rcpp::qnchisq( q, df, ncp, lower = true, log = false )
Rcpp::rnchisq( n, df, ncp = 0.0 )
R::dnchisq( x, df, ncp, log )
R::pnchisq( x, df, ncp, lower, log )
R::qnchisq( q, df, ncp, lower, log )
R::rnchisq( df, ncp )
19.1.11 t分布
自由度 df の t 分布の情報を与えます。これは R の t 分布関数において非心パラメータ ncp の値に 0 を設定した場合に相当します。
19.1.12 非心t分布
自由度 df、非心パラメータ ncp の t 分布の情報を与えます。ncp = 0 では t 分布に一致します。
19.1.13 F分布
自由度 df1, df2 のF分布の情報を与えます。これは R のF分布関数において非心パラメータ ncp の値に 0 を設定した場合に相当します。
19.1.14 非心F分布
自由度 df1, df2 非心パラメータ ncp の F 分布の情報を与えます。ncp = 0 では F 分布に一致します。
Rcpp::dnf( x, df1, df2, ncp, log = false )
Rcpp::pnf( x, df1, df2, ncp, lower = true, log = false )
Rcpp::qnf( q, df1, df2, ncp, lower = true, log = false )
// Rcpp::rnf関数は存在しません
R::dnf( x, df1, df2, ncp, log )
R::pnf( x, df1, df2, ncp, lower, log )
R::qnf( q, df1, df2, ncp, lower, log )
// R::rnf関数は存在しません
19.1.15 コーシー分布
位置パラメータ location、尺度パラメータ scale のコーシー分布の情報を与えます。
Rcpp::dcauchy( x, location = 0.0, scale = 1.0, log = false )
Rcpp::pcauchy( x, location = 0.0, scale = 1.0, lower = true, log = false )
Rcpp::qcauchy( q, location = 0.0, scale = 1.0, lower = true, log = false )
Rcpp::rcauchy( n, location = 0.0, scale = 1.0)
R::dcauchy( x, location, scale, log )
R::pcauchy( x, location, scale, lower, log )
R::qcauchy( q, location, scale, lower, log )
R::rcauchy( location, scale )
19.1.16 指数分布
割合 rate (平均が1/rate) の指数分布の情報を与えます。
19.1.17 ロジスティック分布
位置パラータ location 尺度パラメータ scale のロジスティック分布の情報を与えます。
Rcpp::dlogis( x, location = 0.0, scale = 1.0, log = false )
Rcpp::plogis( x, location = 0.0, scale = 1.0, lower = true, log = false )
Rcpp::qlogis( q, location = 0.0, scale = 1.0, lower = true, log = false )
Rcpp::rlogis( n, location = 0.0, scale = 1.0 )
R::dlogis( x, location, scale, log )
R::plogis( x, location, scale, lower, log )
R::qlogis( q, location, scale, lower, log )
R::rlogis( location, scale )
19.1.18 ワイブル分布
形状パラメータ shape、尺度パラメータ scale のワイブル分布の情報を与えます。
Rcpp::dweibull( x, shape, scale = 1.0, log = false )
Rcpp::pweibull( x, shape, scale = 1.0, lower = true, log = false )
Rcpp::qweibull( q, shape, scale = 1.0, lower = true, log = false )
Rcpp::rweibull( n, shape, scale = 1.0 )
R::dweibull( x, shape, scale, log )
R::pweibull( x, shape, scale, lower, log )
R::qweibull( q, shape, scale, lower, log )
R::rweibull( shape, scale )
19.2 離散分布
19.2.1 二項分布
試行回数 size 成功確率 prob の二項分布の情報を与えます。
Rcpp::dbinom( x, size, prob, log = false )
Rcpp::pbinom( x, size, prob, lower = true, log = false )
Rcpp::qbinom( q, size, prob, lower = true, log = false )
Rcpp::rbinom( n, size, prob )
R::dbinom( x, size, prob, log )
R::pbinom( x, size, prob, lower, log )
R::qbinom( q, size, prob, lower, log )
R::rbinom( size, prob )
19.2.2 負の二項分布(成功確率を指定するバージョン)
成功回数 size、1試行あたりの成功確率 prob の負の二項分布の情報を与えます。
Rcpp::dnbinom( x, size, prob, log = false )
Rcpp::pnbinom( x, size, prob, lower = true, log = false )
Rcpp::qnbinom( q, size, prob, lower = true, log = false )
Rcpp::rnbinom( n, size, prob )
R::dnbinom( x, size, prob, log )
R::pnbinom( x, size, prob, lower, log )
R::qnbinom( q, size, prob, lower, log )
R::rnbinom( size, prob )
19.2.3 負の二項分布(平均値を指定するバージョン)
成功回数 size、分布の平均が mu (=size/prob) の負の二項分布の情報を与えます。
Rcpp::dnbinom_mu( x, size, mu, log = false )
Rcpp::pnbinom_mu( x, size, mu, lower = true, log = false )
Rcpp::qnbinom_mu( q, size, mu, lower = true, log = false )
Rcpp::rnbinom_mu( n, size, mu )
R::dnbinom_mu( x, size, mu, log )
R::pnbinom_mu( x, size, mu, lower, log )
R::qnbinom_mu( q, size, mu, lower, log )
R::rnbinom_mu( size, mu )
19.2.4 ポワソン分布
平均値と分散が lambda であるポワソン分布の情報を与えます。
19.2.5 幾何分布
成功確率 prob の幾何分布の情報を与えます。
19.2.6 超幾何分布
母集団に含まれる成功数 m、母集団に含まれる失敗数 n、母集団からサンプリングする標本の数 k の超幾何分布の情報を与えます。
19.2.7 ウィルコクソン順位和検定統計量の分布
標本数がそれぞれ m、n である2つの標本に対してウィルコクソン順位和検定(マン・ホイットニーのU検定)を行ったときの検定統計量の分布の情報を与えます。
19.2.8 ウィルコクソン符号順位検定統計量の分布
n 個の標本への各2回の観察に対してウィルコクソン符号順位検定を行ったときの検定統計量の分布の情報を与えます。