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] *)
他のディストリビューションにも適合します。
もう 1 つの便利な V8 関数はHistogramList
、Histogram
のビニング データを提供する です。のすべて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
を使用して同じリストを取得できます。
Histogram[data,bspec,fh] の関数 fh は 2 つの引数に適用されます: ビンのリスト {{Subscript[b, 1],Subscript[b, 2]},{Subscript[b, 2],Subscript[b , 3]},[Ellipsis]}、および対応するカウント {Subscript[c, 1],Subscript[c, 2],[Ellipsis]} のリスト。この関数は、Subscript[c, i] のそれぞれに使用される高さのリストを返す必要があります。
これは次のように使用できます(私の以前の回答から):
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
なります。