Eğer MMA V8 varsa Çok diğer dağılımları sığabilecek yeni 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] *)
kullanabilirsiniz.
Yararlı başka V8 fonksiyonu Histogram
'ın gruplama verisi sağlamaktadır ki, HistogramList
olduğunu. O da Histogram
's seçeneklerinin hepsini alır.
{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}]]
Ayrıca uydurma için NonlinearModeFit
deneyebilirsiniz. Her iki durumda da, global olarak en uygun bir uyumla sonuçlanacak en iyi şansa sahip olmak için kendi başlangıç parametresi değerleriyle gelmeniz iyi olur. V7
hiçbir HistogramList
yoktur ancak this kullanarak aynı listeyi alabilir:
Histogram [veriler, bspec, fh] işlevi fh iki argümanlar uygulanır
: bir liste kutuları {{Subscript [b, 1], Subscript [b, 2]}, {Subscript [b, 2], Subscript [b, 3]}, [Ellipsis]} ve karşılık gelen sayım listesi {Subscript [ c, 1], Abstrakt [c, 2], [Ellipsis]}. işlevi, Abstraktının [c, i] her biri için kullanılacak bir yükseklik listesi döndürmelidir.
Reap[Histogram[daList, Automatic, (Sow[{#1, #2}]; #2) &]][[2]]
(* ==> {{{{{0, 20}, {20, 40}, {40, 60}, {60, 80}, {80, 100}}, {2,
10, 20, 17, 7}}}} *)
Tabii, yine BinCounts
kullanabilirsiniz ancak MMA otomatik gruplama algoritmaları özledim: (from my earlier answer) aşağıdaki gibi
Bu
kullanılabilir. Gördüğünüz gibi
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}]
]
uyum parametreler gruplama seçimine biraz bağlı olabilir: Kendi bir binning sağlamak zorunda.Özellikle, s
isimli parametre, kritik olarak bidonların miktarına bağlıdır. Daha fazla kutu, bireysel bin sayısı azalır ve s
'un değeri düşer.
Çok teşekkürler, bu çok yardımcı oluyor. – 500