1 Analisi della varianza a due vie (modello lineare e GLM)

inserire formule

trattare un caso non 2x2 ma bilanciato

eventuale (futura) discussione sui casi sbilanciati.

1.1 Inizializzazione:

vengono caricati i packages necessari per realizzare questo documento

Data Frame Summary

X

Dimensions: 93 x 3
Duplicates: 49
No Variable Stats / Values Freqs (% of Valid) Graph
1 sfebbr [integer] Mean (sd) : 5.5 (5.1) min < med < max: 0 < 4 < 30 IQR (CV) : 6 (0.9) 20 distinct values
2 trattamento [factor] 1. B 2. C
44(47.3%)
49(52.7%)
3 livelloRischio [factor] 1. alto 2. basso
61(65.6%)
32(34.4%)

Generated by summarytools 0.9.6 (R version 4.0.2)
2020-09-16

1.2 Il problema generale

Il data.frame trial1.new contiene parte dei risultati di un clinical trial.

In questa lezione non entrerò nel dettaglio di come sono stati raccolti i dati e come fosse stato pianificato l’esperimento, ma descrivo alcune caratteristiche dei dati che serviranno a delineare il problema statistico.

Le 93 unità sono i pazienti sottoposti ad una terapia antifungina. Sono suddivisi in pazienti ad alto e basso rischio (variabile livelloRischio).

Per ognuno dei livelli di tale variabile è stato assegnato a caso il trattamento sperimentale (variabile trattamento), per cui la suddivisione delle osservazioni nelle quattro caselle date dalle combinazioni dei due fattori non è esattamente bilanciata.

La variabile sfebbr rappresenta il numero di giorni trascorsi per lo sfebbramento dopo la somministrazione del trattamento

Si vuole studiare la dipendenza della variabile sfebbr (quantitativa) dalle variabili trattamento e livelloRischio (variabili qualitative con due livelli ciascuna).

Ovviamente impiegheremo la metodologia generale dei modelli lineari, ma in effetti lo scopo dell’analisi è vedere quale dei due trattamenti trattamento sia più efficace ai fini dello sfebbramento, ossia se il valore atteso della variabile sfebbramento differisce significativamente nei gruppi corrsiondenti ai due trattamenti.

L’analisi potrebbe essere complicata dal fatto che comunque si sa che il valore atteso di sfebbr ragionevolmente è influenzato dalla variabile livelloRischio, che potrebbe confondere il risultato.

Prima però effettuiamo qualche analisi preliminare

1.3 Analisi preliminare dei dati

Le osservazioni so raggruppate in quattro gruppi, poichè le due variabili di classificazione hanno due modalità sciascuna.

   
    alto basso
  B   29    15
  C   32    17

Intanto calcoliamo medie e dispersioni della variabile d’interesse livelloRischio in funzione delle altre due. Otterremmo una tavola di medie ed una di deviazione standard

           livelloRischio
trattamento     alto    basso
          B 6.275862 2.733333
          C 6.718750 4.352941
           livelloRischio
trattamento     alto    basso
          B 5.344534 2.120198
          C 6.118372 2.914215

1.4 Omoschedasticità

Vediamo adesso se,almeno dal punto vista empirico, vi è una relazione fra dispersione e medie. E’ un tipo di rappresentazione sempre utile da fare tutte le volte che i dati sono suddivise in gruppi.

dal grafico appare evidente che c’è una relazione fra dispersione e medie.[^nota1] [^nota1]: In effetti in questo modulo del corso non affronto il problema di un vero e proprio test per saggiare l’ipotesi di uguaglianza fra le varianze all’interno dei gruppi (il cosiddetto test di Bartlett)

Che vi siano comunque forti dubbi sulla ragionevolezza dell’assunzione di uguaglianza delle varianze appare chiaro applicando un semplice modello additivo per la variabile sfebbr, e rappresentando graficamente la relazione fra i residui empirici e i valori calcolati.

L’aumento della dispersione appare chiaro dal tipico aspetto ad imbuto…

1.5 Una trasformata della variabile.

