Labolatorium 10

Karolina Marek

2024-08-06

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:

  1. 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).

  2. Dla każdej próby z punktu \(1\) obliczamy statystykę \(CKS\) otrzymując próbę prostą \(CKS_1, \dots, CKS_{mc}\).

  3. \(\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))

R<-rank(X,ties.method = "random")
S<-rank(Y,ties.method = "random")

plot(R,S)
abline(lm(S ~ R))

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")

CKS<-max(abs(C))
CKS
## [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:

  1. 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).

  2. Dla każdej próby z punktu \(1\) obliczamy statystykę \(\hat{r}\) otrzymując próbę prostą \(\hat{r}_1, \dots, \hat{r}_{mc}\).

  3. \(\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
cor.test(X,Y, method="spearman")
## 
##  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
cor.test(X,Y, method="pearson")
## 
##  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.\]