# [R] smooth: differences between R and S-PLUS

William Dunlap wdunlap at tibco.com
Wed Nov 3 20:33:38 CET 2010

```> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Nicola
> Sturaro Sommacal (Quantide srl)
> Sent: Wednesday, November 03, 2010 10:41 AM
> To: r-help at r-project.org
> Subject: [R] smooth: differences between R and S-PLUS
>
> Hi!
>
> I am studying differences between R and S-PLUS smooth()
> functions. I know
> from the help that they worked differently, so I ask:
>  - exist a package that permit to have the same results?
>  - alternatively, someone know how can I obtain the same
> results in R, using
>
> I know that S-PLUS use the 4(3RSR)2H running median smoothing
> and I try to
> implement it with the code below. I obtain some result equal
> to the S-PLUS
> one, so I think the main problem is understand how NA value
> from moving
> median are treated.
>
> The R result is:
>  [1]     NA     NA 4.6250 4.9375 4.7500 4.0000 3.2500 3.0000
>  [9] 2.8750 2.5000 2.1250
>
> the S-PLUS one is:
>  [1]   *   *   *   4.6250 4.9375 4.7500 4.0000 3.2500 3.0000    *    *

In S+ I get:
> x1 <- c(4, 1, 3, 6, 6, 4, 1, 6, 2, 4, 2)
> smooth(x1)
1: 2.404297 3.283203 4.140625 4.789063 5.093750 4.886719
7: 4.078125 3.269531 3.000000 3.000000 3.000000
start deltat frequency
1      1         1
> smooth(x1, twiceit=FALSE)
1: 2.03125 3.00000 3.93750 4.62500 4.93750 4.75000 4.00000
8: 3.25000 3.00000 3.00000 3.00000
start deltat frequency
1      1         1
Tukey's EDA book (1977) may give the details on how to deal
with the ends.  The code in S+ is unchanged since that era,
aside from being converted from single to double precision.
There are many better smoothers out there.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com

>
> where * stand for a number different from the R one that I
> don't remember.
>  Unfortunately I cannot give more details about the S-PLUS
> function now,
> because I am working on a machine without this software. If
> someone can help
> me, tomorrow (CET time), I will provide more details.
>
>
> Nicola
>
>
> ### EXAMPLE
> # Comments indicates which step of the 4(3RSR)2H algorithm I try to
> replicate.
>
> # Data
> x1 <- c(4, 1, 3, 6, 6, 4, 1, 6, 2, 4, 2)
>
> # 4
> out = NULL
> for (i in 1:11) {out[i] = median(x1[i:(i+3)])}
> out[is.na(out)] = x1[is.na(out)]
> out
>
> # (3RSR)
> x2 = smooth(out, "3RSR", twiceit = F)
> x2
>
> # 2
> out2 = NULL
> for (i in 1: 11) {out2[i] = median(x2[i:(i+1)])}
> out2[is.na(out2)] = x2[is.na(out2)]
> out2
>
> # H
> filter(out2, filter = c(1/4, 1/2, 1/4), sides = 2)
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help