Nieparametryczne testy niezależności
Niech \((X_1, Y_1), \dots, (X_n, Y_n)\) będzie próbą prostą o nieznanej dwuwymiarowej dystrybuancie \(F_{X,Y}(x,y)\), takiej że dystrybuanty rozkładów brzegowych \(F_X, F_Y\) są ciągłe.
Interesuje nas test postaci:
\(H_0: \forall_{x,y\in \mathbb{R}} F_{X,Y}(x,y)=F_X(X)F_Y(y)\)
\(H_1: \exists_{x,y\in \mathbb{R}} F_{X,Y}(x,y)\neq F_X(X)F_Y(y)\).
Można pokazać, że wektor \(\left((R_1, S_1), \dots (R_n, S_n)\right)\), gdzie \(R_1, \dots, R_n=Rang(X_1, \dots, X_n)\) oraz \(S_1, \dots ,S_n=Rang(Y_1, \dots, Y_n)\) jest maksymalnym niezmiennikiem względem grupy przekształceń \(G=\left\{g\left((x_1, y_1), \dots, (x_n, y_n)\right)=\left((a(x_1),b(y_1)), \dots, (a(x_n), b(y_n))\right), \quad a,b\text{ - ciągłe i ściśle rosnące}\right\}\).
Obkłdając zmienne losowe swoimi własnymi dystrybuantami otrzymamy wektor \(\left((U_1, V_1), \dots, (U_n, V_n)\right)=\left((F_X(X_1), F_Y(Y_1)), \dots (F_X(X_n), F_Y(Y_n))\right)\).
Wobec tego problem testowania możemy równoważnie zapisać jako \[H_0: \forall_{u,v\in (0,1)}\quad C(u,v):=F_{U,V}(u,v)-uv=0\qquad H_1: \exists_{u,v\in (0,1)}\quad C(u,v)\neq 0.\] Funckję \(C(u,v)\) nazywamy kopułą.
Estymator kopuły
Jak w praktyce mamy obłożyć zmienne dystrybuantą, której nie znamy? Musimy wyestymować kopułę.
Kopułowy test niezależności Kołmogorawa - Smirnova
Test oparty jest na statystyce: \[CKS = \sup_{(u,v)\in (0,1)^2}\left|\hat{C}(u,v)\right|.\] Duże wartości statystyki \(CKS\) będą świadczyć przeciwko hipotezie zerowej.
P - wartość obliczamy metodą MC:
Generujemy \(mc\) prób prostych \((X_1, \dots, X_n)\), \((Y_1, \dots, Y_n)\) z rozkładu \(U[0,1]\) (może być dowolny rozkład, ważne aby zmienne były generowane w sposób niezależny).
Dla każdej próby z punktu \(1\) obliczamy statystykę \(CKS\) otrzymując próbę prostą \(CKS_1, \dots, CKS_{mc}\).
\(\hat{p}=\frac{1}{mc}\sum_{i=1}^{mc}\mathbb{I}(CKS_i\geq CKS)\).
Przybliżona wartość statystyki CKS
Statystykę \(CKS\) obliczamy według wzoru: \[\widetilde{CKS}=\max{(i,j)\in \{0,\dots, n\}^2}\left|G(u_i, v_j)-u_iv_i\right|.\]
Zadanie
Narysować tablę z wartościami \(G(u,v)\) używając powyższego wzoru dla przykładu: \[(2,5), (1,3), (5,1), (3,2), (4,4).\]
Zadanie 1
Z danych archiwalnych o dziennej temperaturze wylosowano \(100\) obserwacji (Dzień, Temperatura). Czy temperatura zależy od numeru dnia w roku? Zacznijmy od narysowania estymatora kopuły. (dane w pliku Baza 10.1).
library(readxl)
Baza<- read_excel("Baza 10.1.xlsx")
X<-Baza$"Dzień"
Y<-Baza$"Temperatura"
n<-length(X)
plot(X,Y)
abline(lm(Y ~ X))
Z <- cbind(R, S)
Z <- Z[order(Z[, 1], decreasing = FALSE), ]
u <- (0:n) / (n + 1)
v <- (0:n) / (n + 1)
C <- matrix(0, nrow = n + 1, ncol = n + 1)
for (i in 2:(n + 1)) {
for (j in 1:(n + 1)) {
if (j - 1 < Z[i - 1, 2]) {
C[j, i] <- C[j, i - 1]
} else {
C[j, i] <- C[j, i - 1] + 1 / n
}
}
}
for (i in 1:(n+1)){
for (j in 1:(n+1)){
C[j,i]=C[j,i]-u[i]*v[j]
}
}
heatmap(C, Rowv = NA, Colv = NA, scale = "none")
## [1] 0.127463
Na podstawie uzyskanego estymatora kopuły, możemy powiedzieć że występuje zależność dla danych, ponieważ występuję skoncentrowanie wysokich wartości w specyficznym obszarze.
Zadanie 1 - cd.
Przeprowadź kopułowy test niezależności Kołmogorowa - Smirnova.
mc<-10000
CKSMC<-numeric(mc)
for (k in 1:mc){
XMC <- runif(n)
YMC <- runif(n)
RMC<-rank(XMC,ties.method = "random")
SMC<-rank(YMC,ties.method = "random")
ZMC<-cbind(RMC,SMC)
ZMC=ZMC[order(ZMC[,1]),]
SMC<-ZMC[,2]
CMC<- matrix(0,nrow=n+1,ncol=n+1)
for (i in 1:n) {
for (j in 1:(n + 1)) {
if (j - 1 < SMC[i]) {
CMC[j, i + 1] <- CMC[j, i]
} else {
CMC[j, i + 1] <- CMC[j, i] + 1/n
}
}
}
for (i in 1:(n+1)){
for (j in 1:(n+1)){
CMC[j,i]=CMC[j,i]-u[i]*v[j]
}
}
CKSMC[k]<-max(abs(CMC))
}
pCKS <- sum(abs(CKSMC) > abs(CKS)) / mc
pCKS
## [1] 0
Test korelacji Spearmana
Zwykła korelacja (korelacja Pearsona) nie zawsze musi istnieć. Istnieje, gdy zmienne są całkowalne z kwadratem. Dlatego też obłożymy zmienne ich własnymi dystrybuantami i dopiero policzymy korelację.
Korelacja Spearmana zmiennych losowych \(X,Y\) o ciągłych dystrybuantach nazywamy liczbę \[r(X,Y)=\rho\left(F_X(X), F_Y(Y)\right)=\frac{E\left(F_X(X)F_Y(Y)\right)-E\left(F_X(X)\right)E\left(F_Y(Y)\right)}{\sqrt{Var\left(F_X(X)\right)Var\left(F_Y(Y)\right)}}.\] Zwykły współczynnik korelacji Pearsona - unormowana miara liniowej zależności (\(\rho=\{-1,1\}\Rightarrow \exists_{a,b}: Y=aX+b\)).
Korelacji Spearmana - unormowana miara monotonicznej zależności (\(r(X,Y)=\{-1,1\}\Rightarrow \exists_{g- \text{f. monotomiczna}}:Y=g(X)\)).
Zauważmy, że gdy funkcja \(g\) jest stała, to \(X,Y\) - niezależne.
Wobec tego możemy testować: \[H_0:r(X,Y)=0\qquad H_1: r(X,Y)\neq 0.\] Test korelacji Spearmana jest uogólnieniem testu niezależności Pearsona, który wymagał, aby \(X,Y\) miały rozkład \(2\)-wymiarowy normalny, na modele regresji monotonicznej (gdy korelacja Pearsona może nie istnieć).
Estymujemy korelacje Spearmana za pomocą rang \(R_1, \dots, R_n\) oraz \(S_1, \dots, S_n\).
Zastępujemy nieznane dystrybuanty, dystrybuantami empirycznymi (\(\hat{F}_X(X_i)=\frac{R_i}{n}\) oraz\(\hat{F}_Y(Y_i)=\frac{S_i}{n}\)).
Otrzymujemy,
P - wartość obliczamy metodą MC:
Generujemy \(mc\) prób prostych \((X_1, \dots, X_n)\), \((Y_1, \dots, Y_n)\) z rozkładu \(U[0,1]\) (może być dowolny rozkład, ważne aby zmienne były generowane w sposób niezależny).
Dla każdej próby z punktu \(1\) obliczamy statystykę \(\hat{r}\) otrzymując próbę prostą \(\hat{r}_1, \dots, \hat{r}_{mc}\).
\(\hat{p}=\frac{1}{mc}\sum_{i=1}^{mc}\mathbb{I}(|\hat{r}_i|\geq \hat{r})\).
Zadanie 1 - cd.
Oblicz test korelacji Spearmana.
r<-1-6*sum((R-S)^2)/(n*(n^2-1))
mc<-10000
rMC<-numeric(mc)
for (k in 1:mc){
XMC <- runif(n)
YMC <- runif(n)
RMC<-rank(XMC,ties.method = "random")
SMC<-rank(YMC,ties.method = "random")
rMC[k]<-1-6*sum((RMC-SMC)^2)/(n*(n^2-1))
}
pr=mean(abs(rMC)>abs(r))
pr
## [1] 0.4616
##
## Spearman's rank correlation rho
##
## data: X and Y
## S = 179056, p-value = 0.461
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.07444344
##
## Pearson's product-moment correlation
##
## data: X and Y
## t = -0.6386, df = 98, p-value = 0.5246
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2575364 0.1337345
## sample estimates:
## cor
## -0.06437465
Zadanie
Na tych samych danych przetestować zależność testem kopułowym Andersona.
Zatem zamiast używać statystyki \(T_1=\sup|\hat{C}(u,v)|\) będziemy używać statystyki testowej \[T_2=\left\|\frac{\hat{C}(u,v)}{\sqrt{uv(1-u)(1-v)}}\right\|\] \[T_2=\int_0^u\int_0^v \frac{\hat{C}(u,v)}{\sqrt{uv(1-u)(1-v)}}du dv\] Pole prostokąta na siatce będzie miało wymiary \(\Delta u\times \Delta v= \frac{1}{n+1}\times \frac{1}{n+1}\). Zatem, dla każdego punktu \((u_i, v_j)\) z tabeli można obliczyć przybliżoną wartość całki:
\[T_2\approx \sum_{i=0}^n\sum_{j=1}^n \frac{\hat{C}(u_i,v_j)}{\sqrt{u_iv_j(1-u_i)(1-v_j)}}\Delta u\Delta v.\]