【问题标题】:Calculating residuals of two curves with different datapoints in R计算R中具有不同数据点的两条曲线的残差
【发布时间】:2012-11-07 11:38:17
【问题描述】:

我有两个不同的数据集(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 值 (unique(c(c1$x, c2$x))) 绘制两条曲线 (res=c1-c2) 的残差。如果我有相同的 x 值,这将很容易。但看来,我必须插入所有缺失的 x 值并将它们添加到测量数据集中。

在 R 中是否有一种简单的方法可以做到这一点?

【问题讨论】:

  • 当您说“残差”时,您是指图表上线段之间的差异吗?如果是这样,您希望不同的 x 值是多少?
  • 对于两条曲线中的所有现有 x 值 (unique(c1$x, c2$x))

标签: r plot interpolation


【解决方案1】:

这个怎么样:

关于值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

【讨论】:

    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多