Uploaded by Mattia Francesca

comandi-essenziali-in-r

advertisement
lOMoARcPSD|15341801
Comandi Essenziali in R
business data analytics (Politecnico di Milano)
Studocu is not sponsored or endorsed by any college or university
Downloaded by Mattia Francesca (marchisio866@gmail.com)
lOMoARcPSD|15341801
COMANDI ESSENZIALI in R (BLOCCO 1)
RECAP DEI COMANDI PRELIMINARI:









le principali library che ha senso sempre introdurre sono MASS e rgl
read.csv (“file.txt”, sep=”tipo separatore”, stringsAsFactors=T) per caricare il dataset
rm(list = ls( )) per ripulire l’environment
dataframe$colonna per accedere ad una specifica variabile
dataframe$colonna = factor (dataframe$colonna) serve per fattorizzare le variabili
categoriche
summary (dataframe$var. numerica) per calcolare principali indici di posizione
(distribuzione)
boxplot ( dataframe$var. numerica) serve per disegnare un boxplot
boxplot ( dataframe$var. numerica ~ var. categorica) permette di disegnare i boxplot
dei differenti gruppi identificati dalla variabile categorica
table ( dataframe$var. categorica) per ottenere le frequenze assolute (numerosità) di ogni
gruppo
RECAP DEI COMANDI (singola popolazione):


Shapiro.test (variabile d’interesse) per verificare l’ipotesi di normalità (H0 accettata), se
verificata procedo con t-test altrimenti z-test
t.test (variabile d’interesse, valore µ0, alternative=tipo di alternativa(less,greater,twosided)) per eseguire il t-test
RECAP DEI COMANDI (doppia popolazione indipendente):



Shapiro.test (variabile d’interesse divisa nelle due popolazioni)
var.test (popolazione1, popolazione 2) verificare l’ipotesi di omogeneità delle varianze (accetto H0)
t.test (popolazione 1, popolazione 2, [var.equal=TRUE], alternative=tipo di alternativa)
considerando two-sided di default
RECAP DEI COMANDI (doppia popolazione accoppiata):

t.test (prima, dopo, alternative=tipo di alternativa, paired=TRUE)
RECAP DEI COMANDI (ANOVA):










table (variabile categorica) per verificare che le varie popolazioni abbiano numerosità
simile
tapply (var. numerica, var. categorica, shapiro test) per verificare la normalità di ogni
popolazione identifica dal valore assunto dalla variabile categorica
bartlett.test (variabile numerica, variabile categorica) per verificare l’omogeneità delle
varianze in H0
boxplot (var. numerica ~ var. categorica) per fare un’analisi esplorativa sull’eventuale
differenza tra medie delle popolazioni
model = aov (var. numerica ~ var. categorica, data=bacino dati) per eseguire l’analisi
ANOVA
summary (model) per analizzare l’output dell’analisi
intervalli_anova = Confronti_multipli_da_anova (model, alpha=0,05,
Bonferroni=TRUE) permette di creare un list utile alla generazione di intervalli di confidenza per
le differenze delle medie tra gruppi
intervalli_anova$intervals per generare gli intervalli di confidenza per le differenze delle medie
tra gruppi
plot (matrice dei dati) genera uno scatterplot, che analizza i rapporti tra variabili a 2 a 2 (inutile
per variabili categoriche)
ggpairs (matrice dei dati, aes(color = var. categorica)) genera uno scatterplot più completo
che introduce anche coefficienti di correlazione e grafici utili per variabili categoriche
Per ggpairs è necessaria la library GGally.
RECAP COMANDI GENERICI:
 rbind e cbind servono per compattare vettori sulle righe o colonne per formare delle matrici
 cov/cor (matrice dei dati) per ricavare la matrice di varianza-covarianza/correlazione
Downloaded by Mattia Francesca (marchisio866@gmail.com)
lOMoARcPSD|15341801


