R 中是否有 package/command 用于限制范围相关性?

Is there a package/command in R for restricted range correlations?

数据框的输入:

structure(list(aptitude = c(78, 85, 69, 80, 60, 72, 77, 65, 70, 
80, 75, 83, 81, 65, 77, 76, 64, 68, 74, 85, 83, 80, 62, 69, 66, 
75, 68, 70), performance = c(74, 59, 59, 60, 55, 62, 59, 64, 
50, 64, 60, 59, 51, 64, 58, 49, 43, 62, 49, 59, 59, 60, 43, 62, 
49, 64, 38, 74)), class = "data.frame", row.names = c(NA, -28L
))

我使用以下命令在该数据集上 运行 建立了相关性:

# Run correlation of apt and perform:
hw %>% 
  correlation() # r = .28, p value = .145

但是aptitude这个变量的分界点是60,也就是说aptitude的最小值是60,不能低于60分。在这种情况下,我正在尝试更正相关性以以某种方式包含它。

我尝试在 R 中寻找具有此范围限制的 packages/commands,但我无法找到与此匹配的任何内容。 RDocumentation 列出了 rCCr 和 rangeCorrection,但从我收集到的信息来看,它们似乎不再可用。

任何帮助都会很棒!

您的数据分布在计算相关系数时无关紧要。如果一个样本分布在 [0, 100],而另一个样本在 [0,inf] 或 [100,200] 或其他范围内,这不会影响系数。

也许用一些虚构的数据来举例说明会更容易。 Y 和 X 都在 [1,100].

范围内
y=rnorm(100)+seq(1,100,1)
x=rnorm(100)+seq(1,100,1)
plot(y~x)
cor(y,x)
[1] 0.9988158

该关系是非常线性的并且具有非常高的 Pearson 相关性。现在尝试转换其中一个变量,例如。 Y 使得它的范围从 [100,200] 开始,同时保持另一个不变。

cor(y+100,x)
[1] 0.9988158

没有区别。为什么?因为你只是给一个随机变量加上一个常量,这不会影响这个变量的方差,即 Var(a+Y) = Var(Y),这就是你在估计相关系数时使用的。