how do I select the smoothing parameter for smooth.spline()?

后端 未结 3 632
陌清茗
陌清茗 2021-02-08 12:28

I know that the smoothing parameter(lambda) is quite important for fitting a smoothing spline, but I did not see any post here regarding how to select a reasonable lambda (spar=

3条回答
  •  孤城傲影
    2021-02-08 12:55

    From the help of smooth.spline you have the following:

    The computational λ used (as a function of \code{spar}) is λ = r * 256^(3*spar - 1)

    spar can be greater than 1 (but I guess no too much). I think you can vary this parameters and choose it graphically by plotting the fitted values for different spars. For example:

    spars <- seq(0.2,2,length.out=10)          ## I will choose between 10 values 
    dat <- data.frame(
      spar= as.factor(rep(spars,each=18)),    ## spar to group data(to get different colors)
      x = seq(1:18),                          ## recycling here to repeat x and y 
      y = c(1:3,5,4,7:3,2*(2:5),rep(10,4)))
    xyplot(y~x|spar,data =dat, type=c('p'), pch=19,groups=spar,
           panel =function(x,y,groups,...)
           {
              s2  <- smooth.spline(y,spar=spars[panel.number()])
              panel.lines(s2)
              panel.xyplot(x,y,groups,...)
           })
    

    Here for example , I get best results for spars = 0.4

    enter image description here

提交回复
热议问题