analiza korespondencji w R

#elementy analizy korespondencji w R

dane = read.csv2("dane_13_1.csv")
attach(dane)

(n = length(dane[,1]))
head(dane, 10)

# powody:
# P1 częste promocje,P2- produkty dobrej jakosci P3 bliska lokalizacja
#P4 godziny otwarcia, P5 -niskie ceny P6- duzy wybor towarow ,P7- łatwy dojazd

levels(powod) = c("Promocje", "Jakosc", "Blisko", "Godziny", "Ceny",
                  "Wybor", "Dojazd")

#problem - czy istnieje zależność między wybranym sklepem a powodem dla jakiego
#jest on wybierany?

#tabela kontygencji
(tabela = table(sklep, powod))
heatmap(tabela)
heatmap(tabela, scale="col")

#odpowiedź: np. test chi^2  (są też inne testy)
chisq.test(tabela)

#skoro są zależne - to drugie naturalne pytanie
#które kombinacje poziomów występują częściej
#Odpowiedź - analiza korespondencji

#1 - macierz korespondencji (częstości)
P = tabela/n
liczba_w = nrow(P)
liczba_k = ncol(P)

#2 - masy wierszy i kolumn
(masa_w = rowSums(P))
(masa_k = colSums(P))

#teoretyczne częstości (w teście chi^2)
teor = outer(masa_w, masa_k, "*")

#3 - standaryzowane reszty Pearsonowskie
(E = (P-teor)/teor^(1/2))
heatmap(E)

#teraz mała dygresja
#dekompozycja SVD (wartości osobliwe)
A = matrix(c(1,2,3,3,2,0), 2, 3)
eigen(A%*%t(A))
eigen(t(A)%*%A)
(x = svd(A))
D = diag(x$d)

x$u %*% D %*% t(x$v)
t(x$u) %*% A %*% x$v
D

#4 - dekompozycja macierzy E
(S = svd(E))

#zaraz będzie wykres

#standaryzowane współrzędne wierszy i kolumn
#dzielę kolumny u i v przez pierwiastki z mas
X = diag(1/sqrt(masa_w)) %*% S$u
Y = diag(1/sqrt(masa_k)) %*% S$v

#juz jest wykres (dwuwymiarowy), ale kolor bialy
plot(rbind(X[,1:2], Y[,1:2]), col = "white", xlab = "", ylab = "", main = "")

#tak wygladaja sklepy:
text(X[,1:2], levels(sklep), col = "blue")
#a tak powody ich wyboru:
text(Y[,1:2], levels(powod), col = "red")
#cały ten wykres nosi nazwę mapy percepcji

#to teraz dobra wiadomość
#jest do tego wszystkiego funkcja (ca w pakiecie ca)
library(ca)
#bardziej elegancka mapa percepcji
plot(ca(tabela), mass=T)

#co jeszcze umie ta funkcja?
ca(tabela)
summary(ca(tabela))

#inercja całkowita (im większa, tym większe rozproszenie)
chisq.test(tabela)$stat/n
sum(ca(tabela)$rowinertia)
ca(tabela)$rowinertia

#można dodać kolejne wymiary
summary(ca(tabela, nd =3))

#i nawet wykres dla nich narysować (choć już trochę nieczytelny)
plot3d(ca(tabela, nd =3))

detach(dane)


Wyszukiwarka

Podobne podstrony:
Analiza korespondecji i jej zastosowania w naukach społecznych
Analiza korespondencji, Wielowymiarowa analiza statystyczna, Panek, wap
analiza korespondencji p
elementy analizy korespondencji w R
analiza złożonych aktów ruchowych w sytuacjach patologicznych
Prezentacja 2 analiza akcji zadania dla studentow
Wypadkoznawstwo analiza wypadków
Zarz[1] finan przeds 11 analiza wskaz
Analiza czynnikowa II
4 ANALIZA WSKAŹNIKOWA Rachunkowość
analiza finansowa ppt
Analiza rys w twarzy
Analiza rynku konsumentów
Analiza
ANALIZA KOSZTU BIOLOGICZNEGO WYKONYWANEJ PRACY

więcej podobnych podstron