MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Fit Gaussian function to histogram

  • To: mathgroup at smc.vnet.net
  • Subject: [mg117853] Re: Fit Gaussian function to histogram
  • From: dr DanW <dmaxwarren at gmail.com>
  • Date: Fri, 1 Apr 2011 02:37:11 -0500 (EST)
  • Reply-to: comp.soft-sys.math.mathematica at googlegroups.com

I find it easier to fit to the CDF.  The shape of the histogram depends on bin widths, so some of the decisions you have to make to get a good quality fit are arbitrary.  The cumulative frequency of your data, however, is unambiguous.

CumulativeFrequency[dat_] := With[{tsd = Tally[Sort[dat]]}, 
   Transpose[{tsd[[All,1]], Accumulate[tsd[[All,2]]]/(Length[dat] + 1)}]]

FitCDF[d_] := Module[{mean, sd, cf, param}, mean = Mean[d]; sd = StandardDeviation[d]; 
    cf = CumulativeFrequency[d]; param = FindFit[cf, CDF[NormalDistribution[\[Mu], \[Sigma]], 
       x], {{\[Mu], mean}, {\[Sigma], sd}}, x]; 
    Print[Show[{ListPlot[cf], Plot[Evaluate[CDF[NormalDistribution[\[Mu], \[Sigma]], x] /. 
          param], Evaluate[{x, \[Mu] - 3*\[Sigma], \[Mu] + 3*\[Sigma]} /. param]]}]]; param]

Notice that this technique works with any distribution (with suitable modification of FitCDF).

Mathematica 8 has a lot of new tools for statistics and probability, many of which I do not understand.  Perhaps you are looking for HypothesisTesting`?

Enjoy,
Daniel


  • Prev by Date: Re: NonlinearFit for specific data
  • Next by Date: Re: read CSV)
  • Previous by thread: Re: Fit Gaussian function to histogram
  • Next by thread: Re: Fit Gaussian function to histogram