如何计算(R)范围差中的范围,以检查0是否在此范围内?

如何计算(R)范围差中的范围,以检查0是否在此范围内?,r,range,confidence-interval,R,Range,Confidence Interval,我正在研究一个变量Y与两个可能的解释变量X1和X2之间的关系。我所有的变量都是连续的。此外,Y具有非正态分布,因此我决定使用Spearman的相关系数分别评估X1和X2与Y的关系。对于Y~X1(rho1)和Y~X2(rho2),我得到一个称为rho的相关系数,其置信区间为C.I(=一个范围)。我想计算rho1和rho2之间可能的差异范围,并检查0是否在此范围内 例如: rho1 <- range(0.90,0.92) rho2 <- range(0.91,0.93) Range

我正在研究一个变量
Y
与两个可能的解释变量
X1
X2
之间的关系。我所有的变量都是连续的。此外,
Y
具有非正态分布,因此我决定使用Spearman的相关系数分别评估
X1
X2
Y
的关系。对于Y~X1(
rho1
)和Y~X2(
rho2
),我得到一个称为
rho
的相关系数,其置信区间为
C.I
(=一个范围)。我想计算
rho1
rho2
之间可能的差异范围,并检查0是否在此范围内

例如:

rho1 <- range(0.90,0.92)
rho2 <- range(0.91,0.93)

Range

0.00  0.03     # The difference between `rho1` and `rho2` is between 0 and 

rho1我想我之前误解了这个问题。我们需要检查向量中的任何值是否介于另一个向量中的其他值之间

get_difference_values <- function(x, y) {
  if(any(dplyr::between(x, min(y), max(y))))
    c(0, max(max(x) - min(y), max(y) - min(x)))
  else
    range(abs(outer(x, y, `-`)))
}

rho1 <- range(0.90,0.92)
rho2 <- range(0.91,0.93)
get_difference_values(rho1, rho2)
#[1] 0.00 0.03

rho1 <- range(0.85,0.88)
rho2 <- range(0.89,0.91)
get_difference_values(rho1, rho2)  
#[1] 0.01 0.06 

您要计算彼此之间的差异还是组合?所以像这样的
范围(abs(外部(rho1,rho2,`-`))
temp在第一个示例中,为什么输出是
0.00
?哪两个元素的差异为0?谢谢@Ronaksah。我认为这些选项都不正确。我两个都试过了,但都没有达到我的预期。第二个(
temp在第一个示例中,
rho1
可以是
0.915
(该值在
rho1
的范围内)和
rho2
,因此0是两个范围之间可能的差异之一。您明白吗?请检查
范围(0.90,0.92)的输出
只有两个数字,这就是你想说的吗?我想你需要的是
seq
。感谢@Ronak Shah为你花时间。这个选项适用于第二个示例,但不适用于第一个示例。我需要一个在两种情况下都有效的唯一代码。我的问题是R为
rho
统计提供了一个置信区间c、 R并没有给我一个值序列,它只是给了一个范围,在这个范围内,
rho
可以取任何值。所以我不知道如何管理这里的
seq
参数……您可以使用
do.call(seq,c(as.list(rho1),by=0.01))
为两个数字创建序列,然后在
外部使用它,如前所述。@Dekike我想我之前误解了这个问题,我已经更新了答案。虽然旧的答案并不完全准确,但我会保留它,因为它仍然可以用来获得答案。
get_difference_values <- function(x, y) {
  if(any(dplyr::between(x, min(y), max(y))))
    c(0, max(max(x) - min(y), max(y) - min(x)))
  else
    range(abs(outer(x, y, `-`)))
}

rho1 <- range(0.90,0.92)
rho2 <- range(0.91,0.93)
get_difference_values(rho1, rho2)
#[1] 0.00 0.03

rho1 <- range(0.85,0.88)
rho2 <- range(0.89,0.91)
get_difference_values(rho1, rho2)  
#[1] 0.01 0.06 
rho1 <- seq(0.90,0.92, 0.01)
rho2 <- seq(0.91,0.93, 0.01)
range(abs(outer(rho1, rho2, `-`)))
#[1] 0.00 0.03


rho1 <- seq(0.85,0.88, 0.01)
rho2 <- seq(0.89,0.91, 0.01)

range(abs(outer(rho1, rho2, `-`)))
#[1] 0.01 0.06