Sei sulla pagina 1di 2

ANALISI DELLE CORRISPONDENZE

INERZIA TOTALE
Dati=read.csv('StatoSalute2005.csv',sep=';')
X=Dati[,2:6]
rownames(X)=Dati$X #nome della colonna nomi della tabella originaria
r=apply(X,1,sum) #totali marginali di riga
c=apply(X,2,sum) #totali marginali di colonna
P=X/sum(X) #frequenze relativematrice di corrispondenza delle frequenze relative, per
normalizzare
r=rowSums(P) #vettore riga, masse di riga (frequenze marginali di riga)
c=colSums(P) #vettore colonna, masse di colonna(frequenze marginali di colonna)
round(r,3) #arrotonda a 3 cifre
round(c,3) #arrotonda a 3 cifre
R=diag(r^-1)%*%as.matrix(P) #distribuzioni condizionate delle Y date Xi matrice dei profili
#riga
round(R,3) #arrotonda a 3 cifre
C=as.matrix(P)%*%diag(c^-1) ##distribuzioni condizionate delle X date Yimatrice dei profili
#colonna
S=diag(r^-.5)%*%(as.matrix(P)-r%*%t(c))%*%diag(c^-.5) #matrice fondamentale che mi
#dice quanto mi discosto dall’indipendenza, per normalizzare
sum(S^2) #inerzia totale somma autovalori
sum(S^2)*sum(X) # chi quadrato oppure chisq.test(X) se alto rifiuto sempre ipotesi di
#indipendenza

d1=sum((R[1,]-t(c))^2/t(c))
d2=sum((R[2,]-t(c))^2/t(c))
r[1]*d1+r[2]*d2 #media ponderata al quadrato delle masse di rigaritrovo l’inerzia totale ma non
si trova!!

ANALISI VALORI SINGOLARI (scomposizione dell’inerzia)


Si trova S (vedi su)
svd(S) # singolar value decompositionda come output: vettore dei valori singolari, matrice U e
#matrice V
# autovalori:
G=svd(S)$d #permette di salvare il vettore
U=svd(S)$u
V=svd(S)$v
#questu 3 memorizzano le due matrici
# se si fa U%*%diag(G)%*%t(V) è uguale a S!!!!
sum(G^2) #permette di elevare al quadrato i valori singolari ed avere l'inerzia totale (=somma degli
#autovalori) (utile per controllare) (=somma dei lambda)
#Ammettendo la tabella 13x4, il numero dei valori singolari è il min[(13-1),(4-1)], cioè 3 (se ne
#escono 4, è perchè l'ultimo è quasi 0)
L=G^2 #da la matrice degli autovalori
L[1]/sum(L) # percentuale di inerzia spiegata dalla prima dimensione
sum(L[1:2]/sum(L)) #ci indica quanto i primi due valori spiegano l'inerzia totale, percentuale
di inerzia spiegata dalle prime due dimensioni
#Calcoliamo i punteggi della matrice riga --> NB: moltiplicare per diag(G) e non per G, perchè
#serve il vettore!!!
Yr=diag(r^-.5)%*%U%*%diag(G) #questo è il vettore degli scores di riga, punteggi dei
#profili riga
rownames(Yr)=rownames(X) #diamo nome alle righe col rownames della tabella originale. Le
#prime due colonne ci danno le coordinate dei vari punti
Yr
round(Yr,3)
Yc=diag(c^-.5)%*%V%*%(diag(G)) #questo è il vettore degli scores di colonna, punteggi dei
#profili colonna
rownames(Yc)=colnames(X) #diamo nome alle colonne col rownames della tabella originale.
#QUESTA VOLTA LO PRENDIAMO DALLE COLONNE!!
Yc
round(Yc,3)

#COSTRUZIONE BIPLOT (ci devono essere tutte le variabili e tutte le osservazioni)


plot(Yr[,1:2],pch=19,col='blue',xlim=c(-1,1),ylim=c(-1,1))
points(Yc[,1:2],pch=19,col='red')
text(Yr[,1],Yr[,2],rownames(X),font=2,cex=.8,pos=4)
text(Yc[,1],Yc[,2],colnames(X),font=2,cex=.8,pos=4,col='red')
lines(c(-1.5,1.5),c(0,0))
lines(c(0,0),c(-1.5,1.5))
# VEDI ESERCIZIO COMPLETO ALLA LEZIONE 18 (nuova cartella)

QR=Yr^2*r
L=G^2
round(QR%*%diag(L^-1),3) # punti dominanti delle prime due dimensioni per i profili riga
QC=Yc^2*c
round(QC%*%diag(L^-1),3) # punti dominanti delle prime due dimensioni per i profili
colonna
Xtilde=X-rep(1,6)%*%t(colMeans(X)) #matrice degli scarti dalla media
#6 perche 6 sono le righe
S=(t(as.matrix(Xtilde)))%*%as.matrix(Xtilde)/6 #matrice varianza e covarianza
#6 numero di righe
R=diag(diag(S)^-.5)%*%S%*%diag(diag(S)^-.5) #matrice di correlazione o dei coefficienti
di correlazione oppure direttamente #cor(X)
R=cor(X)
(R[2,1]*sqrt(4))/sqrt(1-R[2,1]^2) #formula della t di student
# dove 2,1 e 1,2 sono le coordinate
as.matrix(dist(X,'man')) #distanza di Manhattan
D=dist(X,'man')
CL=hclust(D,'single') #cluster analisis
plot(as.dendrogram(CL))

X=matrix(c(4,2,7,3,8,8,1,3),4,2)
X
Xtilde=X-rep(1,4)%*%t(colMeans(X))
S=(t(Xtilde)%*%Xtilde)/4
S
svd(S) #decomposizione spettrale

Potrebbero piacerti anche