Czy istnieje funkcja do testowania hipotezy, że korelacja dwóch wektorów jest równa danej liczbie, powiedzmy 0,75? Za pomocą testu cor.test mogę przetestować cor = 0 i mogę sprawdzić, czy 0,75 znajduje się w przedziale ufności. Ale czy istnieje funkcja obliczania wartości p dla cor = 0,75?
x <- rnorm(10)
y <- x+rnorm(10)
cor.test(x, y)
r
correlation
mozaika
źródło
źródło
Odpowiedzi:
Używając wariancji stabilizującej transformację Atana Fishera , możesz uzyskać wartość p jako
lub jakiejkolwiek wersji jednostronnej / dwustronnej wartości p, którą jesteś zainteresowany. Oczywiście potrzebujesz wielkości próbki
n
i współczynnika korelacji próbkir
jako danych wejściowych do tego.źródło
Rozkład r_hat wokół rho jest podany przez tę funkcję R zaadaptowaną z kodu Matlab na stronie Xu Cui . Przekształcenie tego w oszacowanie prawdopodobieństwa, że zaobserwowana wartość „r” jest nieprawdopodobna, biorąc pod uwagę wielkość próby „n” i hipotetyczną wartość rzeczywistą „ro”, nie jest trudne.
Następnie za pomocą tej funkcji możesz wykreślić rozkład zerowego rho na 0,75, obliczyć prawdopodobieństwo, że r_hat będzie mniejszy niż 0,6 i zacienić w tym obszarze na wykresie:
źródło
Innym podejściem, które może być mniej dokładne niż transformacja Fishera, ale myślę, że może być bardziej intuicyjne (i może dawać pomysły na znaczenie praktyczne oprócz znaczenia statystycznego) to test wizualny:
Istnieje implementacja tego w
vis.test
funkcji wTeachingDemos
pakiecie dla R. Jednym z możliwych sposobów uruchomienia go dla twojego przykładu jest:Oczywiście, jeśli twoje rzeczywiste dane nie są normalne lub relacja nie jest liniowa, można to łatwo odczytać za pomocą powyższego kodu. Jeśli chcesz jednocześnie je przetestować, powyższy kod by to zrobił, lub powyższy kod można dostosować, aby lepiej reprezentował charakter danych.
źródło