ROZGRZEWKA PRZYKŁAD 23 #liniowa funkcja - e
Transkrypt
ROZGRZEWKA PRZYKŁAD 23 #liniowa funkcja - e
Laboratorium nr 5 z wielowymiarowej analizy danych – Daniel Kosiorowski ROZGRZEWKA x <- rlnorm(100) # szacowanie parametrów metodą NW# library(MASS) wyn1=fitdistr(x, "lognormal") wyn2=fitdistr(x, "exponential") wyn1 wyn2 wyn1$loglik wyn2$loglik Zadanie: W systemie MOODLE mamy zbiór danych DGP_1 dotyczący liczby popełnionych przestępstw i wykroczeń w podregionach Polski w latach 2006-2007 z uwzględnieniem kategorii przestępstwa. Dopasować odpowiedni rozkład gamma do zmiennej – wykrywalność przestępstw (WYK). PRZYKŁAD 23 #liniowa funkcja dyskryminacyjna Fishera# m1<-c(0,5) m2<-c(10,5) k<-cbind(k1,k2) cov<-diag(2) dane1<-mvrnorm(500,m1,cov,empirical=TRUE) dane2<-mvrnorm(500,m2,cov,empirical=TRUE) dane<-rbind(dane1,dane2) plot(dane, pch=19, cex=1.6) DANE <- data.frame(dane, etykieta = rep(c("A","B"), rep(500,2))) train <- sample(1:1000, 100) table(DANE$etykieta[train]) z <- lda(etykieta~.,DANE, prior = c(1,1)/2, subset = train) z tu otrzymamy coś podobnego do poniższego komunikatu Coefficients of linear discriminants: LD1 X1 1.079596 X2 0.126271 1 Laboratorium nr 5 z wielowymiarowej analizy danych – Daniel Kosiorowski Tworzymy wektor xx – wektor dyskryminacyjny Fishera xx<-c(1.079,0.126) w=dane%*%xx hist(w) predict(z, DANE[-train, ])$class predict(z, c(0,3) ) $class TEST1<-mvrnorm(100,m1,cov,empirical=TRUE) TEST2<-mvrnorm(100,c(5,5),cov,empirical=TRUE) predict(z, data.frame(TEST1) ) $class predict(z, data.frame(TEST2) ) $class zadanie: W systemie MOODLE mamy zbiór danych DGP_1 dotyczący liczby popełnionych przestępstw i wykroczeń w podregionach Polski w latach 2006-2007 z uwzględnieniem kategorii przestępstwa tzn. KR – kryminalne, G – gospodarcze, Z – przeciwko zdrowiu, WO – przeciw wolności, RO – przeciw rodzinie, MIE – mieniu, DRO – drogowe, oraz ich wykrywalności – WY, faktycznej liczby ludności - LL, stopy bezrobocia - BEZR, przeciętnego wynagrodzenia brutto – WYN. 1. Załadować plik do programu R 2. Liczby przestępstw i wykroczeń podzielić przez liczby ludności w regionach 3. Usunąć z macierzy danych zmienną LL2006 4. Policzyć medianę wykrywalności przestępstw – następnie zastąpić zmienną wykrywalność (WY) zmienną binarną skonstruowaną w następujący sposób – jeżeli wartość zmiennej WY>MEDIANA(WY)=> 1, jeżeli wartość zmiennej WY<=MEDIANA(WY)=> -1. 5. Policzyć liniową funkcję dyskryminacyjną Fishera dla wybranych przez siebie 2 zmiennych dotyczących przestępczości i skonstruowanej w punkcie 4 zmiennej zawierającej etykiety „-1” i „1”. 6. Czy twoja funkcja dyskrymiancyjna dobrze się sprawuje? PRZYKŁAD 24 „nowocześniejsze algorytmy analizy skupisk” library(MASS) m1<-c(-5,7) m2<-c(5,7) k1<-seq(from=-5, to=5,length=100) k2<-0.1*k1^2+0.2*rnorm(100) k<-cbind(k1,k2) cov<-diag(2) dane1<-mvrnorm(100,m1,cov,empirical=TRUE) dane2<-mvrnorm(100,m2,cov,empirical=TRUE) dane<-rbind(dane1,dane2,k) plot(dane, pch=19, cex=1.6) 2 Laboratorium nr 5 z wielowymiarowej analizy danych – Daniel Kosiorowski library(cluster) pamx <- pam(dane, 2) #algorytm PAM – podział wokół medoidów# pamx summary(pamx) plot(pamx) pamx$clustering plot(dane, pch=19, cex=1.6,col= pamx$clustering) km <- kmeans(dane, 2) #k – średnie raz jeszcze# plot(dane, pch=19, cex=1.6,col= km$cluster) por<-silhouette(km$cluster,dist(dane)) plot(por) km1 <- kmeans(dane, 3) plot(dane, pch=19, cex=1.6,col= km1$cluster) por<-silhouette(km1$cluster,dist(dane)) plot(por) pamx <- pam(dane, 3) pamx summary(pamx) plot(pamx) pamx$clustering plot(dane, pch=19, cex=1.6,col= pamx$clustering) fannyx <- fanny(dane, 3) # rozmyte grupowanie danych algorytm FANNY# summary(fannyx) plot(fannyx) fannyx$clustering ?votes.repub #ciekawy zbiór danych# ?dv #także metoda podziału danych# grup1<-diana(votes.repub, metric = "manhattan", stand = TRUE) print(grup1) plot(grup1) ?agnes #także medoda podzaiłu danych# grup2<-agnes(votes.repub, diss = inherits(x, "dist"), metric = "euclidean", stand = TRUE, method = "average", par.method) grup2 plot(grup2) zadanie: Pogrupować podregiony Polski ze zbióru danych DGP_1 z Moodle – wybrać trzy zmienne 3 Laboratorium nr 5 z wielowymiarowej analizy danych – Daniel Kosiorowski (WPROWADZENIE DO ANALIZY SKUPISK) W analizie skupisk naszym celem jest pogrupowanie n obiektów rozpatrywanych ze względu na p zmiennych C 0 {x1,..., xn } na k homogenicznych skupisk, gdzie k jest także nieznane (zakłada się, że k jest mniejsze niż n ). Innymi słowy naszym celem jest znaleźć optymalny podział C 0 na k homogenicznych rozłącznych niepustych zbiorów C1,...,Ck , k 2 , Ci Cj , i j, Ci C 0 . Grupę nazwiemy homogeniczną, jeśli jej członkowie różnią się istotnie od członków innych grup. OCENA JAKOŚCI GRUPOWANIA DANYCH W SKUPISKA Metoda oceny jakości procedury podziału danych na skupiska znana jako Silhouette została zaproponowana przez Rousseeuwa (1987). U podstaw metody leży następująca zasada. Rozważmy pewien obiekt i oraz niech A oznacza wszystkie obiekty skupiska, w którym znajduje się obiekt i . W przypadku, gdy A zawiera oprócz siebie samego inne obiekty niż obiekt i możemy policzyć a(i) przeciętną odległość obiektu i do obiektów z A . Rozważmy teraz skupisko C , które jest różne od skupiska A , możemy policzyć d(i,C ) przeciętną odległość obiektu i do wszystkich obiektów z C . Po policzeniu d(i,C ) dla wszystkich skupisk C A, można wybrać najmniejszą wartość tzn, b(i) minimum nazywamy sąsiadem, d(i, B) min d(i,C ) . Skupisko B , dla którego osiągamy to C A b(i) . Wprowadzamy liczbę s(i) 1 a(i) / b(i) a(i) 0 a(i) b(i) / a(i) 1 a(i) b(i) b(i) . b(i) Możemy sporządzić wykres pokazujący wartość s(i) dla każdego z obiektów poddawanych analizie skupisk. Zauważmy, że zachodzi 1 s(i) 1 . Im wyższe wartości s(i) tym lepszy wynik podziału danych na skupiska. Można policzyć też przeciętne s(i) pokazujące jakość podziału danych z uwzględnieniem wszystkich skupisk. PRZYKŁAD 25 #twarze Chernoffa# library(aplpack) data(longley) faces(longley[1:9,],face.type=1) plot(longley[1:16,2:3],bty="n") a<-faces(longley[1:16,],plot=FALSE) plot.faces(a,longley[1:16,2],longley[1:16,3],width=35,height=30) zadanie: wybrać losowo 10 obserwacji ze zbioru DGP_1 z MOODLE, zastosować twarze Chernoffa do wylosowanej próby. 4