[R] need help with smooth.spline
roger koenker
rkoenker at uiuc.edu
Thu Mar 4 16:54:11 CET 2004
Another option for fitting smoothing spline models to data with abrupt
changes
in derivative is the total variation penalty methods that are
incorporated into
the R package "nprq" . The models there are fitting piecewise linear
models
both univariate and bivariate components are allowed, but the roughness
penalty is total variation of the derivative, or gradient in the
bivariate case,
so sharp kinks are permitted.
url: www.econ.uiuc.edu/~roger Roger Koenker
email rkoenker at uiuc.edu Department of Economics
vox: 217-333-4558 University of Illinois
fax: 217-244-6678 Champaign, IL 61820
On Mar 4, 2004, at 8:30 AM, Liaw, Andy wrote:
> Hi Carlisle,
>
> If I understand you correctly, the problem is smooth.spline() not
> handling
> sharp jump(s), right? If so, it's probably easier to try something
> that can
> handle such features. Wavelet `denoising' (as opposed to `smoothing',
> and
> available in the wavethresh package) is well known for being able to
> handle
> abrupt changes (very `spatially adaptive'). Other things you might
> consider
> are mars() in the `mda' package (which fits splines in an adaptive
> fashion)
> and locfit() in the `locfit' package. For locfit, you will want to
> specify
> local smoothing parameter selection, via a call like
>
> locfit(..., alpha=c(0, 0, 2), acri="cp")
>
> You might need to play with the `2' a bit to get the right amount of
> smoothing. The details are in Loader's book `Local regression and
> Likelihood'.
>
> HTH,
> Andy
>
>> From: W. C. Thacker
>>
>> Andy,
>>
>> As the data are often noisy, smoothing splines should be appropriate.
>>
>> The first example profile shows an isothermal (constant temperature)
>> layer in the upper ocean followed by a sharp thermocline (large
>> temperature gradient), but there are relatively few observations
>> defining this sharp transition. In this case simple linear
>> interpolation works fine, but smooth.spline() with all defaults gives
>> an absolutely absurd value in the isothermal layer. With all.knots =
>> TRUE, the values in the isothermal layer are much better but still
>> peculiar.
>>
>> Given the sampling and the data, is it possible to get smooth.spline()
>> do better? If so, would that adversely impact its performance for
>> other cases? (There are thousands of profiles.) If not, is there a
>> simp[le way to select cases that smooth.spline() should not be
>> expected to handle, so they can be treated separately?
>>
>> Thanks,
>>
>> Carlisle
>>
>> "Liaw, Andy" wrote:
>>>
>>> If you really want interpolation, should you be using
>> spline() rather than
>>> smooth.spline()? The later is for smoothing data observed
>> with noise, not
>>> for interpolation.
>>>
>>> Andy
>>>
>>>> From: W. C. Thacker
>>>>
>>>> Dear R listers,
>>>>
>>>> When using smooth.spline to interpolate data, results are
>> generally
>>>> good. However, some cases produce totally unreasonable results.
>>>>
>>>> The data are values of pressure, temperature, and salinity from a
>>>> probe that is lowered into the ocean, and the objective is to
>>>> interpolate temperature and salinity to specified
>> pressures. While
>>>> smooth.spline provides excellent values at the observed pressures,
>>>> there are cases when the values at the desired pressures are
>>>> unusable. A dataframe with four such profiles, indicated
>> by values of
>>>> id, is attached. My target values for pressure are
>> seq(25,1600,25),
>>>> but 1:500 is also interesting.
>>>>
>>>> Setting all.knots = TRUE helps, but it would be nice to
>> be able to do
>>>> better.
>>>>
>>>> Any suggestions?
>>>>
>>>> Thanks,
>>>>
>>>> Carlisle
>>>>
>>>>> version
>>>> _
>>>> platform sparc-sun-solaris2.9
>>>> arch sparc
>>>> os solaris2.9
>>>> system sparc, solaris2.9
>>>> status
>>>> major 1
>>>> minor 8.0
>>>> year 2003
>>>> month 10
>>>> day 08
>>>> language R
>>>>
>>>>
>>>> --
>>>>
>>>> William Carlisle Thacker
>>>>
>>>> Atlantic Oceanographic and Meteorological Laboratory
>>>> 4301 Rickenbacker Causeway, Miami, Florida 33149 USA
>>>> Office: (305) 361-4323 Fax: (305) 361-4392
>>>>
>>>> "Too many have dispensed with generosity
>>>> in order to practice charity." Albert Camus
>>>>
>>>> ______________________________________________
>>>> R-help at stat.math.ethz.ch mailing list
>>>> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide!
>>>> http://www.R-project.org/posting-guide.html
>>>>
>>>>
>>>
>>>
>> --------------------------------------------------------------
>> ----------------
>>> Notice: This e-mail message, together with any
>> attachments,...{{dropped}}
>>>
>>> ______________________________________________
>>> R-help at stat.math.ethz.ch mailing list
>>> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide!
>> http://www.R-project.org/posting-guide.html
>>
>> --
>>
>> William
>> Carlisle Thacker
>>
>> Atlantic Oceanographic and Meteorological Laboratory
>> 4301 Rickenbacker Causeway, Miami, Florida 33149 USA
>> Office: (305) 361-4323 Fax: (305) 361-4392
>>
>> "Too many have dispensed with generosity
>> in order to practice charity." Albert Camus
>>
>>
>
>
> -----------------------------------------------------------------------
> -------
> Notice: This e-mail message, together with any
> attachments,...{{dropped}}
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
More information about the R-help
mailing list