Sebbene non sia l’apptroccio metodologicamente più corretto, per ora affrontiamo in prima approssimazione il problema trasformando la variabile di risposta con \(log(y+\frac{1}{2})\). In questo modo eviteremo logaritmi di zeri e consideriamo anche il fatto che i gironi di sfebbramento in realtà sono stati rlievati troncando il numero di giorni trascorsi fra la somministrazione del trattamento e il primo momento in cui viene rilevato losfebbramento, per cui un valore di zero giorni significa in realtà che è passato meno di un giorno, per cui un valore riportato in sfebbr di \(y\) giorni in realtà corrisponde a una numero di giorni maggiore o uguale a zero e inferiore a uno, per cui il valore centrale della classe è \(y+\frac{1}{2}\), per cui applichiamo a questa la trasformata logaritmica.

  • Riaffronteremo lo stesso problema con una metodologia più adeguata più avanti, quando introdurremo i cosiddetti modelli lineari generalizzati GLM *

Vediamo che intanto con questo cambio di variabile otteniamo uno smorzamento della relazione fra deviazione standard e medie

           livelloRischio
trattamento     alto     basso
          B 1.651687 0.9327282
          C 1.683377 1.4010235
           livelloRischio
trattamento      alto     basso
          B 0.7262758 0.7959457
          C 0.7777326 0.6287361

Gli ultimi due grafici differiscono solo per il cambio di scala in ordinata: il primo grafico potrebbe far credere ancora ad una relazione fra dispersioni e medie, ma in realtà questo è solo dovuto alla scala verticale (che comunque per default R calcola in modo da coprire quasi esattamente il range della variabile)

1.6 Analisi sulla variabile trasformata

Consideriamo due modelli, uno additivo

e l’altro moltiplicativo, ossia con interazioni

Il test per il confronto fra i due modelli (test sull’interazione), mediante anova(m1,m2), sostanzialmente saggia l’ipotesi che le interazioni siano nulle (la interazione, perchè in questo caso abbiamo un solo grado di libertà per le interazioni dato che si tratta di una tavola \(2 \times 2\))

Analysis of Variance Table

Model 1: xl ~ trattamento + livelloRischio
Model 2: xl ~ trattamento * livelloRischio
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1     90 49.711                           
2     89 48.715  1   0.99687 1.8212 0.1806

IL test risulta non significativo, per cui possiamo utilizzare il modello additivo m1


Call:
lm(formula = xl ~ trattamento + livelloRischio, data = X)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.77809 -0.35043 -0.06888  0.49656  1.66300 

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)           1.5730     0.1249  12.589  < 2e-16 ***
trattamentoC          0.1818     0.1544   1.178  0.24206    
livelloRischiobasso  -0.4880     0.1622  -3.008  0.00341 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7432 on 90 degrees of freedom
Multiple R-squared:  0.1035,    Adjusted R-squared:  0.08359 
F-statistic: 5.196 on 2 and 90 DF,  p-value: 0.00732

1.7 Perchè il modello con le interazioni è detto moltiplicativo?

codifica 0/1 delle due variabili esplicative l’interazione è un effetto moltiplicativo e coincide con l’effetto x12=x1*x2

            xl x1 x2
[1,] 0.9162907  0  0
[2,] 1.8718022  1  0
[3,] 2.0149030  0  1
[4,] 1.7047481  1  0
[5,] 1.7047481  0  0
[6,] 2.5257286  1  1
            xl x1 x2 x12
[1,] 0.9162907  0  0   0
[2,] 1.8718022  1  0   0
[3,] 2.0149030  0  1   0
[4,] 1.7047481  1  0   0
[5,] 1.7047481  0  0   0
[6,] 2.5257286  1  1   1

Call:
lm(formula = xl ~ x1 + x2 + x12)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.62588 -0.48473 -0.01644  0.56791  1.73435 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.9327     0.1910   4.883 4.57e-06 ***
x1            0.4683     0.2621   1.787  0.07737 .  
x2            0.7190     0.2353   3.056  0.00296 ** 
x12          -0.4366     0.3235  -1.350  0.18059    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7398 on 89 degrees of freedom
Multiple R-squared:  0.1215,    Adjusted R-squared:  0.09188 
F-statistic: 4.103 on 3 and 89 DF,  p-value: 0.008921

Call:
lm(formula = xl ~ x1 + x2)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.77809 -0.35043 -0.06888  0.49656  1.66300 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.0849     0.1549   7.005 4.33e-10 ***
x1            0.1818     0.1544   1.178  0.24206    
x2            0.4880     0.1622   3.008  0.00341 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7432 on 90 degrees of freedom
Multiple R-squared:  0.1035,    Adjusted R-squared:  0.08359 
F-statistic: 5.196 on 2 and 90 DF,  p-value: 0.00732

Call:
lm(formula = xl ~ trattamento + livelloRischio, data = X)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.77809 -0.35043 -0.06888  0.49656  1.66300 

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)           1.5730     0.1249  12.589  < 2e-16 ***
trattamentoC          0.1818     0.1544   1.178  0.24206    
livelloRischiobasso  -0.4880     0.1622  -3.008  0.00341 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7432 on 90 degrees of freedom
Multiple R-squared:  0.1035,    Adjusted R-squared:  0.08359 
F-statistic: 5.196 on 2 and 90 DF,  p-value: 0.00732

Call:
lm(formula = xl ~ x1 * x2)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.62588 -0.48473 -0.01644  0.56791  1.73435 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.9327     0.1910   4.883 4.57e-06 ***
x1            0.4683     0.2621   1.787  0.07737 .  
x2            0.7190     0.2353   3.056  0.00296 ** 
x1:x2        -0.4366     0.3235  -1.350  0.18059    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7398 on 89 degrees of freedom
Multiple R-squared:  0.1215,    Adjusted R-squared:  0.09188 
F-statistic: 4.103 on 3 and 89 DF,  p-value: 0.008921

1.8 Un’approccio più moderno e generalizzabile:i GLM

In effetti possiamo pensare che i tempi di sfebbramento seguano una distribuzione asimmetrica, approssimabile da una distribuzione gamma, con un valore atteso che potrebbe essere messo in relazione con un predittore lineare nelle stesse variabili che abbiamo considerato finora, ossia trattamento e livelloRischio.

Adattiamo un modello additivo glm1


Call:
glm(formula = y ~ trattamento + livelloRischio, family = Gamma(link = "log"), 
    data = X)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.5029  -0.5464  -0.3305   0.2335   1.7923  

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)           1.8538     0.1276  14.533   <2e-16 ***
trattamentoC          0.1801     0.1576   1.143   0.2560    
livelloRischiobasso  -0.5539     0.1656  -3.345   0.0012 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Gamma family taken to be 0.5756454)

    Null deviance: 54.283  on 92  degrees of freedom
Residual deviance: 47.855  on 90  degrees of freedom
AIC: 497.19

Number of Fisher Scoring iterations: 5

1.9 Confronto fra un GLM additivo e uno moltiplicativo

Adesso, adattiamo un modello moltiplicativo glm2,seguendo la stessa impostazione per il modello lineare impiegato per la variabile trasformata.


Call:
glm(formula = y ~ trattamento * livelloRischio, family = Gamma(link = "log"), 
    data = X)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.4292  -0.5974  -0.2467   0.3072   1.8889  

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                       1.91337    0.14123  13.548  < 2e-16 ***
trattamentoC                      0.06332    0.19499   0.325  0.74616    
livelloRischiobasso              -0.73985    0.24188  -3.059  0.00294 ** 
trattamentoC:livelloRischiobasso  0.34276    0.33258   1.031  0.30552    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Gamma family taken to be 0.5784149)

    Null deviance: 54.283  on 92  degrees of freedom
Residual deviance: 47.244  on 89  degrees of freedom
AIC: 497.9

Number of Fisher Scoring iterations: 5
Analysis of Deviance Table

Model 1: y ~ trattamento + livelloRischio
Model 2: y ~ trattamento * livelloRischio
  Resid. Df Resid. Dev Df Deviance
1        90     47.855            
2        89     47.244  1  0.61192

L’interpretazione dei risultati è la stessa in fondo di quella che faremmo col modello lineare: possiamo utilizzare un modello addiditivo (glm1)


Call:
glm(formula = y ~ trattamento + livelloRischio, family = Gamma(link = "log"), 
    data = X)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.5029  -0.5464  -0.3305   0.2335   1.7923  

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)           1.8538     0.1276  14.533   <2e-16 ***
trattamentoC          0.1801     0.1576   1.143   0.2560    
livelloRischiobasso  -0.5539     0.1656  -3.345   0.0012 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Gamma family taken to be 0.5756454)

    Null deviance: 54.283  on 92  degrees of freedom
Residual deviance: 47.855  on 90  degrees of freedom
AIC: 497.19

Number of Fisher Scoring iterations: 5

Da quest’ultimo summary ritroviamo ancora la stessa conclusione, ossia che il diverso trattamento non influenza il valore atteso dei tempi di sfebbramento. Mentre esiste un effetto significativo per il fattore livelloRischio