# PCA Voter survey # il dataset contiene il "sentiment" (feeling toward ft) verso alcune minoranze o categorie sociali (scala da 0 -estrem. negativo a 100 - estrem.positivo con -1 che indica non so); # la variabile presvvote16post_2016 riporta il voto espresso alle presidenziali USA 2016 (1= repubblicani, 2=democratici) feeling <- read.csv("feeling.csv", header=T, sep=";") dim(feeling) View(feeling) feeling=na.omit(feeling) #rimuoviamo i valori mancanti names(feeling) feeling[,1] <- as.factor(feeling[,1]) #install.packages("FactoMineR") # Installiamo e carichiamo il pacchetto FactoMineR per analisi miultivariata library(FactoMineR) pca.feeling <- PCA(feeling, quali.sup=1, scale.unit = TRUE) # PCA è la funzione per effettuare l'analisi in componenti principali # lasciare scale.unit=TRUE (cioè standardizzare le variabili per togliere l'effetto della scala di misura) # quali.sup e quanti.sup contengono come valore l'indice di colonna che contienete riuspettivamente le variabili qualitative e quantitative che non devono essere considerate per individuare la componenti (se ci sono var. qualitativve nel dataframe richiamato nella funzioen PCA allora quali.sup deve essere obbligatoriamente specificato) pca.feeling summary(pca.feeling) # Fornisce un riepilogo dei risultati: individuals Dim.1 (fornisce le coordinate delle unita statistiche sulla prima componente principale); Variables Dim.1 qulle delle variabili per la comp. princ. 1 # Valutiamo la varianza spiegata dalle prime 2 componenti principali pca.feeling$eig barplot(pca.feeling$eig[,2]) # Grafico della varianza riassunta dalle componenti individuate # per interpretare le componenti principali osserviamo la correlazione $cor tra variabile e componente principale (1 e 2) pca.feeling$var # o ispezioniamo il grafico plot(pca.feeling, choix="var", axes=1:2) # Rappresentazione del cerchio delle correlazioni componenti/variabili (serve ad interpretare gli assi) choix="var" inidica lo spazio delle variabili # la prima componente è legata a feeling positivi verso aclune minoranze # la seconda componente a felling positivi verso cristiani/police/wall street # ad es altright (destra estrema) e (blm black lives matter) hanno correlazione negativa (vettori grosso modo opposti nello spazio fattoriale) plot(pca.feeling, choix="ind", habillage=1) #Rappresentazione delle unità statistiche nello spazio ridotto (ad es. 2 dimensioni), choix="ind" indica lo spazio degli individui (unita statistiche) # con l'argomento habillage possiamo colorare i punti individuo per le modalità della variabile voto espresso (1=Repubblicani/colore nero; 2= democratici/colore rosso) #essendo la variabile qualitativa la prima nel dataset impostiamo habillage = 1 (indicatore della colonna che contiene la var. qualitativa) #come si vede dal grafico le due categorie di votanti vengono ben separate orientativamente rispetto alla bisettrice # per ottenere i "valori" che le unità statistiche hanno sulle nuove variabili pca.feeling$ind[[1]] #potete aggiungerle al dataframe originario e usarle (le prime 3 ad esempio) per fare clustering oppure come variabili indipendenti in un modello di regressione (ricordate che sono tra loro non correlate) feeling_new <- data.frame(feeling, pca.feeling$ind[[1]]) View(feeling_new) # per es. andiamo a vedere il valore medio sulla prima componente dei votanti repubblicani (1) e democratici (2) tapply(feeling_new$Dim.1, feeling_new$presvote16post_2016, mean) # come atteso la media dei repubblicani è negativa e quella dei dem è positiva (da come abbiamo interpretato le c.p. è coerente) # sulla seconda comp. principale situazione speculare tapply(feeling_new$Dim.2, feeling_new$presvote16post_2016, mean)