Si tiene MMA V8 podría utilizar el nuevo 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] *)
Puede caber otras distribuciones también.
Otra función útil es V8 HistogramList
, que proporciona datos de agrupación Histogram
's. También se necesitan todas las opciones de 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}]]

También puede probar NonlinearModeFit
para el montaje. En ambos casos, es bueno venir con sus propios valores de parámetros iniciales para tener las mejores posibilidades de que termine con un ajuste globalmente óptimo.
En V7 no hay HistogramList
, pero se podía conseguir la misma lista con this:
El FH función de histograma [datos, bspec, FH] se aplica a dos argumentos: una lista de bandejas {{Subíndice [b, 1], Subíndice [b, 2]}, {Subíndice [b, 2], Subíndice [b, 3]}, [Elipsis]}, y correspondiente lista de recuentos {Subíndice [ c, 1], Subíndice [c, 2], [Ellipsis]}. La función debe devolver una lista de alturas que se utilizarán para cada uno de los Subíndices [c, i].
Esto se puede utilizar de la siguiente manera (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}}}} *)
Por supuesto, todavía se puede utilizar BinCounts
pero el que más te algoritmos de agrupación automática de MMA. Usted tiene que proporcionar un binning de su propia:
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}]
]

Como se puede ver los parámetros de ajuste puede depender un poco en su elección de agrupación.Particularmente, el parámetro que llamé s
depende críticamente de la cantidad de contenedores. Cuantos más contenedores, menor será el número de contenedores individuales y menor será el valor de s
.
muchas gracias, esto es muy útil. – 500