214 Wybrane procedury statystyczne
stanowiącą, że dany współczynnik (Pearsona, Spcarmana lub Kendałla) jest istotnie różny od zera można posłużyć się funkcją cor.test(stats). Weryfikując istotność dla współczynnika korelacji Pearsona. Istotne jest tu założenie o łącznym rozkładzie normalnym dla analizowanych zmiennych. Wynikiem tej funkcji jest obiekt klasy htest opisany w podrozdziale 3.5.1.1. Za hipotezę alternatywną można przyjąć hipotezę dwustronną (pXtV 0) lub jednostronną (pXtV > 0 lub pXiU < 0). Poniżej przedstawiamy krótki przykład użycia tej funkcji.
> # losujemy dwa wektory obserwacji z rozkładu log normalnego
> x “ rlnorm(50)
> y - x + rlnorm(50)
> # wyznaczamy korelacje Pearsona, nie jest ona zbyt wysoka, test
istotności nie uzna jej za istotnie różną od zera
> cor.test(x,y.method-"pearson")
Pearson’8 product-moment correlation data: x and y
t = 1.5385, df « 48, p-value = 0.1305
alternative hypothesis: true correlation is not eąual to 0 sample estimates: cor
0.2167889
> # wyznaczamy korelacje rang Spearmana, współczynnik korelacji jest
wyższy, test istotności wykazuje istotną zależność
> cor.test(x,y,method“"spearman")
Spearman’s ranie correlation rho data: x and y
S = 8150, p-value - 4.499e-06
alternative hypothesis: true rho is not equal to 0 sample estimates: rho
0.6086435 3.5.5.2 Inne testy dla współczynnika korelacji Pearsona
Funkcja cor. test O weryfikuje hipotezę o istotności współczynnika korelacji (czy p jest istotnie różna od 0). Dla korelacji Pearsona często wykorzystywany jest również test weryfikujący hipotezę o równości dwóch współczynników korelacji lub hipotezę o równości współczynnika korelacji określonej stałej. W R nie ma gotowej funkcji do wykonania żadnego z tych testów, ale możemy je zaimplementować! Poniżej na przykładzie tych dwóch testów pokażemy, jak przygotować własne funkcje do testowania. Współczynnik korelacji można przekształcić wykorzystując transformację Fishera
(3.17)
Zmienna z(p) ma w przybliżeniu rozkład normalny o wariancji l/(n—3). Korzystając z tej transformacji możemy testować hipotezy dotyczące współczynnika korelacji.
215
Test dla równości współczynnika korelacji z określoną stałą. Hipoteza zerowa jest postaci:
Ho '• Px,y = Po>
gdzie po zadana przez użytkownika wartość. Za hipotezę alternatywną możemy wybrać hipotezę jedno- lub dwustronną. Statystyka testowa
Dobrym ćwicr/onieiW dla Czytelnika będzie modyfikacja^ lej funkcji, lak aby jej wynikiem był i obiekt klasy ftfesL ]
_ Px,v ~ Po
uia asymptotyczny rozkład normalny. Poniżej przedstawiamy funkcję umożliwiającą korzystanie z tego testu.
$ transformacja. Fishera
get.z <- function(rho) Xog((l+rho)/(l-rho))/2 # test dla H_0: rho_{x,y} = rho_0
rboO.test <- function(rho, n. rho0=0, aXternative="two.sided") { p.raw = pnorm((get.z(rho) - get-z(rhoO))*sqrt(n-3)) if (aiternative“"two.sided")
return(1 - 2*abs(0.5-p.raw)) if (aiternative=="Xess") return(p.raw)
if (alternat i ve--"greater") return(l-p.raw)
stop("Zla wartość argumentu alternative")
Test dla równości dwóch współczynników korelacji. Hipoteza zerowa jest postaci
Ho ■ pT,y — Pm.z.
Podobnie jak w poprzednim przypadku za hipotezę alternatywną możemy wybrać alternatywę jedno lub dwustronną. Za statystykę testową przyjmujemy
_ _Ar.y ~ Pm.z_
ma ona asymptotyczny rozkład normalny. Poniżej przedstawiamy funkcję umożliwiającą korzystanie z tego testu.
•0 test dla H_0: rho_ {x, y} ~ rh::_ {w, z}
rho.rho.test <- functionCrhol, nl, rho2, n2, alternative="tuo.sided") { p.raw » pnorm((get.z(rho) - get.z(rho0))/sqrt(l/(nl~3) + l/Cn2-3))) if (alternative“«"two.sided")
returnCl - 2*abs(0.5-p.raw)) if (aiternative""Xess") return(p.raw)
if (alternative=="greater") return(i-p.raw)
stopCZia wartość argumentu altemative")