# Funkcja obliczająca współczynnik zależności (y od x) Goodmana-Kruskala . # Tutaj y przyjmuje dwie wartości: "Yes", "No", x jest cechą liczbową # oraz nn oznacza rozdzielczość siatki dla estymatora gęstości. tauGK = function(x,y,nn){ xY=x[y=="Yes"]; xN=x[y=="No"] # gestosc x (unormowana, czyli wzgledem miary liczacej) dd = density(x,n=nn); dx = dd$y / sum(dd$y) cc = range(dd$x) # zakres siatki x-sów # gestosc x pod warunkiem y=="Yes" (unormowana) dxY = density(xY,from=cc[1],to=cc[2],n=nn)$y; dxY = dxY / sum(dxY) # gestosc x pod warunkiem y=="No" (unormowana) dxN = density(xN,from=cc[1],to=cc[2],n=nn)$y; dxN = dxN / sum(dxN) # rysunek gestosci warunkowych matplot(dd$x, cbind(dxY,dxN), type="l", lty=1) # gestosc y (dwupunktowa) p = mean(y=="Yes"); dy = rbind(p, 1-p) # gestosc lacznego rozkladu x (wiersze, 512 wartosci) i y (kolumny, 2 wartosci) P = cbind(dxY*dy[1],dxN*dy[2]) # wsp. Giniego rozkladu y Vy = 1 - sum(dy^2) # Srednia wsp. Giniego rozkladu y|x Dx = cbind(dx,dx); EVyx = 1 - sum(Dx*(P/Dx)^2) 1-EVyx/Vy # wsp. Goodmana-Kruskala zaleznosci y od x }