计算R中具有不同数据点的两条曲线的残差

时间:2012-11-07 11:38:17

标签: r plot interpolation

我有两个不同的数据集(c1c2),它们一起绘制在一个图表中。两条曲线都有不同的x值和y值:

c1 = data.frame(
  x=c(0,1.1,2,  3,  4,  5),
  y=c(0,1.1,1.9,3.2,4.3,5.2)
)
c2 = data.frame(
  x=c(0,0.3,0.9,2.1,3.2,4.2,5),
  y=c(0,0.4,1.5,2.3,3.2,4.1,5.1)
)
plot(c1, type="o", col=2)
lines(c2, type="o", col=3)

现在,我想为所有唯一x值(res=c1-c2)绘制两条曲线(unique(c(c1$x, c2$x)))的残差。如果我有相同的x值,这将很容易。但似乎我必须插入所有缺失的x值并将它们添加到测量数据集中。

在R中有一种简单的方法吗?

1 个答案:

答案 0 :(得分:3)

这个怎么样:

关于值c1$x

c1$y - approx(c2$x, c2$y, c1$x)$y
# [1]  0.0000000 -0.5333333 -0.3333333  0.1636364  0.3800000  0.1000000

关于值c2$x

approx(c1$x, c1$y, c2$x)$y - c2$y
# [1]  0.00 -0.10 -0.60 -0.27  0.22  0.38  0.10

或者,把它们放在一起,

x <- sort(unique(c(c1$x, c2$x)))
approx(c1$x, c1$y, x)$y - approx(c2$x, c2$y, x)$y
# [1] 0.0000000 -0.1000000 -0.6000000 -0.5333333 -0.3333333 -0.2700000  0.1636364  0.2200000
# [9] 0.3800000  0.3800000  0.1000000