R:绘制与参考线“适合”相同形状的线条

时间:2016-10-20 22:25:28

标签: r graph

我正在开展一个项目,我需要识别具有相同形状的线条,例如:

yrefer = c(0.2900,0.3189,0.4097,0.3609,0.3762,0.5849,0.7144)

例如,看看下面的图,我希望R将这两条红线识别为例如拟合形状,如果有一点偏差(比如参考线0.05(蓝色))。 enter image description here
所以我想编写一个代码,根据ycoördinates列表进行检查,如果这些ycoördinates符合yrefer线,则允许偏差为0.05。 我不确定这是否可能在R中,但如果我知道这里有人可以帮助我。 通知:我的意思是偏差为0.05:
假设我们有一条线:

1.2900 1.3189 1.4097 1.3609 1.3762 1.5849 1.7144

这将是完全相同的线,但然后比yrefer线高1,但是偏差为0.05我的意思是如果某些ycoördinates与你期望它们的差异0.05,所以在这个例子中我应该期待他们是永远高于1的yRefercoördinate,但如果他们中的一个高出0.98,我仍然会接受这个作为“拟合”线,因为它的偏差是< 0.05。 为了澄清我画了一些可能性(当然还有更多的东西!)应该被接受为第一个y值正确:
enter image description here 我希望很清楚,如果不让我知道!

3 个答案:

答案 0 :(得分:1)

只考虑不同的y均值。

newline<- c(1.25, 1.3189, 1.4097, 1.4609, 1.3762, 1.5249, 1.7144)
newline2<-newline+mean(yrefer)-mean(newline)
sd(newline2-yrefer)  #Can use var or whatever you want here.

这些都可以打包成像。

这样的函数
lindev<- function(x){
newline2<-x+mean(yrefer)-mean(x)
return(sd(newline2-yrefer))}

lindev(c(1.25, 1.3189, 1.4097, 1.4609, 1.3762, 1.5249, 1.7144))

请注意,这仅适用于x坐标相同的情况。

答案 1 :(得分:1)

我不认为约翰内斯&#39;回答概括,例如:

y_ref = c(0, 0, 0)
y_test = c(.03,.03, -.06) #then test_line fails even though, let:
y_test = y_test +.011
abs(y_test - y_ref) #never outside the .05 range
test_line(y_test) #failed

我想你想要这样的东西:

n = length(y_test)
d1 = y_test[-1] - y_test[-n]
d2 = y_ref[-1] - y_ref[-n]
max(cumsum(d2 - d1)) - min(cumsum(d2 - d1)) #shouldn't be >= .1

答案 2 :(得分:0)

y_ref <- c(0.2900,0.3189,0.4097,0.3609,0.3762,0.5849,0.7144)

y_test_1 <- c(1.2900, 1.3187,  1.4097, 1.3609, 1.3762, 1.5849, 1.7144)
y_test_2 <- c(1.2900, 1.2189,  1.4097, 1.3609, 1.3762, 1.5849, 1.7144)

test_line <- function(y_test) {
  overall_deviation <- mean(y_test - y_ref)
  residuals <- y_test - y_ref - overall_deviation
  if (any(abs(residuals) > 0.05)) message("Failed")
  else message("Passed")
}

test_line(y_test_1)
test_line(y_test_2)