colmeans (matrice dei dati) per ricavare le medie delle colonne
data.frame permette di trasformare un insieme di vettori in un dataframe
RECAP COMANDI PCA:
 se sono presenti è necessario considerare come matrice dei dati scale (matrice dei dati)
 PC = princomp (matrice dei dati) per eseguire la PCA
 Summary (PC) per analizzare l’output della PCA
 PC$loadings per stampare i loadings associati alle vecchie variabili
 for(i in 1:7) barplot (PC$loadings[,i], ylim = c(-1, 1)) per plottare i loadings
 autoplot (output del princomp [PC], loadings = TRUE, loadings.label = TRUE)per proiettare
le unità statistiche sugli assi delle PC con anche i loadings
 Necessita della library (ggfortify) per utilizzare autoplot
 In alternativa, il medesimo grafico si può ottenere mediante biplot (output del princomp)
È sempre buon uso definire library (cluster)
RECAP K-MEANS:
 km = kmeans (matrice dei dati numerici, centers = k, nstart = ripetizioni dell’algoritmo) serve
per svolgere l’algoritmo k-means
RECAP CLUSTERING AGGLOMERATIVO:
 dist (matrice dei dati, method= “tipo di distanza”) per ricavare la matrice distanza
 hclust (matrice distanza, method = “tipo di linkage”) per eseguire l’algoritmo di clustering
 plot (output hclust, hang = -0.1, labels = F) per rappresentare il dendrogramma
 cutree (outplut hclust, numero di clusters) per associare ad ogni unità statistica un numero che
identifica il gruppo
 silhouette (km$cluster, matrice distanza) per ricavare l’indice di silhouette
RECAP REGRESSIONE LINEARE SEMPLICE E MULTIPLA:
 ggpairs (dataset) oppure plot(covariata, variabile risposta) per verificare se vi è una ragionevole
assunzione di linearità e rappresentare le osservazioni
 lm (var. risposta ~ covariata, dataset) per eseguire i modelli di regressione lineare
 summary (output lm) per produrre a video la tabella riassuntiva di regressione
 outputlm$coefficients per la stima dei coefficienti
 outputlm$residuals per la stima dei residui che posso anche standardizzare mediante
