R中的线性插值

R中的线性插值,r,statistics,interpolation,R,Statistics,Interpolation,我有一个真实数据集,例如如下所示: # Dataset 1 with known data known <- data.frame( x = c(0:6), y = c(0, 10, 20, 23, 41, 39, 61) ) plot (known$x, known$y, type="o") 因此,在理想情况下,我会用已知数据创建一个“linearInterpolationModel”,例如 model <- linearInterpol(known) (在这

我有一个真实数据集,例如如下所示:

# Dataset 1 with known data
known <- data.frame(
    x = c(0:6),
    y = c(0, 10, 20, 23, 41, 39, 61)
)

plot (known$x, known$y, type="o")
因此,在理想情况下,我会用已知数据创建一个“linearInterpolationModel”,例如

model <- linearInterpol(known)
(在这种情况下,应给出“3”)

我怎样才能意识到这一点?对于每个值,我都会手动执行以下操作:

# Dataset 1 with known data
known <- data.frame(
    x = c(0:6),
    y = c(0, 10, 20, 23, 41, 39, 61)
)

plot (known$x, known$y, type="o")
  • 最接近的X值比当前X值小
    Xsmall
    ,最接近的X值比当前X值大
    Xlarge
  • 计算相对于较小X值的相对位置
    relPos=(X-Xsmall)/(Xlarge-Xsmall)
  • 计算预期Y值
    Yexp=Ysmall+(relPos*(Ylarge-Ysmall))
  • 至少对于软件Matlab,我听说有一个内置的函数来解决这些问题

    谢谢你的帮助


    Sven

    您可以查看
    approx()
    approxfun()
    。。。或者我想你可以用
    lm
    进行线性拟合,或者用
    lowess
    进行非参数拟合。

    下面是使用线性模型得到预测值的方法

    model.lm <- lm(y ~ x, data = known)
    
    # Use predict to estimate the values for aim.
    # Note that predict expects a data.frame and the col 
    # names need to match
    newY <- predict(model.lm, newdata = data.frame(x = aim))
    
    #Add the predicted points to the original plot
    points(aim, newY, col = "red")
    

    +1表示predict(),非常有用,但在查看为predict()提供示例的?lm+1时并不立即明显。这个解决方案与我想要的ehat略有不同。它首先对所有数据点进行线性回归,并计算回归曲线上给定x值的Y值。我只在最近的两个点之间寻找线性回归。这可以通过大约()完成。谢谢。'approx()'正是我想要的。否我使用了
    绘图(大约(已知$x,已知$y,xout=aim))
    。你知道近似的2D版本吗?我想在矩阵中插入数据点,…akima软件包有一个
    interp
    函数,我用它在不规则网格上拟合3D数据。默认情况下,它生成“线性”插值,但也允许指定样条曲线拟合。如果点的“矩阵”是规则的,则可以使用
    线框
    persp
    进行查看,但它们不接受不规则数据。但是
    线框
    persp
    似乎只对打印有用。我有对数间隔的数据点。我想给我正在搜索的函数提供3D数据,另外还有数据点的x和y坐标。该函数应返回x和y坐标的插值z值。对于三个命名函数,这似乎是不可能的。那么,我必须手工操作吗?为什么不能
    interp
    呢?如果需要对数尺度上的线性插值,则还可以变换、插值和反变换。如果您心中有一个特定的数据集,那么如果您发布数据并完整描述问题,您(一如既往)会得到更好的答案。这似乎不同于原来的问题,你可以考虑用数据和描述来发布一个新的问题。“黄土”也可以做2和三维拟合和插值。
    model$getEstimation(0.3)
    
    abline(h = 3, col = "#00ff00")
    
    model.lm <- lm(y ~ x, data = known)
    
    # Use predict to estimate the values for aim.
    # Note that predict expects a data.frame and the col 
    # names need to match
    newY <- predict(model.lm, newdata = data.frame(x = aim))
    
    #Add the predicted points to the original plot
    points(aim, newY, col = "red")
    
    > cbind(aim, newY)
      aim       newY
    1 0.3  2.4500000
    2 0.7  6.1928571
    3 2.3 21.1642857
    ....