あなたはMMA V8を持っている場合は、それはあまりにも他のディストリビューションに合うことができる新しいDistributionFitTest
disFitObj = DistributionFitTest[daList, NormalDistribution[a, b],"HypothesisTestData"];
Show[
SmoothHistogram[daList],
Plot[PDF[disFitObj["FittedDistribution"], x], {x, 0, 120},
PlotStyle -> Red
],
PlotRange -> All
]
disFitObj["FittedDistributionParameters"]
(* ==> {a -> 55.8115, b -> 20.3259} *)
disFitObj["FittedDistribution"]
(* ==> NormalDistribution[55.8115, 20.3259] *)
を使用することができます。
別の有用なV8機能がHistogram
のビニングデータを提供しますHistogramList
、です。それはHistogram
のオプションもほぼすべてかかります。
{bins, counts} = HistogramList[daList]
(* ==> {{0, 20, 40, 60, 80, 100}, {2, 10, 20, 17, 7}} *)
centers = MovingAverage[bins, 2]
(* ==> {10, 30, 50, 70, 90} *)
model = s E^(-((x - \[Mu])^2/\[Sigma]^2));
pars = FindFit[{centers, counts}\[Transpose],
model, {{\[Mu], 50}, {s, 20}, {\[Sigma], 10}}, x]
(* ==> {\[Mu] -> 56.7075, s -> 20.7153, \[Sigma] -> 31.3521} *)
Show[Histogram[daList],Plot[model /. pars // Evaluate, {x, 0, 120}]]
また、フィッティングのためNonlinearModeFit
を試みることができます。どちらの場合も、あなた自身の初期パラメータ値を持って来て、全体的に最適なフィットで終わる可能性が最も高いのは良いことです。 V7では
そこにはHistogramList
はありませんが、あなたはthisを使用して同じリストを得ることができます:
ヒストグラムの関数FH [データ、bspec、FH]は2つの の引数に適用されます。リスト下付き文字[b、1]、下付き文字[b、 2]}、{下付き文字[b、2]、下付き文字[b、3]}、[省略形]}、対応する のリスト{下付き文字[ c、1]、添え字[c、2]、[省略記号]}である。 関数は、 添え字[c、i]のそれぞれに使用される高さのリストを返す必要があります。
次のようにこれは(from my earlier answer)を使用することができます。もちろん
Reap[Histogram[daList, Automatic, (Sow[{#1, #2}]; #2) &]][[2]]
(* ==> {{{{{0, 20}, {20, 40}, {40, 60}, {60, 80}, {80, 100}}, {2,
10, 20, 17, 7}}}} *)
、あなたはまだBinCounts
を使用することができますが、MMAの自動ビニングアルゴリズムを欠場。あなたはフィットのパラメータは、あなたのビニング選択にかなり依存して見ることができるように
counts = BinCounts[daList, {0, Ceiling[Max[daList], 10], 10}]
(* ==> {1, 1, 6, 4, 11, 9, 9, 8, 5, 2} *)
centers = Table[c + 5, {c, 0, Ceiling[Max[daList] - 10, 10], 10}]
(* ==> {5, 15, 25, 35, 45, 55, 65, 75, 85, 95} *)
pars = FindFit[{centers, counts}\[Transpose],
model, {{\[Mu], 50}, {s, 20}, {\[Sigma], 10}}, x]
(* ==> \[Mu] -> 56.6575, s -> 10.0184, \[Sigma] -> 32.8779} *)
Show[
Histogram[daList, {0, Ceiling[Max[daList], 10], 10}],
Plot[model /. pars // Evaluate, {x, 0, 120}]
]
:あなたはあなた自身のビニングを提供する必要があります。特にs
と呼ばれるパラメータは、ビンの量に大きく依存します。ビンが多いほど、個々のビン数が少なくなり、値が低くなると、s
となります。
ありがとう、これは非常に役に立ちます。 – 500