【发布时间】:2012-08-24 20:28:10
【问题描述】:
我们如何关联两个具有不同比例的数据集/曲线,即一条曲线的 y 轴范围为 (0,70000),另一条曲线的 y 轴范围为 (0, 150000)。如果它们的比例相同,则可以使用 cor() 函数。我想检查一条曲线是否依赖于另一条曲线/两条曲线是否相关。有什么想法吗?
【问题讨论】:
标签: r curve-fitting
我们如何关联两个具有不同比例的数据集/曲线,即一条曲线的 y 轴范围为 (0,70000),另一条曲线的 y 轴范围为 (0, 150000)。如果它们的比例相同,则可以使用 cor() 函数。我想检查一条曲线是否依赖于另一条曲线/两条曲线是否相关。有什么想法吗?
【问题讨论】:
标签: r curve-fitting
如果您查看definition of Pearson's product moment of correlation(这是cor 默认计算的),您会发现它是一个线性运算符。也就是说,如果 a 和 b 是常数,则 cor(aX + b, Y) = cor(X, Y)。因此,X 和 Y 之间的范围差异并不重要。请记住,这种相关性仅衡量线性相关性:它们可能是“相关的”,但相关性较低。如果关系是非线性的,就会发生这种情况,例如:
set.seed(100)
x <- rnorm(100)
y <- x^2
cor(x,y)
# 0.1224623
【讨论】:
如果您正在寻找两组数据之间的相关性,那么相关性的大小并不取决于数据集范围的差异。
例如,我们可以创建一组随机的y 值,然后将它们放大。相关性仍为 1:
> y <- rnorm(100)
> y2 <- y*2 + 20
> cor(y, y2)
[1] 1
为了进一步表明相关量与尺度的线性变化无关,请查看不相关数据的情况:
> y3 = rnorm(100)
> cor(y, y3)
[1] -0.05293818
> y4 <- y3*2 + 20
> cor(y, y4)
[1] -0.05293818
所以,回答你的问题。我认为函数cor 应该仍然适合你。
【讨论】:
我认为相关性不应该取决于数据的绝对范围。只需将一个数据集乘以一个常数,使其与另一个数据集具有相同的范围?
【讨论】: