平滑样条法_R

平滑样条法

样条平滑是一种关于一般类的强大而灵活的建模技术,应用包括多项式,周期,球面,薄板,L-和部分样条,以及更高级模型的概述,包括平滑样条线ANOVA,扩展和广义平滑样条ANOVA,矢量样条,非参数非线性回归,半参数回归和半参数混合效应模型。


样条

样条是一种分段的低阶多项式逼近函数,可应用于具有不同非线性度或者存在多个极值点的函数。它包含两类:多项式样条和光滑样条。多项式样条可以解决很多问题,但是理论与实践都表明直接用最小二乘去求解系数效果不好,容易过拟合。一个可能的改进是光滑样条。所谓的光滑样条,就是在求解最小二乘时给估计函数( f(x) )加上了一定的惩罚,这个有点类似压缩估计。

光滑样条
R的splines包中提供了函数smooth.spline来求解光滑样条。

spline函数的功能:对给定数据点执行三次(或Hermite)样条插值,返回通过插值获得的点列表或执行插值的函数。

#help("spline")时列出所包含的函数
splinefun(x, y = NULL,
          method = c("fmm", "periodic", "natural", "monoH.FC", "hyman"),
          ties = mean)

spline(x, y = NULL, n = 3*length(x), method = "fmm",
       xmin = min(x), xmax = max(x), xout, ties = mean)

splinefunH(x, y, m)
  • 输入:可以包含NA值,但至少需要一个完整的(x,y)对;method指定采用的方法,“fmm”,则使用的样条是Forsythe,Malcolm和Moler(通过数据每端的四个点拟合精确的立方体,这用于确定结束条件)。当method =“natural”时使用自然样条线,当method =“periodic”时使用周期样条线。“monoH.FC”是指根据Fritsch和Carlson的方法计算单调Hermite样条。Method=”hyman”指使用适合严格单调输入“fmm”的Hyman滤波来计算单调三次样条。
  • 输出:样条曲线返回一个包含x和y的列表,并给出了插值发生的纵坐标及其对应的值。

smooth.spline:使用立方平滑样条拟合所提供的数据。

smooth.spline(x, y = NULL, w = NULL, df, spar = NULL, lambda = NULL, cv = FALSE,
              all.knots = FALSE, nknots = .nknots.smspl,
              keep.data = TRUE, df.offset = 0, penalty = 1,
              control.spar = list(), tol = 1e-6 * IQR(x), keep.stuff = FALSE)
  • x:指定需要预测变量值(向量,列表或包含y的两列矩阵),y可缺失,则有x指定;x和y都不被允许有NA值;
  • w:指定每个变量值x的权重,因此该向量长度与x相同,默认情况下全为1;
  • df:指期望的自由度数(平滑矩阵的轨迹),区间范围是(1,len(x)];
  • spar:平滑参数,区间范围(0,1],当指定spar时,在拟合标准中的平方二阶导数的积分系数λ是spar的单调函数;
  • lambda:可以指定内部平滑参数λ而不是spar,这对于重采样(例如交叉验证或bootstrap)是有作用的;
    如果spar和lambda都为空,df的值就用于确定平滑的自由度,若df也为空,leave-one-out交叉验证用于确定参数λ

示例:

smoother=function(x,g) {
    ord=order(g); 
    t=smooth.spline(x[ord]); 
}

输出值:
- x:升序后的x值;
- y:对应于x的拟合值;
- w:x唯一值时使用的权重;

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三次样条插值是一种常用的插值方,它可以通过给定的数据点,构造出一个光滑的函数曲线,从而对数据进行插值和拟合。但是,在实际应用中,三次样条插值可能会面临一些问题,需要进行改进。 以下是三次样条插值可能面临的若干问题以及改进方: 1. 插值误差问题:由于三次样条插值是通过多项式曲线拟合数据点,因此在数据点之间进行插值时,可能会产生插值误差,导致插值结果不准确。解决方是增加插值节点,即增加数据点的数量,或者采用其他插值方,如分段线性插值、拉格朗日插值等。 2. 边界条件问题:三次样条插值需要指定边界条件,如一阶导数、二阶导数等。如果边界条件不合适,可能会导致插值结果不光滑或不连续。解决方是选择合适的边界条件,例如自然边界条件、弯曲边界条件等。 3. 大数据量问题:当数据点数量非常大时,三次样条插值的计算量会非常大,导致插值速度变慢。解决方是采用更高阶的样条插值方,如五次样条插值或七次样条插值,或者采用其他的插值方,如Kriging插值、径向基函数插值等。 4. 插值函数平滑度问题:三次样条插值可以构造出光滑的函数曲线,但有时插值函数的平滑度可能不够好,导致插值结果不理想。解决方是采用其他的插值方,如样条插值与小波插值的结合,或者采用其他的光滑函数,如B样条函数、NURBS曲线等。 总之,三次样条插值是一种非常实用的插值方,但在实际应用中可能会面临一些问题,需要根据具体情况选择合适的改进方
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值