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)