Re: Question on SmoothKernelDistribution, value of computed bandwidth? (vrs. 8.01)
- To: mathgroup at smc.vnet.net
- Subject: [mg121482] Re: Question on SmoothKernelDistribution, value of computed bandwidth? (vrs. 8.01)
- From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
- Date: Fri, 16 Sep 2011 05:50:30 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
On Thu, 15 Sep 2011 09:41:16 +0100, kristoph <kristophs.post at web.de> wrote: > Hi > > Regarding the function SmoothKernelDistribution I'm aware that it is > possible to compute the kernel pdf of some data. In order to do so > Mathematica computes the bandwidth parameter if it is not provided. > > I was wondering if it is possible to retrieve the value of the > computed bandwidth parameter somehow. I was unable to do so, but I > think it is possible since Mathematica is computing and using it in > order to compute the kernel pdf. > > Does anyone have an idea? Thanks in advance for help. > > Here is an example: > > data=RandomReal[1,1000]; > dist= SmoothKernelDistribution[data, > "LeastSquaresCrossValidation", "Epanechnikov"]; > Plot[PDF[dist, x], {x, -1, 1}, Filling -> Axis, Exclusions -> None] > It is possible, but absolutely undocumented and reliant on functions that are not meant to be exposed to or called by the user. Thus you should apply the following only with extreme caution. The bandwidth is calculated as follows: bandwidth[data_, method_, kf_] := Block[ { length = Length[data], dim = Statistics`DataDistributionUtilities`KDEGetDimensionality[data], sd = Statistics`DataDistributionUtilities`Dump`stDev[data] }, Statistics`DataDistributionUtilities`Dump`iAutoBW[length, dim, sd, method, data, kf] ] or in your case, In[2] := data=RandomReal[1,1000]; bandwidth[data, "LeastSquaresCrossValidation", "Epanechnikov"] Out[3] = 0.0201149 Note that, depending on the data, this may give the message, KernelMixtureDistribution::lscv: Unable to minimize the least squares cross-validation function; Silverman's method will be used.