14

Mathematica 8では、密度質量をリストとして与えられた離散分布を定義したいと思います。例えば、

In[1] f = ProbabilityDistribution[{2/3, 1/3}[[x]], {x, 1, 2, 1}];

これはうまくいくようです。ただし、これにより2回繰り返される警告が発生しました。

"Part::pspec: Part specification x is neither an integer nor a list of integers." 

それにもかかわらず、fは正しく機能しているようです。このメッセージは、同じ分布を定義するためのより良い方法があるかもしれないと私に考えさせました。警告を呼び出さずに、リストを使用して離散分布を定義するにはどうすればよいですか?

4

2 に答える 2

17

EmpiricalDistribution値のリストから分布を作成するときに使用することをお勧めします。

empiricalDistribution = EmpiricalDistribution[{2/3, 1/3} -> {1, 2}]

そして、これを他の統計および視覚化機能で使用できます。

Plot[CDF[empiricalDistribution][x], {x, 0, 4}]

あなたがpdfを持っているとき、関数ProbabilityDistributionはより適切です。

于 2011-11-10T18:44:25.323 に答える
13

重みのリストをPiecewiseに変換し、それをProbabilityDistributionにフィードできます。

wts = {2/3, 1/3};
toPiecewise[wts_, x_] := 
 Piecewise[MapIndexed[{#1, x == #2[[1]]} &, wts]]

In[178]:= f = 
 ProbabilityDistribution[toPiecewise[wts, x], {x, 1, 2, 1}]

Out[178]= ProbabilityDistribution[
 Piecewise[{{2/3, \[FormalX] == 1}, {1/3, \[FormalX] == 2}}, 0], 
   {\[FormalX], 1, 2, 1}]

ダニエル・リヒトブラウ

于 2011-11-10T17:46:18.453 に答える