# [R] The explanation of ns() with df =2

Xing Zhao zhaoxing at uw.edu
Wed Apr 16 06:10:42 CEST 2014

```Dear John

Sorry I use 3 degree of freedom for  cubic spline. After using 4, it
is still not 2. I may make some naive mistake, but I cannot figure
out. Where is the problem?

4 (cubic on the right side of the *interior* knot 8)
+ 4 (cubic on the left side of the *interior* knot 8)
- 1 (two curves must be continuous at the *interior* knot 8)
- 1 (two curves must have 1st order derivative continuous at the
*interior* knot 8)
- 1 (two curves must have 2nd order derivative continuous at the
*interior* knot 8)
- 1 (right side cubic curve must have 2nd order derivative = 0 at the
boundary knot 15 due to the linearity constraint)
- 1 (similar for the left)
= 3, not 2

Thanks
Xing

On Tue, Apr 15, 2014 at 10:54 AM, John Fox <jfox at mcmaster.ca> wrote:
> Dear Xing,
>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>> project.org] On Behalf Of Xing Zhao
>> Sent: Tuesday, April 15, 2014 1:18 PM
>> To: John Fox
>> Cc: r-help at r-project.org; Michael Friendly
>> Subject: Re: [R] The explanation of ns() with df =2
>>
>> Dear Michael and Fox
>>
>> understanding, lead to the following  calculation of degree of
>> freedoms.
>>
>> 3 (cubic on the right side of the *interior* knot 8)
>> + 3 (cubic on the left side of the *interior* knot 8)
>> - 1 (two curves must be continuous at the *interior* knot 8)
>
> You shouldn't subtract 1 for continuity since you haven't allowed a
> different level on each side of the knot (that is your initial counting of 3
> parameters for the cubic doesn't include a constant).
>
> Best,
>  John
>
>> - 1 (two curves must have 1st order derivative continuous at the
>> *interior* knot 8)
>> - 1 (two curves must have 2nd order derivative continuous at the
>> *interior* knot 8)
>> - 1 (right side cubic curve must have 2nd order derivative = 0 at the
>> boundary knot 15 due to the linearity constraint)
>> - 1 (similar for the left)
>> = 1, not 2
>>
>> Where is the problem?
>>
>> Best,
>> Xing
>>
>> On Tue, Apr 15, 2014 at 6:17 AM, John Fox <jfox at mcmaster.ca> wrote:
>> > Dear Xing Zhao,
>> >
>> > To elaborate slightly on Michael's comments, a natural cubic spline
>> with 2 df has one *interior* knot and two boundary knots (as is
>> apparent in the output you provided). The linearity constraint applies
>> beyond the boundary knots.
>> >
>> > I hope this helps,
>> >  John
>> >
>> > ------------------------------------------------
>> > John Fox, Professor
>> > McMaster University
>> > http://socserv.mcmaster.ca/jfox/
>> >
>> > On Tue, 15 Apr 2014 08:18:40 -0400
>> >  Michael Friendly <friendly at yorku.ca> wrote:
>> >> No, the curves on each side of the know are cubics, joined
>> >> so they are continuous.  Se the discussion in \S 17.2 in
>> >> Fox's Applied Regression Analysis.
>> >>
>> >> On 4/15/2014 4:14 AM, Xing Zhao wrote:
>> >> > Dear all
>> >> >
>> >> > I understand the definition of Natural Cubic Splines are those
>> with
>> >> > linear constraints on the end points. However, it is hard to think
>> >> > about how this can be implement when df=2. df=2 implies there is
>> just
>> >> > one knot, which, according the the definition, the curves on its
>> left
>> >> > and its right should be both be lines. This means the whole line
>> >> > should be a line. But when making some fits. the result still
>> looks
>> >> > like 2nd order polynomial.
>> >> >
>> >> >
>> >> > Thanks
>> >> > Xing
>> >> >
>> >> > ns(1:15,df =2)
>> >> >                1           2
>> >> >   [1,] 0.0000000  0.00000000
>> >> >   [2,] 0.1084782 -0.07183290
>> >> >   [3,] 0.2135085 -0.13845171
>> >> >   [4,] 0.3116429 -0.19464237
>> >> >   [5,] 0.3994334 -0.23519080
>> >> >   [6,] 0.4734322 -0.25488292
>> >> >   [7,] 0.5301914 -0.24850464
>> >> >   [8,] 0.5662628 -0.21084190
>> >> >   [9,] 0.5793481 -0.13841863
>> >> > [10,] 0.5717456 -0.03471090
>> >> > [11,] 0.5469035  0.09506722
>> >> > [12,] 0.5082697  0.24570166
>> >> > [13,] 0.4592920  0.41197833
>> >> > [14,] 0.4034184  0.58868315
>> >> > [15,] 0.3440969  0.77060206
>> >> > attr(,"degree")
>> >> > [1] 3
>> >> > attr(,"knots")
>> >> > 50%
>> >> >    8
>> >> > attr(,"Boundary.knots")
>> >> > [1]  1 15
>> >> > attr(,"intercept")
>> >> > [1] FALSE
>> >> > attr(,"class")
>> >> > [1] "ns"     "basis"  "matrix"
>> >> >
>> >>
>> >>
>> >> --
>> >> Michael Friendly     Email: friendly AT yorku DOT ca
>> >> Professor, Psychology Dept. & Chair, Quantitative Methods
>> >> York University      Voice: 416 736-2100 x66249 Fax: 416 736-5814
>> >> 4700 Keele Street    Web:   http://www.datavis.ca
>> >> Toronto, ONT  M3J 1P3 CANADA
>> >>
>> >> ______________________________________________
>> >> R-help at r-project.org mailing list
>> >> https://stat.ethz.ch/mailman/listinfo/r-help
>> guide.html
>> >> and provide commented, minimal, self-contained, reproducible code.
>> >
>> >
>> >
>> >
>> >
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help