Re: [R] Documentation of B-spline function

From: Charles C. Berry <cberry_at_tajo.ucsd.edu>
Date: Fri, 11 Jun 2010 15:52:40 -0700

On Fri, 11 Jun 2010, Christos Argyropoulos wrote:

>
> Goodmorning,
>
> This is a documentation related question about the B-spline function in R.
> In the help file it is stated that:
>
> "df degrees of freedom; one can specify df rather than knots; bs() then
> chooses df-degree-1 knots at suitable quantiles of x (which will ignore
> missing values)."

Not in R 2.11.1 where help("bs") says:

df	   degrees of freedom; one can specify df rather than knots; bs()
            then chooses df-degree (minus one if there is an intercept)
            knots at suitable quantiles of x (which will ignore missing
            values).

>
> So if one were to specify a spline with 6 degrees of freedom (and no intercept) then a basis with 6-3-1 =2 internal knots should be created. However this is not what happens:
>
>> library(splines)
>> s1<-bs(women$height, df = 6,deg=3)
>> s2<-bs(women$height, df = 6,deg=2)
>>
>> attributes(s1)$knots
> 25% 50% 75%
> 61.5 65.0 68.5
>> attributes(s2)$knots
> 20% 40% 60% 80%
> 60.8 63.6 66.4 69.2
>>
>
> i.e. basis is created with an extra knot i.e. bs() chooses df-degree internal knots
>
> The documentation of "ns" states that: " .... ns() then chooses df - 1 -
> intercept knots ..." suggesting that the spline functions create the
> basis with df-degree internal knots if no intercept is specified but
> df-degree-1 internal knots if the caller explicitly asks for an
> intercept.

If you knew that 1 - TRUE == 0, then you know that is what it says.

>
>> s1<-bs(women$height, df = 6,deg=3,intercept=T)
>> s2<-bs(women$height, df = 6,deg=2,intercept=T)
>>
>> attributes(s1)$knots
> 33.33333% 66.66667%
> 62.66667 67.33333
>> attributes(s2)$knots
> 25% 50% 75%
> 61.5 65.0 68.5
>
>
> Is it possible to change the documentation of these functions to reflect
> their actual behaviour. For example something like the following: "df
> degrees of freedom; one can specify df rather than knots; bs() then
> chooses df-degree-1 knots at suitable quantiles of x (which will ignore
> missing values) if the intercept argument is TRUE and df-degree if
> intercept=FALSE."

R-devel is where you post stuff like this, but be sure to refer to current versions to avoid being flamed for non-compliance with posting guidelines.

HTH, Chuck

>
>
> Christos Argyropoulos
>
> _________________________________________________________________
> Hotmail: Trusted email with Microsoft’s powerful SPAM protection.
>
> ______________________________________________
> R-help_at_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.
>

Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive Medicine
E mailto:cberry_at_tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901



R-help_at_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. Received on Fri 11 Jun 2010 - 22:55:29 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sat 12 Jun 2010 - 00:30:30 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive