logo
  • userLoginStatus

Welcome

Our website is made possible by displaying online advertisements to our visitors.
Please disable your ad blocker to continue.

Current View

Management Engineering - Business Data Analytics

Full exam

Quesiti Parte A Quesito 1 (MATE) - 1 punto 2 In un modello di regressione lineare multipla, la presenza di collinearità: Indicare la/le affermazioni vere: • È un problema che rende i coefficienti β stimati poco interpretabili, in quanto non permette di valutare l’effetto che l’incremento unitario di una covariata ha sulla risposta, assumendo le altre covariate fissate.  VERO. La presenza di collinearità influisce sull’interpretabilità dei coefficienti β (e sulla loro varianza, come visto a lezione), in quanto non è possibile assumere le altre covariate fissate se collineari alla covariata per la quale si vuole valutare l’incremento sulla risposta. • È un problema che può essere identificato tramite il calcolo del Variance Inflation Factor (VIF) relativo alle covariate del modello  VERO . Il VIF è un indice in grado di quantificare la presenza di multicollinearità. • È un problema che si verifica sempre quando il modello lineare contiene più di una covariata numerica  FALSO. Si verifica soltanto nel caso in cui le covariate numeriche siano tra loro correlate. Un esempio ne è il caso di Pricipal Component Regression, in cui il modello contiene più di una covariata numerica, ma la collinearità NON si verifica in quanto le covariate sono tra loro scorrelate per definizione. • È un problema che può essere risolto aggiungendo altre covariate nel modello  FALSO. Il problema può essere risolto tramite tools quali Principal Component Regression, Lasso or Ridge Regression Quesito 2 (MATE) - 1 punto 3 Il grafico riportato in figura mostra l’andamento del Mean Square Error (MSE) di modelli con diversa flessibilità, calcolato su training (curva grigia) e test set (curva rossa). In particolare, vengono evidenziati i valori dell’MSE di tre modelli che corrispondono ad una flessibilità uguale a 2 (quadratini gialli), 6 (quadratini azzurri) e 24 (quadratini verdi). Quesito 2 (MATE) - 1 punto 4 Indicare la/le affermazioni vere: • Il modello migliore risulta essere quello in corrispondenza dei quadratini verdi (cioè il modello con maggiore flessibilità), perché ha un MSE molto basso sul training set ma un alto MSE sul test set. • FALSO. Il modello migliore non risulta essere quello verde ma quello blu. Con il modello verde si è verosimilmente in presenza di overfitting, performando molto bene sul training set ma male sul test set. • Gli alti valori di MSE su training e test set del modello in corrispondenza dei quadratini gialli (flessibilità = 2) suggeriscono che il modello in questione è troppo poco flessibile e sottostima la complessità dei dati. • VERO. Questo modello sta verosimilmente underfittando i dati (alto bias e bassa varianza). • In generale, in base al bias-variance trade-off, il modello migliore è quello che minimizza il bias ma massimizza la varianza. • FALSO. Questo modello sta verosimilmente overfittando e non è il modello migliore. • Il modello giallo è verosimilmente quello con la componente di bias più elevata. • VERO. All’aumentare della flessibilità, il bias tende a diminuire velocemente, mentre la varianza ad aumentare. Con un ulteriore aumento della flessibilità, la variabilità inizia a crescere velocemente (overfitting), mentre il bias continua a diminuire, ma più lentamente. E’ quindi vero che il modello giallo è verosimilmente quello con più alta componente di bias. Quesito 3 (MATE) - 1 punto 5 In un test d’ipotesi: Indicare la/le affermazioni vere: • L'errore di primo tipo è l'inverso dell'errore di secondo tipo  FALSO. Non è il suo inverso. L’errore di secondo tipo è la probabilità di NON rifiutare un’ipotesi nulla FALSA, l’errore di primo tipo è la probabilità di RIFIUTARE un’ipotesi nulla VERA. • Se si vuole ridurre contemporaneamente la probabilità di errore di primo e secondo tipo, si deve agire sulla dimensione campionaria.  VERO . Aumentando la dimensione del campione, si riduce la variabilità della statistica in questione, riducendo le sue probabilità di non trovarsi nella regione di rifiuto quando la sua vera distribuzione campionaria lo indicherebbe. • L'errore di primo tipo è la probabilità di accettare un'ipotesi nulla falsa  FALSO. L’errore di primo tipo è la probabilità di RIFIUTARE un’ipotesi nulla VERA. • La potenza si ottiene come complementare a 1 della probabilità di errore di secondo tipo.  VERO. Perché la potenza di un test è la probabilità di rifiutare un’ipotesi nulla falsa (1-β) e l’errore di secondo tipo è la probabilità di NON rifiutare un’ipotesi nulla falsa (β) Quesito 4 (MATE) - 1 punto 6 La figura seguente riporta (panel a) l’autoplot relativo alle prime due componenti principali identificate da una PCA effettuata su un dataset contenente i consumi di 7 tipi di alimenti in 25 paesi del mondo e (panel b) i loadings relativi alle prime due componenti principali. Le 7 variabili sulle quali è stata effettuata la PCA sono Meat, Pigs, Eggs, Milk, Fish, Cereals and Pulse (legumi). Valori alti di queste variabili indicano alti consumi. a) b) Quesito 4 (MATE) - 1 punto 7 Indicare la/le affermazioni vere: • Le prime due componenti principali spiegano più dell’80% della variabilità totale dei dati.  FALSO. Nel plot a) è riportato Comp.1 (46.32%) e Comp.2 (18.22%). In totale le due componenti principali spiegano 46.32 + 18.22 = 64.54% < 80% • Dall’analisi delle prime due componenti principali emerge che il Portogallo è un paese ad alto consumo di frutta e pesce, rispetto alla media.  VERO. Il Portogallo si trova nella parte alta del plot a), ovvero ha un Comp.2 alto ovvero è un paese ad ALTO consumo di Fish e Fruit rispetto alla media (verificabile anche dal plot b). • Dall’analisi delle prime due componenti principali emerge che l’Irlanda è un paese a basso consumo di alimenti di origine animale (Meat, Pigs, Eggs, Milk, Fish), rispetto alla media.  FALSO. L’Irlanda si trova nella parte basso-destra del plot a), ovvero ha un Comp.1 alto ovvero è un paese ad ALTO consumo di Meat, Pigs, Eggs, Milk, Fish rispetto alla media (verificabile anche dal plot b). Quesito 5 (MATE) - 1 punto 8 La figura seguente riporta (panel a) il risultato di un albero di classificazione costruito per una variabile risposta categorica a due livelli (blu e rosso) a partire da due covariate numeriche x1 e x2. Le foglie dell’albero riportano la probabilità stimata di appartenere ad una delle due classi della risposta. La figura nel panel b rappresenta la variabile risposta nello spazio delle covariate x1 e x2, per i dati a disposizione. a) b) Quesito 5 (MATE) - 1 punto 9 Indicare la/le affermazioni vere: • La probabilità riportata nelle foglie è la probabilità stimata di appartenere alla classe blu.  VERO. In generale, nel grafico b), nei riquadri in cui è riportata probabilità >0.5 c’è prevalenza di dati blu mentre in quelli in cui la probabilità è corr(z_2, x_3).  Il test Wu-Hausman ci permette di affermare che la regressione IV è preferibile rispetto alla regressione OLS. VERO, in quanto il Wu-Hausman rifiuta l’ipotesi nulla di assenza di bias nel corrispondente modello OLS.  Nessuna delle altre risposte. FALSO, in quanto la 2 e la 3 sono vere. Quesito 8 (GES) - 1 punto  Dato il seguente DAG, dove B è la variabile causale di interesse, Y è la variabile di outcome e A, C, D ed E sono quattro variabili osservabili, stabilire quali delle seguenti affermazioni sono vere: A B C D Y E Quesito 8 (GES) - 1 punto  Sono presenti 2 back-door path aperti rispetto alla variabile B.  A è un confounder.  E è un collider.  Nella regressione , possiamo interpretare in senso causale.  Nessuna delle precedenti. Quesito 8 (GES) - 1 punto  Sono presenti 2 back-door path aperti rispetto alla variabile B. FALSO , esiste un solo back-door path. Y  D  A  B  C  Y.  A è un confounder. VERO , A causa B e D.  E è un collider. VERO , E è concausato da B e Y.  Nella regressione , possiamo interpretare in senso causale. FALSO , in quanto non abbiamo controllato per A e, quindi, non abbiamo chiuso il back-door path aperto.  Nessuna delle precedenti. FALSO , in quanto due risposte sono vere. Quesito 9 (GES) - 1 punto Data la rete in figura stabilire quali delle seguenti affermazioni sono vere: Quesito 9 (GES) - 1 punto  Il grado del nodo G è 2  Il nodo A ha un clustering coefficient pari a 0.333  Gli shortest paths che passano dal nodo E sono 8  La rete è direzionata e connessa  Tutte le altre affermazioni sono false Quesito 9 (GES) - 1 punto  Il grado del nodo G è 2  VERO.  Il nodo A ha un clustering coefficient pari a 0.333  FALSO. Il nodo A ha 3 vicini ma con essi costruisce solo 2 dei 3 triangoli possibili (ABC, ACG ma non ABG). Il clustering coefficient di A è quindi 2/3=0.6666.  Gli shortest paths che passano dal nodo E sono 8  VERO.  La rete è direzionata e connessa  FALSO. La rete non è direzionata.  Tutte le altre affermazioni sono false  FALSO. Approfondimento: calcolo betweenness centrality normalizzata nodo E Tolto il nodo E, nel grafo restano 6 nodi. Poichè il grafo è connesso, esiste uno shortest path da e verso ciascuno di essi. Ci sono quindi (6*5)/2=15 shortest paths. La betweenness centrality normalizzata del nodo E sarà 8/15=0.5333333. Quesito 10 (GES) - 1 punto La seguente figura rappresenta il risultato dell'applicazione di un algoritmo di clustering: Quesito 10 (GES) - 1 punto Si selezionino le affermazioni vere:  Si tratta di un k-means clustering  FALSO : è uno hierarchical clustering  E' stato usato un linkage di tipo "average"  FALSO : il linkage è complete  La distanza tra l'osservazione 3 e l'osservazione 2 è inferiore della distanza tra l'osservazione 3 e l'osservazione 1  FALSO : hanno la stessa distanza poichè fondono nello stesso punto  La distanza tra l'osservazione 3 e l'osservazione 10 è maggiore della distanza tra l'osservazione 3 e l'osservazione 9  FALSO : hanno la stessa distanza poichè fondono nello stesso punto  Tagliando il dendogramma a height=10, si ottengono 4 cluster  FALSO : se ne ottengono 3  Nessuna delle precedenti  VERO Business Data Analytics Esame 2022-07-18 2022-07-14 Introduzione Si scarichi il datasetarrivalsdal seguente LINK e lo si carichi in R con il comando: read.csv("arrivals.csv", fileEncoding="utf8") Non lo si apra in Excel o in altri software prima di caricarlo con R.Il dataset contiene 3000 osservazioni su altrettanti arrivi via traghetto in Sardegna nel mese di Giugno 2022. Il dataset contiene le seguenti variabili:ˆproceedsil ricavo ottenuto dalla compagnia in quella tratta, espresso in migliaia di euro ˆweekend variabile dummy uguale a 1 se il traghetto è partito durante il weekend (inteso come Venerdì, Sabato o Domenica) e 0 altrimenti ˆnightvariabile dummy uguale a 1 se il traghetto ha viaggiato di notte e 0 se viaggia di giorno ˆn_peoplenumero di passeggeri che hanno acquistato il biglietto per quel viaggio ˆn_staffnumero di personale (sta) stanziato per quel viaggio ˆn_residentsnumero di passeggeri residenti in Sardegna ˆn_carsnumero di macchine trasportate per quel viaggio ˆn_under_12numero di passeggeri under 12 per quel viaggio ˆn_over_65numero di passeggeri over 65 per quel viaggio ˆn_hoursnumero di ore impiegate per quel viaggio per raggiungere la Sardegna ˆtour_tickets numero di biglietti venduti per il tour dell'arcipelago della Maddalena durante il tragitto ˆpromotion variabile dummy uguale a 1 se durante il tragitto è stata fatta un'oerta promozionale sui biglietti del tour dell'arcipelago della Maddalena e 0 altrimenti Domanda 1 (MAT) (1 punto) Si vuole condurre un test per vericare l'ipotesi che i ricavi per i viaggi eettuati di notte siano diversi da quelli eettuati di giorno, assumendo la normalità delle due sotto-popolazioni e l' uguaglianza delle loro varianze.df = read.csv("arrivals.csv", fileEncoding="utf8") X = df$proceeds[df$night == 1] 1 Y = df$proceeds[df$night == 0] # Dobbiamo fare un t-test bilatero nX = length(X) nY = length(Y) s2x = var(X) s2Y = var(Y) s2p = 1/(nX + nY - 2) * ((nX-1)*s2x + (nY-1)*s2Y) sp = sqrt(s2p) t = (mean(X) - mean(Y)) / sp / sqrt (1/nX + 1/nY) t ## [1] 2.568416 pval = 2*(1 - pt(abs(t), df = nX + nY -2)) pval ## [1] 0.01026446 # oppure automaticamente t.test(X, Y, var.equal = T) ## ## Two Sample t-test ## ## data: X and Y ## t = 2.5684, df = 2998, p-value = 0.01026 ## alternative hypothesis: true difference in means is not equal to 0 ## 95 percent confidence interval: ## 1.241645 9.254552 ## sample estimates: ## mean of x mean of y ## 3229.327 3224.079Risposta: Dobbiamo procedere ad uno t-test di confronto tra medie, in quanto si assume normalità delle due popolazioni. ˆ VERO: Lo stimatore della varianza necessario per il computo della statistica test è lo stimatore pooled. ˆVERO: La statistica test vale 2.5684. ˆ VERO: C'è evidenza per aermare che le due medie sono diverse a livello 5%. Otteniamo un p-value pari a0 :01026, il che ci porta a riutare l'ipotesi nulla di uguaglianza al5%di signicatività: le medie sono tra loro diverse. ˆFALSO: Il p-value ottenuto risulta essere maggiore di 0.05. Domanda 2 (MAT) (3 punti) Stimare un modello di regressione lineare che spieghi il ricavo ottenuto ( proceeds ) usando tutte le restanti variabili del dataset TRANNE weekend ,night ,promotion etour_tickets (SUGGERIMENTO: stimare il modello creando un nuovo data frame, contenente solo le variabili da utilizzare). Calcolare un intervallo di predizione per la risposta, con una signicatività del1%, nel caso di un viaggio durato 10 ore, con 2000 passeggeri, 30 elementi dello sta, 200 passeggeri residenti, 150 macchine trasportate, 350 under 12 e 500 over 65. Riportare sia gli estremi dell'intervallo che la stima puntuale. 2 Ritenete che il modello sia aetto da un problema di collinearità? Giusticare la risposta numericamente, riportando i VIF dei predittori a cui il problema è imputabile.library(car) ## Caricamento del pacchetto richiesto: carData #df2 = df[,-c(2,3,11,12)] df2 = subset(df, select=-c(weekend, night, promotion, tour_tickets)) model = lm(proceeds~.,data = df2) summary(model) ## ## Call: ## lm(formula = proceeds ~ ., data = df2) ## ## Residuals: ## Min 1Q Median 3Q Max ## -108.978 -20.688 0.284 20.965 101.476 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 2.998e+03 8.871e+00 337.980 < 2e-16 *** ## n_people 3.577e-01 1.974e-01 1.812 0.0701 . ## n_staff -4.000e-01 4.681e-01 -0.854 0.3930 ## n_residents -3.077e-02 1.865e-03 -16.500 < 2e-16 *** ## n_cars 1.958e-01 4.273e-03 45.822 < 2e-16 *** ## n_under_12 -1.055e+00 5.504e-01 -1.917 0.0553 . ## n_over_65 -1.484e-01 5.504e-01 -0.270 0.7875 ## n_hours 8.380e-01 1.976e-01 4.240 2.3e-05 *** ## --- ## Signif. codes: 0 '***'0.001'**'0.01'*'0.05'.'0.1' '1 ## ## Residual standard error: 30.92 on 2992 degrees of freedom ## Multiple R-squared: 0.6958, Adjusted R-squared: 0.6951 ## F-statistic: 977.6 on 7 and 2992 DF, p-value: < 2.2e-16newdata = data.frame(n_hours = 10, n_people = 2000, n_staff = 30, n_residents = 200, n_cars = 150, n_under_12 = 350, n_over_65 = 500) predict(model, newdata,interval = "pred",level = 0.99) ## fit lwr upr ## 1 3289.723 3095.008 3484.437vif(model) ## n_people n_staff n_residents n_cars n_under_12 n_over_65 ## 16004.165267 36.934615 1.059063 1.052441 4975.125301 11191.930024 ## n_hours ## 1.001862 Risposta: l'intervallo cercato è (3095 :008 ;3484 :437), con stima puntuale3289 :723. Il modello ha un grave problema di collinearità, poichè diversi predittori hanno VIF molto alto: n_people (16004), n_under_12 (4975), n_over_65 (11191) e, anche se in misura minore rispetto agli altri, anche n_sta (36.93). 3 Domanda 3 (MAT) (3 punti)Stimare un modello Principal Component Regression utilizzando risposta e i predittori come alla domanda numero 2, e utilizzando il minimo numero di componenti principali necessario a spiegare almeno l'80% della variabilità dei predittori stessi. Riportare:ˆQuante componenti principali sono state utilizzate ˆI coecienti stimati per le variabili originali n_people, n_residents e n_over_65 ˆI predittori risultano ancora collineari in questo caso? Perchè? NOTA: standardizzare i predittori (opzione scale = T) Si ricorda agli studenti che il modo più rapido per eseguire la Principal Component Regression è utilizzare le funzionalità del pacchetto pls.library(pls) ## ## Caricamento pacchetto: 'pls' ## Il seguente oggetto è mascherato da'package:stats': ## ## loadingsmodel_pcr = pcr(proceeds~.,data = df2, scale = T) summary(model_pcr) ## Data: X dimension: 3000 7 ## Y dimension: 3000 1 ## Fit method: svdpc ## Number of components considered: 7 ## TRAINING: % variance explained ## 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps 7 comps ## X 58.66 73.19 86.63 99.71 100.00 100.00 100.00 ## proceeds 47.04 51.71 66.48 69.42 69.53 69.56 69.58 model_pcr$coefficients[,1,3] ## n_people n_staff n_residents n_cars n_under_12 n_over_65 ## 9.452477 9.418198 -15.033104 19.399821 9.451680 9.457358 ## n_hours ## 6.018473 Risposta: si utilizzano 3 componenti. I coecienti cercati sono 9.452, -15.033, 9.457. I VIF adesso valgono tutti 1 perchè i predittori utilizzati in fase di stima (ovvero le componenti principali) sono tra loro scorrelate per denizione. Domanda 4 (MAT) (3 punti) Si supponga adesso di voler costruire un modello che spieghi i ricavi ( proceeds ) in funzione di tutte le altre variabili presenti nel dataset iniziale TRANNE promotion etour_tickets . Si decide di utilizzare un modello di regressione shrinkage(ovvero con penalizzazione) per ridurre eventuali problemi dovuti alla collinearità, tuttavia si desidera anche che nessuna delle variabili utilizzate venga esclusa dal modello. Stimare un modello di Ridge Regression utilizzando la seguente griglia di valori di:lambda = 10seq(-4, 2, by = 0.2) Dopo di che, eseguire il comando 4 set.seed(1000) e procedere con la 10-folds cross-validation del modello stesso.Riportare il valore di corrispondente al minimo errore in cross-validazione. Di quanto incrementa il ricavo della compagnia per ogni under_12 in più imbarcato, a parità di altri fattori? library(glmnet) ## Caricamento del pacchetto richiesto: Matrix ## Loaded glmnet 4.1-4 df3 = df[,-c(11,12)] x = model.matrix(proceeds~., data = df3)[,-1] y = df$proceeds model_ridge = glmnet(x,y,lambda = lambda,alpha = 0) set.seed(1000) model_ridge_cv = cv.glmnet(x,y,lambda = lambda,alpha = 0,nfolds = 10) bestlam = model_ridge_cv$lambda.min ## prima linea tratteggiata (lambda in corrispondenza del minor MSE in CV) bestlam ## [1] 0.03981072 indbest = which(model_ridge_cv$lambda == bestlam) coef(model_ridge)[,indbest] ## (Intercept) weekend night n_people n_staff ## 2992.37686803 6.33996338 3.34342390 0.02986020 -0.24575262 ## n_residents n_cars n_under_12 n_over_65 n_hours ## -0.03090572 0.19589090 0.15115363 0.11007836 0.83074088 Risposta: Occorre fare Ridge regression, il valore di cercato è pari a 0.0398, il ricavo della compagnia per ogni under_12 in più imbarcato, a parità di altri fattori, incrementa di 0.151. Domanda 5 (GES) (3 punti) L'azienda che gestisce i traghetti organizza anche un tour per l'Arcipelago della Maddalena e sfrutta il viaggio in traghetto per vendere biglietti per il tour. Per convincere i viaggiatori ad acquistare un biglietto per il tour l'azienda opera una promozione, orendo uno sconto sul biglietto del tour solo per i passeggeri presenti sul traghetto. In particolare, la promozione non avviene in tutti i viaggi ma solo su quelli che hanno un numero di passeggeri superiore a 2300. Il trattamento promozionale è indicato con la variabile dummy promotion . L'outcome del trattamento è invece il numero di biglietti del tour venduti, tour_tickets . Inne, il trattamento promotion è stato assegnato utlizzando come variabile di assegnazione il numero di viaggiatori sul traghetto,n_people. Utilizzare uno stimatore naive per valutare l'eetto della promozione sul numero di biglietti del tour venduti e testare se la dierenza è statisticamente signicativa con un t.test tra il gruppo dei trattati e il gruppo dei non trattati. Riportare il naive estimator ed estremi dell'intervallo di condenza del t.test, troncati alla quarta cifra decimale (ad esempio se un numero è 1.23456 riportare 1.2345) come segue: naive estimator; (estremo inferiore, estremo superiore) 5 df_trattati = df[df$promotion==1,] df_non_trattati = df[df$promotion==0,] NAIVE_est