scale(outputlm$residuals)
 outputlm$fitted.values per la previsione restituita dal modello in training
 par (mfrow = c(2,2)) + plot (output lm) per eseguire la diagnostica sui residui
 predict (output lm, data.frame (covariata = dominio di possibili valori),
interval=”prediction”, level=1-a)
RECAP STEPWISE FEATURE SELECTION:
 In termini generali formula è stepAIC(output lm, details = T, direction = tipo di stepwise)
 Nel caso della backward, inserirò direction = “backward”
 Nel caso della mixed, inserirò direction = “both”
 Nel caso della forward, avrò stepAIC(modello_minimo, direction =”forward”,
scope=list(lower=modello_minimo, upper=~elenco variabili)
RECAP CROSS VALIDAZIONE:
 È utile definire library (boot)
 cv.glm (matrice dei dati, output di glm, k = numero dei fold)
 output_cv.glm$delta[1] per ricavare MSEtest, ossia la stima dell’errore in predizione
Per controllare la collinearità si sfrutta vif (modello_lm)
RECAP PCA REGRESSION:
 pcr (formula, data = dataset, scale = T, validation = “CV”) per fittare il modello e crossvalidare
automaticamente
Downloaded by Mattia Francesca (marchisio866@gmail.com)
lOMoARcPSD|15341801


output pcr$coefficients per identificare i β delle variabili originarie
predict (output_pcr, newdata = , ncomp = ) per fare una predizione, scegliendo quale modello
usare
RECAP RIDGE E LASSO REGRESSION:
 Bisogna definire library (glmnet)






Definisco x = model.matrix (formula, dataset)[,-1]
In generale si adotta glmnet (x, var_risposta, lambda = griglia di valori , alpha= , tresh=1e10) dove avrò α=1 per Lasso e α=0 per Ridge
Mediante autoplot (output_glmnet, label=T, xvar = “lambda”) è possibile visualizzare il grafico
d’analisi
È possibile fare cross-validazione per scegliere il miglior λ, mediante cv.glmnet (matrice dei dati,
var_risposta, lambda = griglia, alpha = ,nfolds = )
Posso estrarre i valori dei λ più importanti, facendo output_cv.glmnet$lambda.min ed estrarre la posizione
nell’elenco dei λ mediante which (output_cv.glmnet$lambda==output_cv.glmnet$lambda.min)
Infine, posso estrarre i coefficienti facendo coef (output glmnet)[ , indice da which]
RECAP REGRESSIONE LOGISTICA:
 glm (formula, family=binomial(link=logit),data = dataset) per eseguire modello di regressione
logistica
 output_glm$coefficients per estrarre i β del modello
 output_glm$linear.predictors per estrarre i valori fittati del logit(p)
 output_glm$fitted.values per estrarre la probabilità p
 Sfrutto predict (output_glm, newdata= , type=”response”) per fare predizione sulla p
 Per calcolare OR scriverò exp( coef(output_glm)[posizione]*incremento)
 Ifelse (output_glm$fitted.values > soglia, 1,0) restituisce l’etichetta 1/0 in base al confronto con la
soglia
 Per rappresentare la confusion matrix si scrive table (pred = output_ifelse, true = colonna
dataset)
RECAP KNN:
 Utile definire library (class)
 knn (train = training set, test = test set, cl = colonna dataset, k = vicini da considerare,
prob = T) per applicare l’algoritmo KNN
 output_knn$prob per calcolare il risultato del voto
RECAP ALBERI DI REGRESSIONE:
 Bisogna definire library (tree)
 tree (formula, data = dataset) per sviluppare un albero di regressione, che minimizzi RSS tra
regioni, facendo attenzione a definire opportunamente il dataset (non serve subset)
 plot (output tree) + text (output tree, pretty=0) per rappresentare l’albero di regressione
 predict (output tree, data = test set) per eseguire una previsione
 mean (( output predict – variabile risposta vera)^2) per calcolare MSETest
 prune.tree (output tree, best = numero di nodi che voglio ottenere) per eseguire il
pruning, ed ottenere l’albero con il numero best di nodi che minimizza RSS
 cv.tree ( output tree, FUN = prune.tree) per scegliere la dimensione migliore per l’albero,
mediante cross-validazione
 plot (output_cv$size, output_cv$dev, type = “b”) per rappresentare l’output di crossvalidazione e scegliere il numero di foglie migliori
RECAP ALBERI DI CLASSIFICAZIONE (uguale all’altro tranne per):
 predict (output tree, data = test set, type =“class”) per eseguire una previsione che ci
restituisca le etichette per ogni osservazione
 prune.misclass (output tree, best = numero di nodi che voglio ottenere) per eseguire il
pruning
Downloaded by Mattia Francesca (marchisio866@gmail.com)
lOMoARcPSD|15341801

cv.tree (output tree, FUN = prune.misclass) per scegliere la dimensione migliore per l’albero,
mediante cross-validazione
RECAP BAGGING:
 Bisogna definire library (RandomForest)
 randomForest (formula, data=dataset, ntree = numero di alberi da aggregare,
mtry = numero di variabili da utilizzare, importance = T) per eseguire l’algoritmo di
Bagging, dove avrò mtry = tutti i predittori
 plot (output RandomForest) per valutare l’errore al variare del numero di alberi
RECAP RANDOM FOREST:
 In questo caso, avrò un numero di variabili mtry da definire, che sarà ridotto rispetto al totale
 Importance (output RandomForest) per valutare l’importanza delle variabili
 varImpPlot (output RandomForest) per rappresentare dei grafici, inerenti all’importanza delle
variabili
Downloaded by Mattia Francesca (marchisio866@gmail.com)
Download