如何检查 R 中的两个图是否具有相同的形状?

How can I check if two plots have the same shape in R?

我有一个包含变量 x、y1 和 y2 的数据集。

如果我绘制 (x,y1) 和绘制 (x,y2),这些图看起来几乎相同,但我想衡量它们的相似程度。它有功能或测量吗?这在 R 中可能吗?只有情节的形状很重要。

编辑说明:

x<-c(1,2,3,4,5)
y1<-c(10,20,30,40,50)
y2<-c(101,201,301,401,501)

现在,当您绘制 (x,y1) 和绘制 (x,y2) 时,这些图的形状几乎相同,只是一个比例因子造成了最大的差异。有没有办法测试两个绘图形状的相关程度?

您能否向我们提供您的数据样本,and/or 您要比较的两个地块?首先想到的是 Kolmogorov-Smirnov 检验(可用于比较两个分布)和动态导数时间扭曲(可用于比较两个时间序列)。两者在 R 中都是可行的(ks.test 和 dtw 包)。

如果plot(x,y1)plot(x,y2)的形状相似,那么y1y2应该彼此相似。您可以计算它们之间的 correlation

相关性从 +1(两个图相同)到 -1(相反)。如果为0,则表示没有关系。

这是一个例子:

set.seed(0) # seed to random number generation, to reproduce examples

x <- runif(50)
y1 <- x^2 + runif(50,-.1,.1)
y2 <- x^2 + runif(50,-.1,.1)
y3 <- runif(50) # unrelated to x

par(mfrow=c(2,3))
plot(x,y1)
plot(x,y2)
plot(y1,y2)
plot(x,y3)
plot(y1,y3)
plot(y2,y3)

# Compute correlations
cor(y1,y2)
# 0.9642746 <- high correlation
cor(y1, y3)
# -0.05674353 <- like random!