2011-01-26 15 views
32

Mean、SD、Skew、およびKurtosisが分かっているRで分布を生成することは可能ですか?これまでのところ、乱数を作成し、それに応じて変換するのが最善のルートと思われます。 特定のディストリビューションを生成するのに適したパッケージがあれば、まだ見つかりませんでした。 おかげ与えられた分布、平均、SD、スキュー、尖度をRでどのように生成するか?

+3

としては、それらが一意に分布については説明しません指摘しました。すべての瞬間を定義しても、一意に分布を定義することは保証されません。私はあなたが何をしようとしているのかを説明する必要があると思います。なぜあなたはこれをやろうとしていますか?あなたは配布を定義することを可能にするさらなる制限を置くことができますか? – Dason

+0

ああ、私たちは単一の次元で単峰性の連続分布を求めています。最終的に得られた分布は、シミュレーションを通じてニッチ理論のバリエーションをテストする方法として数値的に変換されます。 –

+2

Cross Validated(stats.SE)では、次の点が読者にとって興味深いかもしれません:[具体的な平均と標準偏差のような特定の制約を満たすデータをシミュレートする方法](http://stats.stackexchange .com/q/30303/7290) – gung

答えて

30

SuppDistsパッケージにジョンソン分布があります。 Johnsonはあなたに瞬間または分位数のいずれかと一致する分布を与えます。他のコメントは正しいですが、4つの瞬間は流通メーカではありません。しかしジョンソンは確かに試みるでしょう。ここで

は、いくつかのサンプルデータにジョンソンを当てはめるの例です:最後のプロットは次のようになります

require(SuppDists) 

## make a weird dist with Kurtosis and Skew 
a <- rnorm(5000, 0, 2) 
b <- rnorm(1000, -2, 4) 
c <- rnorm(3000, 4, 4) 
babyGotKurtosis <- c(a, b, c) 
hist(babyGotKurtosis , freq=FALSE) 

## Fit a Johnson distribution to the data 
## TODO: Insert Johnson joke here 
parms<-JohnsonFit(babyGotKurtosis, moment="find") 

## Print out the parameters 
sJohnson(parms) 

## add the Johnson function to the histogram 
plot(function(x)dJohnson(x,parms), -20, 20, add=TRUE, col="red") 

enter image description here

あなたは他の人が指し示す問題のビットを見ることができます4つの瞬間がどのように分布を完全に捕らえていないかについて、

幸運を祈る!

EDIT ハドリーがコメントで指摘したように、ジョンソンのフィット感が見えます。私は簡単なテストを行い、moment="quant"を使ってジョンソン分布に適合しました。これは、4つのモーメントの代わりに5つの分位数を使ってジョンソン分布に適合します。結果は非常に良く見える:

enter image description here

誰でも瞬間を使用してフィットする際ジョンソンが偏っているようだ理由を任意のアイデアを持っている:

parms<-JohnsonFit(babyGotKurtosis, moment="quant") 
plot(function(x)dJohnson(x,parms), -20, 20, add=TRUE, col="red") 

次を生成しますか?

+2

そのカーブに何か問題があります。単純な位置のずれがフィット感を大幅に向上させるでしょう。 – hadley

+0

私はそれが見えることに同意します。私が少し時間を取ると、私はそれを少し掘り下げるかもしれません。 –

1

これらのパラメータは、実際には完全に分布を定義していません。そのためには、密度や等価的に分布関数が必要です。

0

@デビッドと@Carlは異なる分布を生成するために専用のいくつかのパッケージがあり、上記の書いたように、例えば参照the Probability distributions Task View on CRAN

あなたは(指定したパラメータで特定の分布にフィット数のサンプルを描画する方法を)理論に興味があるなら、単に、例えば、適切な式を探しgamma distribution on Wikiを参照し、提供されたパラメータを使用して単純な品質システムを構成して、スケールと形状を計算します。

私は平均値と標準偏差に基づいて、必要なベータ分布のαおよびβパラメータを計算具体例hereを参照してください。

+0

私はダウンボートを得た理由を明記してください。 – daroczig

12

これは興味深い質問ですが、実際には良い解決策はありません。私はあなたが他の瞬間を知らないにもかかわらず、あなたは流通がどのように見えるべきかの考えを持っていると推測します。たとえば、それは単峰性です。

あり、この問題に取り組むいくつかの異なる方法:

  1. は、基礎となる分布と一致する瞬間を想定します。これを行うための多くの標準Rパッケージがあります。 1つの欠点は、多変量汎化が不明である可能性があることです。

  2. 鞍点近似。本論文では:

    ガレスピー、C。S.とレンショウ、E. An improved saddlepoint approximation.数学バイオサイエンス、2007年

    私たちは、最初のいくつかの瞬間を与えられたとき、PDF/PMFの回復を見てください。このアプローチは、歪度があまり大きくない場合に機能することがわかりました。

  3. ラゲール展開:

    ムスタファ、H.およびDimitrakopoulosa、R. Generalized Laguerre expansions of multivariate probability densities with momentsコンピュータ&数学とアプリケーション、2010.

    このホワイトペーパーの結果はより有望ですが、私はそれらをコード化していません。

3

すべての配信を複製するには密度推定が必要であることに同意します。しかし、モンテカルロシミュレーションで典型的なように、何百もの変数がある場合は、妥協が必要です。

  1. は、与えられたスキューおよび尖度の係数を得るために変換フライシュマンを使用します。

    一つは、次のようなアプローチを推奨します。フライシュマンは、スキューおよび尖度を取り、あなたの係数を与える

  2. 生成するN通常の変数(平均= 0、STD = 1)
  3. は(2)フライシュマン係数で与えられたスキューに、通常のデータを変換するためにデータを変換そして尖度このステップで
  4. 、ステップ(3)と所望の平均と標準偏差(STD)を用いNEW_DATAに変換=所望の平均+(ステップ3からのデータ)*所望STDからの使用データ

ステップ4の結果データは、希望の平均、標準偏差、歪度、尖度を持ちます。

警告:

  1. フライシュマンは歪度のすべての組み合わせのために働き、上記の手順を
  2. をkurtoisませんが、非相関変数を想定しています。相関データを生成する場合は、Fleishman変換の前にステップが必要です
+0

これはR実装ですか? –

7

この質問は3年以上前に尋ねられたので、私の答えが遅すぎることはないと思います。

ここでです。いくつかの瞬間を知っているときに配信を一意に識別する方法です。その方法は最大エントロピーの方法です。この方法の結果として得られる分布は、分布の構造に関する無知を最大にする分布であり、を知っているです。あなたが指定した瞬間もMaxEntディストリビューションではない他のディストリビューションは、暗黙のうちにあなたが入力したものより多くの構造を想定しています。最大化する関数はShannonの情報エントロピー、$ S [p(x)] = - \ int p(x)log p(x)dx $です。平均、sd、歪度および尖度を知ることは、それぞれ分布の第1、第2、第3、および第4の瞬間の制約として解釈される。

問題が制約にS対象最大限にするために、その後です: 1)$ \ int型XP(X)DX = "最初の瞬間" $、 2)の$ \ int型のx^2のp(x)は、DXを= "二次モーメント" $、 3)...など...

私は「Harte、J.、最大エントロピーとエコロジー:豊かさ、流通、そしてエネルギーの理論」(Oxford University Press、Newヨーク、2011)。ここで

はRでこれを実装しようとするリンクです: https://stats.stackexchange.com/questions/21173/max-entropy-solver-in-r

関連する問題