Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 二次插值插补法_R - Fatal编程技术网

R 二次插值插补法

R 二次插值插补法,r,R,有谁能告诉我如何使用二次插值来插补缺失的数据吗。我知道zoo软件包提供线性和三次插值 二次插值怎么样 如何检查输入值是否正确 谢谢。对于多项式插值和可视化结果拟合,我想您可以尝试以下方法: x <- runif(100,-2,2) y <- x**2-rnorm(100) # an approximately quadratic relation between x and y. plot(x,y) quadratic.model <- lm(y ~ x + I(x**2))

有谁能告诉我如何使用二次插值来插补缺失的数据吗。我知道
zoo
软件包提供线性和三次插值

  • 二次插值怎么样
  • 如何检查输入值是否正确

  • 谢谢。

    对于多项式插值和可视化结果拟合,我想您可以尝试以下方法:

    x <- runif(100,-2,2)
    y <- x**2-rnorm(100) # an approximately quadratic relation between x and y. 
    plot(x,y)
    quadratic.model <- lm(y ~ x + I(x**2))
    int <- function(x) predict(quadratic.model,list(x=x))
    plot(int,xlim=c(-2,2),col="navy",add=T)
    segments(x,y,x,int(x),col="red")
    
    x高投票数鼓励我将我的评论转化为答案

    二次插值很少见,原因如下:两个数据点定义一条直线,四个数据点定义一条三次曲线。因此,可以使用正在插值的间隙任一侧的一个或两个数据点进行插值。对于立方情况,还可以使用四个自由度来匹配函数值和间隙两侧的坡度,从而实现三次样条插值

    但是,对于二次曲线,您需要有三个自由度。因此,需要三个点来定义插值形状,不能在间隙的两侧均匀分布

    可能的“解决办法”:

    • 您可以进行非对称插值,即在位置左侧使用两个数据点,但在右侧使用一个数据点。结果也可能是不对称的
    • 您可以使用三个以上的点来拟合二次曲线,进行分段二次近似。但在近似情况下,曲线不会通过数据点,因此碎片不会正确对齐
    • 您可以对整个数据集进行全局二次近似,但这根本不是插值
    • 您可以使用两个自由度来匹配线段每一端的一个数据点,并使用第三个自由度以某种对称方式塑造曲线,例如,通过要求中间的坡度为零。但结果很可能“摆动”远比简单的线性插值,所以我认为它是劣势。

    这些我都不建议,但我想不出更好的答案来回答你的问题。对于每次计算,您都可以验证给定的实现是否符合设计思想,但在我看来,所有的设计思想都有缺陷,这种正确性仍然无法确保插值实际上有任何意义。

    我可能完全没有抓住要点,但我想二次插值很少见,原因如下:两个数据点定义一条直线,四个数据点定义一条三次曲线。因此,可以使用正在插值的间隙任一侧的一个或两个数据点进行插值。但是,对于二次曲线,需要三个点,这三个点不能均匀分布在间隙的两侧。这是近似值,而不是插值。