I suspect that R's help("density") will tell about the difference between its bw and width arguments. In Splus help("density") says about "width" width width of the window. ... The standard error of a Gaussian window is width/4. For the other windows width is the width of the interval on which the window is non-zero. I believe R's bw argument is the standard deviation of the density used for the kernel. In R 'width' has the same meaning as in S+. The small difference between estimates when using the same bandwidth is mainly due to S+ using a truncated gaussian kernel (at 4 standard deviations out) and R not truncating the kernal. Part of the difference is due to R using the Fourier transform to do the convolution of the kernel and the data, while S+ uses a direct approach.
Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com ________________________________ From: mailingl...@sturaro.net [mailto:mailingl...@sturaro.net] On Behalf Of Nicola Sturaro Sommacal (Quantide srl) Sent: Thursday, November 04, 2010 2:36 AM To: William Dunlap Subject: Re: [R] density() function: differences with S-PLUS Dear William, I obtained the same x values also without the from= and to= argument, using bw instead width in R. At this point I try to use a two step procedure for the y: - in the first step I obtained the x as below, - in the second step I used the minimum and the maximum values for the x as from= and to= arguments. In this way I obtain, in R, y values close to the S+ ones, but not the same. R code and S+ code and output are below. Thanks again. Nicola # R CODE exdata = iris$Sepal.Length[iris$Species == "setosa"] density(exdata, bw = 4, n = 50, cut = 0.75)$x # SAME AS S+ density(exdata, bw = 4, n = 50, cut = 0.75)$y # COMPLETELY DIFFERENT density(exdata, width = 4, n = 50, from = 1.3, to = 8.8, cut = 0.75)$y # CLOSE TO S+ # SPLUS CODE AND OUTPUT > exdata = iris[, 1, 1] > density(exdata, width = 4) $x: [1] 1.300000 1.453061 1.606122 1.759184 1.912245 2.065306 [7] 2.218367 2.371429 2.524490 2.677551 2.830612 2.983673 [13] 3.136735 3.289796 3.442857 3.595918 3.748980 3.902041 [19] 4.055102 4.208163 4.361224 4.514286 4.667347 4.820408 [25] 4.973469 5.126531 5.279592 5.432653 5.585714 5.738776 [31] 5.891837 6.044898 6.197959 6.351020 6.504082 6.657143 [37] 6.810204 6.963265 7.116327 7.269388 7.422449 7.575510 [43] 7.728571 7.881633 8.034694 8.187755 8.340816 8.493878 [49] 8.646939 8.800000 $y: [1] 0.0007849649 0.0013097474 0.0021225491 0.0033616520 [5] 0.0052059615 0.0078856717 0.0116917555 0.0169685132 [9] 0.0241073754 0.0335286785 0.0456521053 0.0608554862 [13] 0.0794235072 0.1014901241 0.1269807991 0.1555625999 [17] 0.1866111931 0.2192033788 0.2521417640 0.2840144993 [21] 0.3132881074 0.3384260582 0.3580208688 0.3709241384 [25] 0.3763578665 0.3739920600 0.3639778683 0.3469316232 [29] 0.3238721233 0.2961200278 0.2651731505 0.2325739601 [33] 0.1997853985 0.1680884651 0.1385105802 0.1117884914 [37] 0.0883644110 0.0684099972 0.0518702141 0.0385181792 [41] 0.0280126487 0.0199513951 0.0139159044 0.0095050745 [45] 0.0063575653 0.0041639082 0.0026680819 0.0016700727 [49] 0.0010169912 0.0005962089 2010/11/3 William Dunlap <wdun...@tibco.com> Did you get my reply (1:31pm PST Tuesday) to your request? It showed how you needed to use the from= and to= argument to density to get identical x components to the output and that the small differences in the y component were due to S+ truncating the gaussian kernel at +- 4 standard deviations from the center while R does not truncate the gaussian kernel (it output looks like it uses a Fourier transform to do the convolution). Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Nicola > Sturaro Sommacal (Quantide srl) > Sent: Wednesday, November 03, 2010 3:34 AM > To: Joshua Wiley > Cc: r-help@r-project.org > Subject: Re: [R] density() function: differences with S-PLUS > > Dear Joshua, > > first of all, thank you very much for reply. I hoped that > someone who's > familiar with both S+ and R can reply to me, because I spent > some hours to > looking for a solution. > > If someone else would try, this is the SPLUS code and output, > while below > there is the R code. I obtain the same x values, while y values are > differents for both examples. > > Thank you very much. > > Nicola > > > ### S-PLUS CODE AND OUTPUT ### > > > density(1:1000, width = 4) > $x: > [1] -2.00000 18.51020 39.02041 59.53061 80.04082 > 100.55102 121.06122 > [8] 141.57143 162.08163 182.59184 203.10204 223.61224 > 244.12245 264.63265 > [15] 285.14286 305.65306 326.16327 346.67347 367.18367 > 387.69388 408.20408 > [22] 428.71429 449.22449 469.73469 490.24490 510.75510 > 531.26531 551.77551 > [29] 572.28571 592.79592 613.30612 633.81633 654.32653 > 674.83673 695.34694 > [36] 715.85714 736.36735 756.87755 777.38776 797.89796 > 818.40816 838.91837 > [43] 859.42857 879.93878 900.44898 920.95918 941.46939 > 961.97959 982.48980 > [50] 1003.00000 > > $y: > [1] 4.565970e-006 1.000031e-003 9.999374e-004 1.000031e-003 > 9.999471e-004 > 1.000031e-003 > [7] 9.999560e-004 1.000030e-003 9.999643e-004 1.000029e-003 > 9.999718e-004 > 1.000028e-003 > [13] 9.999788e-004 1.000026e-003 9.999852e-004 1.000024e-003 > 9.999910e-004 > 1.000022e-003 > [19] 9.999963e-004 1.000019e-003 1.000001e-003 1.000016e-003 > 1.000006e-003 > 1.000013e-003 > [25] 1.000010e-003 1.000010e-003 1.000013e-003 1.000006e-003 > 1.000016e-003 > 1.000001e-003 > [31] 1.000019e-003 9.999963e-004 1.000022e-003 9.999910e-004 > 1.000024e-003 > 9.999852e-004 > [37] 1.000026e-003 9.999788e-004 1.000028e-003 9.999718e-004 > 1.000029e-003 > 9.999643e-004 > [43] 1.000030e-003 9.999560e-004 1.000031e-003 9.999471e-004 > 1.000031e-003 > 9.999374e-004 > [49] 1.000031e-003 4.432131e-006 > > > > exdata = iris[, 1, 1] > > density(exdata, width = 4) > $x: > [1] 1.300000 1.453061 1.606122 1.759184 1.912245 2.065306 > 2.218367 2.371429 > 2.524490 > [10] 2.677551 2.830612 2.983673 3.136735 3.289796 3.442857 > 3.595918 3.748980 > 3.902041 > [19] 4.055102 4.208163 4.361224 4.514286 4.667347 4.820408 > 4.973469 5.126531 > 5.279592 > [28] 5.432653 5.585714 5.738776 5.891837 6.044898 6.197959 > 6.351020 6.504082 > 6.657143 > [37] 6.810204 6.963265 7.116327 7.269388 7.422449 7.575510 > 7.728571 7.881633 > 8.034694 > [46] 8.187755 8.340816 8.493878 8.646939 8.800000 > > $y: > [1] 0.0007849649 0.0013097474 0.0021225491 0.0033616520 0.0052059615 > 0.0078856717 > [7] 0.0116917555 0.0169685132 0.0241073754 0.0335286785 0.0456521053 > 0.0608554862 > [13] 0.0794235072 0.1014901241 0.1269807991 0.1555625999 0.1866111931 > 0.2192033788 > [19] 0.2521417640 0.2840144993 0.3132881074 0.3384260582 0.3580208688 > 0.3709241384 > [25] 0.3763578665 0.3739920600 0.3639778683 0.3469316232 0.3238721233 > 0.2961200278 > [31] 0.2651731505 0.2325739601 0.1997853985 0.1680884651 0.1385105802 > 0.1117884914 > [37] 0.0883644110 0.0684099972 0.0518702141 0.0385181792 0.0280126487 > 0.0199513951 > [43] 0.0139159044 0.0095050745 0.0063575653 0.0041639082 0.0026680819 > 0.0016700727 > [49] 0.0010169912 0.0005962089 > > > ### R CODE ### > > # S-PLUS CODE: density(1:1000, width = 4) SAME x BUT DIFFERENT y > density(1:1000, bw = 4, window = "g", n = 50, cut = 0.75)$x > density(1:1000, bw = 4, window = "g", n = 50, cut = 0.75)$y > > # S-PLUS CODE: exdata = iris[, 1, 1]; density(exdata, width = > 4) SAME x > BUT DIFFERENT y > exdata = iris$Sepal.Length[iris$Species == "setosa"] > density(exdata, bw = 4, n = 50, cut = 0.75)$x > density(exdata, bw = 4, n = 50, cut = 0.75)$y > > > > 2010/11/2 Joshua Wiley <jwiley.ps...@gmail.com> > > > Dear Nicola, > > > > There are undoubtedly people here who are familiar with > both S+ and R, > > but they may not always be around or get to every question. In that > > case there are (at least) two good options for you: > > > > 1) Say what you want mathematically (something of a universal > > language) or statistically > > > > 2) Rather than just give us S+ code, show sample data > (e.g., 1:1000), > > and the values you would like obtained (in this case whatever the > > output from S+ was). This would let us *try* to figure out what > > happened and duplicate it in R. > > > > From the arcane step of reading R's documentation for > density (?density): > > > > width: this exists for compatibility with S; if given, and 'bw' is > > not, will set 'bw' to 'width' if this is a > character string, > > or to a kernel-dependent multiple of 'width' if this is > > numeric. > > > > Which makes me wonder if this works for you (in R)? > > > > density(1:1000, width = 4) > > > > > > Cheers, > > > > Josh > > > > > > On Tue, Nov 2, 2010 at 3:04 AM, Nicola Sturaro Sommacal > (Quantide srl) > > <mailingl...@sturaro.net> wrote: > > > Hello! > > > > > > Someone know what are the difference between R and S-PLUS in the > > density() > > > function? > > > > > > For example, I would like to reply this simple S-PLUS > code in R, but I > > don't > > > understand which parameter I should modify to get the > same results. > > > > > > S-PLUS CODE: > > > density(1:1000, width = 4) > > > > > > R-CODE: > > > density(1:1000, bw = 4, window = "g", n = 50, cut = 0.75) > > > > > > I obtain the same x values, but different y values. I try > also different > > > examples, with different parameter. > > > > > > Can you help me? > > > > > > Thank you in advance. > > > > > > Nicola Sturaro > > > > > > [[alternative HTML version deleted]] > > > > > > ______________________________________________ > > > R-help@r-project.org mailing list > > > https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide > > http://www.R-project.org/posting-guide.html > > > and provide commented, minimal, self-contained, reproducible code. > > > > > > > > > > > -- > > Joshua Wiley > > Ph.D. Student, Health Psychology > > University of California, Los Angeles > > http://www.joshuawiley.com/ > > > > [[alternative HTML version deleted]] > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.