Значение корреляции для ненулевой нулевой гипотезы с использованием R

Я проверяю корреляцию между двумя переменными:

set.seed(123)
x <- rnorm(20)
y <- x + x * 1:20
cor.test(x, y, method = c("spearman"))

который дает:

Spearman's rank correlation rho

data:  x and y 
S = 54, p-value = 6.442e-06
alternative hypothesis: true rho is not equal to 0 
sample estimates:
   rho 
0.9594 

Значение p проверяет нулевую гипотезу о том, что корреляция равна нулю. Есть ли функция R, которая позволит мне проверить другую нулевую гипотезу, скажем, что корреляция меньше или равна 0,3?


person Steve    schedule 13.11.2011    source источник
comment
мне кажется, что это было бы сложно для процедуры ранговой корреляции. Возможно, вы захотите задать вопрос (без тега, специфичного для R) при обмене стеками...   -  person Ben Bolker    schedule 13.11.2011
comment
Я думаю, что @BenBolker имел в виду stats.stackexchange.com, просто чтобы вы знали.   -  person joran    schedule 13.11.2011
comment
У меня сейчас мало мозговых клеток, но не могли бы вы начать с фактического расчета коэффициента корреляции для ваших двух наборов данных, а затем провести либо нулевой тест, либо байесовскую оценку качества вашего расчета?   -  person Carl Witthoft    schedule 14.11.2011
comment
Возможно, вы найдете ответ здесь: stats.stackexchange.com/q/14220/3094   -  person Sacha Epskamp    schedule 14.11.2011


Ответы (2)


В вопросе не сказано, но если вы можете жить с предположениями Пирсона (двумерная норма), вы можете просто посмотреть на верхнюю границу доверительного интервала. Любая нулевая гипотеза, подобная вашей, которая больше этой, будет отклонена при p‹0,05.

> cor.test(x, y, method = c("pearson"))$conf
[1] 0.7757901 0.9629837
person John Colby    schedule 14.11.2011
comment
Да, я думал об этом для коэффициента Пирсона, но, к сожалению, в моих реальных данных есть несколько выбросов, и поэтому я думаю, что ро будет более подходящим. Я не знаю, есть ли способ генерировать доверительные интервалы для ро. - person Steve; 14.11.2011
comment
Вы можете использовать начальную загрузку для создания доверительных интервалов для ро, см. Другой ответ. - person Carlos Cinelli; 06.02.2014

Вы можете использовать начальную загрузку для расчета доверительного интервала для ро:

1) Создайте функцию для извлечения оценки cor.test (не забудьте указать индексы, чтобы загрузчик мог сэмплировать данные):

rho <- function(x, y, indices){
  rho <- cor.test(x[indices], y[indices],  method = c("spearman"))
  return(rho$estimate)
}

2) Используйте пакет boot для начальной оценки:

library(boot)    
boot.rho <- boot(x ,y=y, rho, R=1000)

3) Возьмем доверительный интервал:

boot.ci(boot.rho)
person Carlos Cinelli    schedule 06.02.2014