Dati

I dati sono stati rilevati tramite un dispositivo indossabile (mi band 4) indossato dal sottoscritto.

La durata della raccolta dei dati va dal 15/09/2019 al 6/12/2020. Il dispositivo indossabile ha dei sensori che registrano in continuazione il battito cardiaco e il sonno, suddividendolo a sua volta tra sonno profondo e sonno leggero. Successivamente si sono trasferiti i dati dal bracciale al telefono che, tramite un’applicazione, ha elaborato i dati raccolti. I dati, poi, sono stati esportati in formato ‘csv’ dall’applicazione al computer e contengono le seguenti informazioni:

sonnoGrezzo=read.table(file = "/Users/Erik/OneDrive - Università degli Studi di Trieste/Dati/SonnoSinteticoOriginale.csv", header = TRUE, sep = ";")
sonnoGrezzo[1:5,]
##   Inizio.sonno  Fine.sonno Sonno.totale Sonno.profondo Sonno.leggero
## 1  1,56851E+12 1,56853E+12          267            148           119
## 2  1,56853E+12 1,56854E+12          133             39            94
## 3  1,56859E+12 1,56862E+12          457             78           379
## 4  1,56867E+12 1,56871E+12          614            188           426
## 5  1,56872E+12 1,56873E+12           25              0            25
##   Battito.medio Battito.Max Battito.Min Qualit..del.sonno
## 1            65          76          52 Sonno molto buono
## 2            63         108          46                  
## 3            55          95          45     Sonno pessimo
## 4            65         102          48 Sonno molto buono
## 5            62          76          55

Prima di importare i dati in R li si ha adattati e semplificati per una migliore lettura, nello specifico:

Qualità dei dati

  • Quanto bene misurano ciò che vogliamo misurare: tutti i dati scelti sono ben definiti, i più problematici potrebbero essere i dati relativi al sonno e al tipo di sonno.
  • Quanto precisamente misurano ciò che vogliamo misurare: su alcuni dati il margine d’errore è nullo, ad esempio in Dì.settimana non c’è dubbio del giorno della settimana in cui ci si sia addormentati, mentre per l’orario di inizio Ora.inizio ha spesso un margine di errore di una decina di minuti. Lo strumento con la quale viene analizzato il battito cardiaco ha una sensibilità di 1 bpm.

Quindi i dati sono validi, rappresentativi (eccetto Mese) e affidabili (anche se non del tutto per la scarsa precisione degli strumenti).

dati = read.table(file = "/Users/Erik/OneDrive - Università degli Studi di Trieste/Dati/sonnoR.csv", header = TRUE, sep = ";")
datiPuliti = table(NULL)
posizionei = c()
posizionek = c()
posizioneUltima = c()
giorno2 = c()
i = 1
ultimoDatoDoppio = 0
datiElaborati = table(NULL)
vettIndice = c(1:length(dati$Giorno))
#controlla quanti dati appartengono allo stesso giorno
while (i < length(dati$Giorno))
{
  if (i > 1) {
    if (dati$Giorno[i - 1] != dati$Giorno[i]) {
      #se il giorno prima è diverso dal giorno attuale
      j=i
      while (dati$Giorno[i] == dati$Giorno[j]) {
        posizionei = c(posizionei, i)
        giorno2 = c(giorno2, dati$Giorno[i])
        if (j != length(dati$Giorno)) {
          kult = j
          j = j + 1
        } 
        if(j == length(dati$Giorno)){ #ho dovuto sostituire il else a causa di un errore sconosciuto
          #così esce sicuro dal ciclo
          posizionei = c(posizionei, i)
          giorno2 = c(giorno2, dati$Giorno[i])
          kult = j
          j = i-1
        }
        
      }
      for (k in i:kult) {
        posizionek = c(posizionek, kult)
      }
    }
  } else{
    #caso i=1
    j = i
    while (dati$Giorno[i] == dati$Giorno[j]) {
      posizionei = c(posizionei, i)
      giorno2 = c(giorno2, dati$Giorno[i])
      kult = j
      j = j + 1
    }
    for (k in i:kult) {
      posizionek = c(posizionek, kult)
    }
  }
  i = i + 1
}
datiPuliti = matrix(c(vettIndice, posizionei, posizionek, giorno2),
                    ncol = 4,
                    byrow = FALSE)
dimnames(datiPuliti) = list(1:length(posizionei),
                            c("vettIndice", "posizionei", "posizionek", "giorno2"))
#somme e medie
datiElaborati = matrix()
data=c()
giornoSettimana = c()
g=c()
diSettimana=c()
oraInizio=c()
oraFine=c()
giorno = c()
mese = c()
inizioSonno = c()
fineSonno = c()
sonnoTot = c()
sonnoPro = c()
sonnoLeg = c()
battitoMed = c()
battitoMax = c()
battitoMin = c()
i = 1
while (i < length(dati$Giorno)) {
  if (datiPuliti[i, 2] != datiPuliti[i, 3]) {
    fine = as.integer(datiPuliti[i, 3])
    data=c(data,dati$Data[i])
    giornoSettimana = c(giornoSettimana, dati$Giorno.della.setimana[i])
    g=c(g,dati$Giorno[i])
    diSettimana=c(diSettimana,dati$Giorno.lettere[i])
    oraInizio=c(oraInizio,dati$Ora.inizio[i])
    oraFine=c(oraFine,dati$Ora.fine[i])
    giorno = c(giorno, dati$Giorno[i])
    mese = c(mese, dati$Mese[i])
    inizioSonno = c(inizioSonno, dati$Inizio.sonno[i])
    fineSonno = c(fineSonno, dati$Fine.sonno[fine])
    sommaSonnoTot = sum(dati$Sonno.totale[c(i:fine)])
    sommaSonnoPro = sum(dati$Sonno.profondo[c(i:fine)])
    sommaSonnoLeg = sum(dati$Sonno.leggero[c(i:fine)])
    mediaBattitoMed = mean(dati$Battito.medio[c(i:fine)])
    mediaBattitoMax = max(dati$Battito.Max[c(i:fine)])
    mediaBattitoMin = min(dati$Battito.Min[c(i:fine)])
    sonnoTot = c(sonnoTot, sommaSonnoTot)
    sonnoPro = c(sonnoPro, sommaSonnoPro)
    sonnoLeg = c(sonnoLeg, sommaSonnoLeg)
    battitoMed = c(battitoMed, mediaBattitoMed)
    battitoMax = c(battitoMax, mediaBattitoMax)
    battitoMin = c(battitoMin, mediaBattitoMin)
    i = fine + 1
  } else{
    #caso solo 1 dato per giorno
    g=c(g,dati$Giorno[i])
    data=c(data,dati$Data[i])
    giornoSettimana = c(giornoSettimana, dati$Giorno.della.setimana[i])
    diSettimana=c(diSettimana,dati$Giorno.lettere[i])
    oraInizio=c(oraInizio,dati$Ora.inizio[i])
    oraFine=c(oraFine,dati$Ora.fine[i])
    giorno = c(giorno, dati$Giorno[i])
    mese = c(mese, dati$Mese[i])
    inizioSonno = c(inizioSonno, dati$Inizio.sonno[i])
    fineSonno = c(fineSonno, dati$Fine.sonno[i])
    sonnoTot = c(sonnoTot, dati$Sonno.totale[i])
    sonnoPro = c(sonnoPro, dati$Sonno.profondo[i])
    sonnoLeg = c(sonnoLeg, dati$Sonno.leggero[i])
    battitoMed = c(battitoMed, dati$Battito.medio[i])
    battitoMax = c(battitoMax, dati$Battito.Max[i])
    battitoMin = c(battitoMin, dati$Battito.Min[i])
    i = i + 1
  }
}

#intestazione
intestazione = c(
  "Data",
  "Giorno",
  "Dì settimana",
  "Ora inizio",
  "Ora fine",
  "Mese",
  "Inizio sonno",
  "Fine sonno",
  "Sonno totale",
  "Sonno profondo",
  "Sonno leggero",
  "Media battito cardiaco",
  "Max battito cardiaco",
  "Min battito cardiaco"
)

datiElaborati = matrix(
  c(
    data,
    giorno,
    diSettimana,
    oraInizio,
    oraFine,
    mese,
    inizioSonno,
    fineSonno,
    sonnoTot,
    sonnoPro,
    sonnoLeg,
    battitoMed,
    battitoMax,
    battitoMin
  ),
  ncol = 14
)


dimnames(datiElaborati) = list(NULL, intestazione)
frame = data.frame(datiElaborati)
framePulito = data.frame(NULL)


#Conversione dei dati in numeri
frame = transform(frame,
                  Ora.fine = as.integer(Ora.fine))
frame = transform(frame,
                  Ora.inizio = as.integer(Ora.inizio))
frame = transform(frame,
                  Sonno.totale = as.integer(Sonno.totale))
frame = transform(frame,
                  Sonno.profondo = as.integer(Sonno.profondo))
frame = transform(frame,
                  Sonno.leggero = as.integer(Sonno.leggero))
frame = transform(frame,
                  Media.battito.cardiaco = as.integer(Media.battito.cardiaco))
frame = transform(frame,
                  Max.battito.cardiaco = as.integer(Max.battito.cardiaco))
frame = transform(frame,
                  Min.battito.cardiaco = as.integer(Min.battito.cardiaco))
frame[1:5,]
##         Data Giorno Dì.settimana Ora.inizio Ora.fine      Mese Inizio.sonno
## 1 15/09/2019      7     Domenica       2728      773 Settembre  43723,13681
## 2 16/09/2019      1       Lunedì       2580      941 Settembre    43724,075
## 3 17/09/2019      2      Martedì       2370      993 Settembre   43724,9875
## 4 18/09/2019      3    Mercoledì       2411      725 Settembre  43726,00486
## 5 19/09/2019      4      Giovedì       1970     -305 Settembre  43726,82083
##    Fine.sonno Sonno.totale Sonno.profondo Sonno.leggero Media.battito.cardiaco
## 1 43723,43264          400            187           213                     64
## 2 43724,39236          457             78           379                     55
## 3 43725,62639          639            188           451                     63
## 4 43726,30208          428            166           261                     58
## 5 43727,60833          635            268           367                     42
##   Max.battito.cardiaco Min.battito.cardiaco
## 1                  108                   46
## 2                   95                   45
## 3                  102                   48
## 4                   94                   48
## 5                   94                    0

Valori anomali

frame[frame$Media.battito.cardiaco<40,]
##           Data Giorno Dì.settimana Ora.inizio Ora.fine     Mese Inizio.sonno
## 38  22/10/2019      2      Martedì       2328      693 Ottombre  43759,97014
## 46  30/10/2019      3    Mercoledì       1911     -360 Ottombre  43767,79653
## 47  31/10/2019      4      Giovedì       1965     -302 Ottombre  43768,81875
## 48  01/11/2019      5      Venerdì       2825      848 Novembre  43770,17708
## 49  02/11/2019      6       Sabato       2901     1045 Novembre  43771,20903
## 156 21/02/2020      5      Venerdì       1968     -302 Febbraio  43881,82014
## 387 15/10/2020      4      Giovedì       3083      781 Ottombre  44119,28472
## 427 25/11/2020      3    Mercoledì       2318      615 Novembre  44159,96597
## 428 26/11/2020      4      Giovedì       2283      763 Novembre  44160,95139
## 434 02/12/2020      3    Mercoledì       1918     -374 Dicembre  44166,79931
## 435 03/12/2020      4      Giovedì       1918     -340 Dicembre  44167,79931
##      Fine.sonno Sonno.totale Sonno.profondo Sonno.leggero
## 38  43760,28889          459            207           252
## 46  43768,35694          607            126           478
## 47  43769,35417          599            212           387
## 48  43770,67847          373            141           232
## 49  43771,43542          326            145           134
## 156 43882,26944          516            178           338
## 387 44119,32569           59              9            50
## 427 44160,25625          418            152           266
## 428 44161,31806          528            170           358
## 434 44167,24931          550            244           306
## 435 44168,43472          855            263           591
##     Media.battito.cardiaco Max.battito.cardiaco Min.battito.cardiaco
## 38                       0                    0                    0
## 46                       0                    0                    0
## 47                       0                    0                    0
## 48                       0                    0                    0
## 49                       0                    0                    0
## 156                     28                   94                    0
## 387                      0                    0                    0
## 427                      0                    0                    0
## 428                      0                    0                    0
## 434                     19                   94                    0
## 435                     27                   81                    0

Come si può vedere non sempre il bracciale registra correttamente i dati, ci sono volte in cui, magari per la scarsa aderenza al polso, non viene registrato il battito cardiaco.

In altri casi, invece, ho indossato il bracciale soltanto durante il giorno (in cui magari ho fatto un pisolino) e la notte ho scordato di indossarlo, in questo caso la durata del sonno sarà molto breve e andrà a rovinare le statistiche.

Ci sono moltissimi altri fattori che influenzano la corretta registrazione dei dati. Dato che la mole di dati è significativa e andarli ad analizzare singolarmente sarebbe troppo laborioso, si è scelto di fare una ‘scrematura’ automatica dei dati.

Note: Nel primo ciclo è stato messo un while in modo tale che a ogni giro del ciclo viene ricalcolata la lunghezza. Infatti ogni volta che vengono trovati dei valori anomali viene eliminata l’intera riga (frame=frame[-c(i),])e la lunghezza del frame viene modificata

i = 1
while (i < length(frame[, 1]))
{
  if (frame$Media.battito.cardiaco[i] < 40)
  {
    frame = frame[-c(i),]
  }
  if (frame$Media.battito.cardiaco[i] < 40)
  {
    frame = frame[-c(i),]
  }
  if (frame$Media.battito.cardiaco[i] > 90)
  {
    frame = frame[-c(i),]
  }
  if (frame$Max.battito.cardiaco[i] > 140)
  {
    frame = frame[-c(i),]
  }
  if (frame$Sonno.totale[i] < 180)
  {
    frame = frame[-c(i),]
  }
  if (frame$Sonno.totale[i] > 800)
  {
    frame = frame[-c(i),]
  }
  if (frame$Min.battito.cardiaco[i] < 40)
  {
    frame = frame[-c(i),]
  }
  if (frame$Max.battito.cardiaco[i] < 40) {
    frame = frame[-c(i),]
  }
  i = i + 1
}

Aggiunta di parametri

Osservando i dati si nota una correlazione tra il battito cardiaco (media, minimo e massimo) con i giorni della settimana, escludendo che la causa del variare della media nei diversi giorni della settimana siano proprio i giorni della settimana, allora si è provato a vedere se è correlate con la durata del sonno (totale, profondo, leggero) oppure con l’ora dell’inizio o della fine del sonno.

Per approfondire l’analisi si è scelto di inserire i dati sulla spesa che l’individuo esaminato effettua. I dati sono stati registrati tramite un’applicazione sul telefono in cui per ogni record sono stati inseriti: l’importo, la data, la posizione, la categoria, le etichette che riguardano in cosa è stato speso e con che gruppo di persone.

spesaGrezza=read.csv('/Users/Erik/OneDrive - Università degli Studi di Trieste/Dati/SpesaGrezza.csv',header = TRUE,sep = ';')
spesaGrezza[1695:1701,]
##        account               category currency amount ref_currency_amount  type
## 1695  Contanti Ristoranti & Fast-food      EUR   -2,1                -2,1 Spese
## 1696 Chiavetta           Bar & Locali      EUR   -0,5                -0,5 Spese
## 1697  Contanti Ristoranti & Fast-food      EUR   -1,5                -1,5 Spese
## 1698  Contanti           Bar & Locali      EUR     -9                  -9 Spese
## 1699 Chiavetta           Bar & Locali      EUR  -0,43               -0,43 Spese
## 1700  Contanti Ristoranti & Fast-food      EUR   -2,1                -2,1 Spese
## 1701  Contanti          Abbigliamento      EUR     -5                  -5 Spese
##      payment_type payment_type_local note        date gps_latitude
## 1695         CASH           Contanti      43425,57645      45,6529
## 1696         CASH           Contanti      43425,45232     45,64407
## 1697         CASH           Contanti      43425,38111     45,63992
## 1698         CASH           Contanti      43425,38083     45,63992
## 1699         CASH           Contanti      43424,63205     45,64975
## 1700         CASH           Contanti      43424,63184     45,64975
## 1701         CASH           Contanti      43424,63123     45,65017
##      gps_longitude gps_accuracy_in_meters warranty_in_month transfer payee
## 1695      13,77837                   1200                 0    FALSO      
## 1696      13,76635                     14                 0    FALSO      
## 1697      13,78332                     15                 0    FALSO      
## 1698      13,78332                     15                 0    FALSO      
## 1699      13,77688                     15                 0    FALSO      
## 1700      13,77688                     15                 0    FALSO      
## 1701      13,77554                     15                 0    FALSO      
##                    labels envelope_id custom_category
## 1695        Scuola|Pranzo        1001           FALSO
## 1696         CaffŠ|Scuola        1002           FALSO
## 1697            Cena|Sera        1001           FALSO
## 1698 Sera|Scuola|Cocktail        1002           FALSO
## 1699         CaffŠ|Scuola        1002           FALSO
## 1700        Scuola|Pranzo        1001           FALSO
## 1701                             2000           FALSO

Si è prima effettuata una elaborazione dei dati con Excel dove si sono create delle liste indicatrici che indicassero se in quel giorno si fosse o meno restati fuori la sera, bevuto alcolici e nello specifico se era birra o altro. La formula utilizzata è stata la seguente: =SE(SOMMA.SE(RecordSpesa[ggmmaaaa];[@ggmmaaaa];RecordSpesa[Serata])>0;1;0)

Mentre per registrare la spesa effettuata nel corso della serata la formula è stata la seguente: =ASS(SOMMA.SE(RecordSpesa[ggmmaaaa];[@ggmmaaaa];RecordSpesa[spesa alcol]))*10

Successivamente i dati sono stati inseriti all’interno di un file csv e importati in RStudio e uniti al data frame principale.

sera=read.table('/Users/Erik/OneDrive - Università degli Studi di Trieste/Dati/serata.csv',header = TRUE,sep = ';')
data=c()
giornoSettimana = c()
diSettimana = c()
oraInizio = c()
oraFine = c()
giorno = c()
mese = c()
inizioSonno = c()
fineSonno = c()
sonnoTot = c()
sonnoPro = c()
sonnoLeg = c()
battitoMed = c()
battitoMax = c()
battitoMin = c()
alcol = c()
serata = c()
birra = c()
cocktail = c()
spesa = c()

for (i in 1:length(sera$Data))
{
  for (j in 1:length(frame$Data))
  {
    if (grepl(sera$Data[i], frame$Data[j])) {
      data = c(data, frame$Data[j])
      giorno = c(giorno, frame$Giorno[j])
      diSettimana = c(diSettimana, frame$Dì.settimana[j])
      mese = c(mese, frame$Mese[j])
      oraInizio = c(oraInizio, frame$Ora.inizio[j])
      oraFine = c(oraFine, frame$Ora.fine[j])
      inizioSonno = c(inizioSonno, frame$Inizio.sonno[j])
      fineSonno = c(fineSonno, frame$Fine.sonno[j])
      sonnoTot = c(sonnoTot, frame$Sonno.totale[j])
      sonnoPro = c(sonnoPro, frame$Sonno.profondo[j])
      sonnoLeg = c(sonnoLeg, frame$Sonno.leggero[j])
      battitoMed = c(battitoMed, frame$Media.battito.cardiaco[j])
      battitoMax = c(battitoMax, frame$Max.battito.cardiaco[j])
      battitoMin = c(battitoMin, frame$Min.battito.cardiaco[j])
      alcol = c(alcol, sera$Alcol[i])
      serata = c(serata,sera$Serata[i])
      birra = c(birra,sera$birra[i])
      cocktail = c(cocktail,sera$cocktail[i])
      spesa = c(spesa,sera$spesa[i])
    }
  }
}

datiElaborati = matrix(
  c(
    diSettimana,
    oraInizio,
    oraFine,
    mese,
    sonnoTot,
    sonnoPro,
    sonnoLeg,
    battitoMed,
    battitoMax,
    battitoMin,
    alcol,
    serata,
    birra,
    cocktail,
    spesa
  ),
  ncol = 15
)


intestazioneMaggiorata = c(
  "Dì settimana",
  "Ora inizio",
  "Ora fine",
  "Mese",
  "Sonno totale",
  "Sonno profondo",
  "Sonno leggero",
  "Media battito cardiaco",
  "Max battito cardiaco",
  "Min battito cardiaco",
  "Alcol",
  "Serata",
  "Birra",
  "Cocktail",
  "Spesa"
)

dimnames(datiElaborati) = list(data, intestazioneMaggiorata)
datiIncrociati = data.frame(datiElaborati)
datiIncrociati = transform(datiIncrociati,
                  Ora.fine = as.integer(Ora.fine))
datiIncrociati = transform(datiIncrociati,
                  Ora.inizio = as.integer(Ora.inizio))
datiIncrociati = transform(datiIncrociati,
                  Sonno.totale = as.integer(Sonno.totale))
datiIncrociati = transform(datiIncrociati,
                  Sonno.profondo = as.integer(Sonno.profondo))
datiIncrociati = transform(datiIncrociati,
                  Sonno.leggero = as.integer(Sonno.leggero))
datiIncrociati = transform(datiIncrociati,
                  Media.battito.cardiaco = as.integer(Media.battito.cardiaco))
datiIncrociati = transform(datiIncrociati,
                  Max.battito.cardiaco = as.integer(Max.battito.cardiaco))
datiIncrociati = transform(datiIncrociati,
                  Min.battito.cardiaco = as.integer(Min.battito.cardiaco))
datiIncrociati = transform(datiIncrociati,
                  Alcol = as.integer(Alcol))
datiIncrociati = transform(datiIncrociati,
                  Serata = as.integer(Serata))
datiIncrociati = transform(datiIncrociati,
                  Birra = as.integer(Birra))
datiIncrociati = transform(datiIncrociati,
                  Cocktail = as.integer(Cocktail))
datiIncrociati = transform(datiIncrociati,
                           Spesa = as.integer(Spesa))
livelloMese = c(
  "Gennaio",
  "Febbraio",
  "Marzo",
  "Aprile",
  "Maggio",
  "Giugno",
  "Luglio",
  "Agosto",
  "Settembre",
  "Ottombre",
  "Novembre",
  "Dicembre"
)

livelloSettimana = c("Lunedì",
                     "Martedì",
                     "Mercoledì",
                     "Giovedì",
                     "Venerdì",
                     "Sabato",
                     "Domenica")
#cancellazione di alcuni dati anomali
i=1
while (i<length(datiIncrociati[, 1]))
{
   if (datiIncrociati$Media.battito.cardiaco[i] < 40)
   {
     datiIncrociati = datiIncrociati[-c(i), ]
   }
  i=i+1
}
str(datiIncrociati)
## 'data.frame':    411 obs. of  15 variables:
##  $ Dì.settimana          : chr  "Domenica" "Lunedì" "Martedì" "Mercoledì" ...
##  $ Ora.inizio            : int  2728 2580 2370 2411 2376 2278 2893 2306 2371 2306 ...
##  $ Ora.fine              : int  773 941 993 725 581 811 651 695 5 623 ...
##  $ Mese                  : chr  "Settembre" "Settembre" "Settembre" "Settembre" ...
##  $ Sonno.totale          : int  400 457 639 428 363 560 332 473 501 471 ...
##  $ Sonno.profondo        : int  187 78 188 166 162 142 149 132 55 176 ...
##  $ Sonno.leggero         : int  213 379 451 261 201 418 183 340 446 295 ...
##  $ Media.battito.cardiaco: int  64 55 63 58 56 54 59 54 64 55 ...
##  $ Max.battito.cardiaco  : int  108 95 102 94 86 94 86 95 118 81 ...
##  $ Min.battito.cardiaco  : int  46 45 48 48 47 47 47 45 45 46 ...
##  $ Alcol                 : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ Serata                : int  0 0 0 0 0 1 0 0 0 1 ...
##  $ Birra                 : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ Cocktail              : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ Spesa                 : int  0 0 0 0 0 0 0 0 0 705 ...

Obbiettivo

L’obbiettivo di questa indagine è scoprire quali parametri influenzano o sono correlati con il sonno e con il battito cardiaco. Nello specifico si andrà a cercare se e quanto i parametri a nostra disposizione spiegano il sonno o il battito cardiaco.

Un aspetto interessante potrebbe essere verificare eventuali differenze tra sonno e alcol, oppure tra battito cardiaco e alcol.

Dovremo tenere conto che certe variabili, ad esempio alcol e giorno della settimana possano essere correlate e di conseguenza la relazione con la risposta dell’una e dell’altra potrebbero confondersi.

Analisi esplorativa dei dati

par(mfrow = c(1, 3))
variabile = datiIncrociati$Sonno.totale
hist(
  variabile,
  xlab = LabSonnoTot,
  ylab = LabDensita,
  main = "",
  br = 20,
  freq = FALSE
)
curve(dnorm(x, mean(variabile), sd(variabile)),
      add = TRUE,
      xlim = range(variabile))
variabile = datiIncrociati$Sonno.profondo
hist(
  variabile,
  xlab = LabSonnoPro,
  ylab = LabDensita,
  main = "",
  br = 20,
  freq = FALSE
)
curve(dnorm(x, mean(variabile), sd(variabile)),
      add = TRUE,
      xlim = range(variabile))
variabile = datiIncrociati$Sonno.leggero
hist(
  variabile,
  xlab = LabSonnoLeg,
  ylab = LabDensita,
  main = "",
  br = 20,
  freq = FALSE
)
curve(dnorm(x, mean(variabile), sd(variabile)),
      add = TRUE,
      xlim = range(variabile))

Interessante osservare la distribuzione dell’ora di inizio e di fine che si distribuiscono come una normale univariata asimmetrica e con curtosi

variabile=datiIncrociati$Ora.fine
ggplot(datiIncrociati, aes(x = variabile)) +
  geom_histogram(aes(y = ..density..),
                 fill = 'red',
                 alpha = 0.6,
                 bins = 50) +
  geom_density(colour = 'blue',fill='blue',alpha=0.1,kernel="gaussian",adjust=0.9) + 
  geom_density(colour = 'green',fill='green',alpha=0.1,kernel="gaussian",adjust=5) + 
  xlab(LabFine) +
  ylab(LabDensita)

Nel grafico sottostante è presente la densità approssimata della media del battito cardiaco rapportata ai nei diversi giorni della settimana.

Giorno=as.factor(datiIncrociati$Dì.settimana)
variabile=datiIncrociati$Min.battito.cardiaco
mu <- ddply(datiIncrociati,"Giorno", summarise, grp.mean=mean(Min.battito.cardiaco))
p<-ggplot(datiIncrociati, aes(x=variabile, color=Giorno)) +
  geom_density()+
  geom_vline(data=mu, aes(xintercept=grp.mean, color=Giorno),
             linetype="dashed")+
  xlim(range(variabile))+
  ylab(LabDensita)+
  xlab(LabMedBpm)
p

datiIncrociati$Alcol=as.factor(datiIncrociati$Alcol)
datiIncrociati$Mese = factor(x = datiIncrociati$Mese,
                             levels = livelloMese,
                             ordered = TRUE)
ggplot(datiIncrociati,
       aes(
         x = Mese,
         y = Media.battito.cardiaco,
         fill = Alcol
       )) +
  theme(
    legend.box.spacing = unit(0, "cm"),
    legend.position = "top",
    legend.background = element_blank(),
    axis.text = element_text(size = rel(0.78))
  ) +
  ylab(label = element_blank())+
  geom_boxplot()   

kable(t(table(datiIncrociati$Mese[datiIncrociati$Alcol==1])))
Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottombre Novembre Dicembre
4 10 3 2 10 10 15 10 15 21 6 2

Si può notare che durante il mese di aprile non c’è stata nessuna spesa in Cocktail a causa delle misure adottate per il Covid discorso simile per il mese di novembre. Invece nel mese di gennaio e giugno una possibile giustificazione dei scarsi dati può essere giustificata dalla sessione di esami e quindi dalla mancanza di tempo per lo svago. Questo influisce sulla rappresentatività dei dati per la variabile Mese cosa diversa invece per le altre variabili esplicative.

cocktail=as.factor(datiIncrociati$Cocktail)
datiIncrociati$Dì.settimana=factor(x = datiIncrociati$Dì.settimana,levels = livelloSettimana,ordered = TRUE)
ggplot(datiIncrociati, aes(x=as.factor(Dì.settimana), y=Media.battito.cardiaco, fill=cocktail)) + 
  theme(
    legend.box.spacing = unit(0, "cm"),
    legend.position = "top",
    legend.background = element_blank(),
    axis.text = element_text(size = rel(1))
  ) +
    geom_boxplot()+
  xlab(LabDi)+
  ylab(LabMedBpm)

Di seguito riportiamo la numerosità del campione in cui si verifica il parametro Cocktail nei diversi giorni della settimana in modo da facilitare la lettura del grafico soprastante.

kable(t(table(datiIncrociati$Dì.settimana[datiIncrociati$Cocktail==1])))
Lunedì Martedì Mercoledì Giovedì Venerdì Sabato Domenica
0 4 11 8 16 29 5

Modello

Iniziamo dal modello, provo inizialmente a inserire tutte le variabili a disposizione \[ Y = \beta_1+ \beta_2 dìDellaSettimana + \beta_3 sonnoProfondo + ... + \beta_J Mese+ errore \] dove \(Y\) è la media del battito cardiaco durante il sonno. Subito a prima vista si possono osservare diverse correlazioni tra le variabili.

fit=lm(Media.battito.cardiaco~.,data=datiIncrociati)
summary(fit)
## 
## Call:
## lm(formula = Media.battito.cardiaco ~ ., data = datiIncrociati)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.1346 -2.0904 -0.2493  1.5730 16.7211 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -8.9270542  3.9370989  -2.267 0.023924 *  
## Dì.settimana.L        1.7705314  0.5628700   3.146 0.001788 ** 
## Dì.settimana.Q        0.0915745  0.4975254   0.184 0.854064    
## Dì.settimana.C        0.5376684  0.4900628   1.097 0.273272    
## Dì.settimana^4       -0.0601170  0.4930105  -0.122 0.903012    
## Dì.settimana^5       -0.1943349  0.4950691  -0.393 0.694878    
## Dì.settimana^6       -0.8457706  0.4966628  -1.703 0.089401 .  
## Ora.inizio            0.0039318  0.0010989   3.578 0.000391 ***
## Ora.fine             -0.0019367  0.0008145  -2.378 0.017918 *  
## Mese.L                0.4754008  0.6441619   0.738 0.460960    
## Mese.Q               -0.6214438  0.7062286  -0.880 0.379443    
## Mese.C               -1.1603207  0.6734585  -1.723 0.085713 .  
## Mese^4               -0.2033056  0.6448796  -0.315 0.752736    
## Mese^5               -0.4169304  0.6578764  -0.634 0.526623    
## Mese^6               -0.7773938  0.6365783  -1.221 0.222763    
## Mese^7                0.6455431  0.6429471   1.004 0.315998    
## Mese^8               -0.7410894  0.6305897  -1.175 0.240636    
## Mese^9               -1.3304130  0.6365715  -2.090 0.037283 *  
## Mese^10               2.5337336  0.6676095   3.795 0.000172 ***
## Mese^11               1.1109416  0.6855964   1.620 0.105973    
## Sonno.totale          0.0662817  0.0300781   2.204 0.028146 *  
## Sonno.profondo       -0.0583933  0.0303614  -1.923 0.055191 .  
## Sonno.leggero        -0.0602852  0.0304665  -1.979 0.048565 *  
## Max.battito.cardiaco  0.1946107  0.0215055   9.049  < 2e-16 ***
## Min.battito.cardiaco  0.8198036  0.0525965  15.587  < 2e-16 ***
## Alcol1                2.3295592  1.2923412   1.803 0.072243 .  
## Serata               -0.7685680  0.7579544  -1.014 0.311225    
## Birra                -1.4738533  0.9206677  -1.601 0.110238    
## Cocktail              0.7318675  1.0195346   0.718 0.473293    
## Spesa                -0.0019779  0.0020759  -0.953 0.341301    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.626 on 381 degrees of freedom
## Multiple R-squared:  0.6928, Adjusted R-squared:  0.6694 
## F-statistic: 29.62 on 29 and 381 DF,  p-value: < 2.2e-16
fitb=stepAIC(fit,direction = "both")
## Start:  AIC=1087.61
## Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Ora.fine + 
##     Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + Max.battito.cardiaco + 
##     Min.battito.cardiaco + Alcol + Serata + Birra + Cocktail + 
##     Spesa
## 
##                        Df Sum of Sq    RSS    AIC
## - Cocktail              1       6.8 5015.1 1086.2
## - Spesa                 1      11.9 5020.3 1086.6
## - Serata                1      13.5 5021.8 1086.7
## <none>                              5008.3 1087.6
## - Birra                 1      33.7 5042.0 1088.4
## - Alcol                 1      42.7 5051.0 1089.1
## - Sonno.profondo        1      48.6 5057.0 1089.6
## - Sonno.leggero         1      51.5 5059.8 1089.8
## - Dì.settimana          6     179.4 5187.8 1090.1
## - Sonno.totale          1      63.8 5072.2 1090.8
## - Ora.fine              1      74.3 5082.6 1091.7
## - Mese                 11     390.4 5398.7 1096.5
## - Ora.inizio            1     168.3 5176.6 1099.2
## - Max.battito.cardiaco  1    1076.5 6084.8 1165.6
## - Min.battito.cardiaco  1    3193.5 8201.9 1288.3
## 
## Step:  AIC=1086.16
## Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Ora.fine + 
##     Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + Max.battito.cardiaco + 
##     Min.battito.cardiaco + Alcol + Serata + Birra + Spesa
## 
##                        Df Sum of Sq    RSS    AIC
## - Spesa                 1       8.0 5023.1 1084.8
## - Serata                1      12.6 5027.7 1085.2
## <none>                              5015.1 1086.2
## + Cocktail              1       6.8 5008.3 1087.6
## - Sonno.profondo        1      49.3 5064.4 1088.2
## - Sonno.leggero         1      52.5 5067.6 1088.5
## - Dì.settimana          6     183.8 5198.9 1089.0
## - Sonno.totale          1      65.0 5080.1 1089.5
## - Ora.fine              1      74.7 5089.8 1090.2
## - Birra                 1      89.4 5104.5 1091.4
## - Alcol                 1     117.2 5132.3 1093.7
## - Mese                 11     391.0 5406.1 1095.0
## - Ora.inizio            1     172.4 5187.5 1098.0
## - Max.battito.cardiaco  1    1079.1 6094.2 1164.3
## - Min.battito.cardiaco  1    3188.5 8203.6 1286.4
## 
## Step:  AIC=1084.82
## Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Ora.fine + 
##     Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + Max.battito.cardiaco + 
##     Min.battito.cardiaco + Alcol + Serata + Birra
## 
##                        Df Sum of Sq    RSS    AIC
## - Serata                1      11.1 5034.2 1083.7
## <none>                              5023.1 1084.8
## + Spesa                 1       8.0 5015.1 1086.2
## + Cocktail              1       2.8 5020.3 1086.6
## - Sonno.profondo        1      49.3 5072.4 1086.8
## - Sonno.leggero         1      52.8 5075.8 1087.1
## - Dì.settimana          6     182.5 5205.6 1087.5
## - Sonno.totale          1      65.2 5088.3 1088.1
## - Ora.fine              1      85.6 5108.6 1089.8
## - Birra                 1      92.6 5115.7 1090.3
## - Alcol                 1     113.0 5136.1 1092.0
## - Mese                 11     383.1 5406.2 1093.0
## - Ora.inizio            1     173.1 5196.2 1096.7
## - Max.battito.cardiaco  1    1097.0 6120.0 1164.0
## - Min.battito.cardiaco  1    3193.1 8216.2 1285.1
## 
## Step:  AIC=1083.73
## Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Ora.fine + 
##     Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + Max.battito.cardiaco + 
##     Min.battito.cardiaco + Alcol + Birra
## 
##                        Df Sum of Sq    RSS    AIC
## <none>                              5034.2 1083.7
## + Serata                1      11.1 5023.1 1084.8
## + Spesa                 1       6.5 5027.7 1085.2
## + Cocktail              1       2.5 5031.7 1085.5
## - Sonno.profondo        1      51.6 5085.8 1085.9
## - Sonno.leggero         1      55.3 5089.5 1086.2
## - Dì.settimana          6     186.3 5220.5 1086.7
## - Sonno.totale          1      67.6 5101.8 1087.2
## - Ora.fine              1      90.7 5124.9 1089.1
## - Birra                 1      91.1 5125.2 1089.1
## - Mese                 11     377.5 5411.7 1091.4
## - Alcol                 1     136.0 5170.2 1092.7
## - Ora.inizio            1     167.9 5202.0 1095.2
## - Max.battito.cardiaco  1    1097.7 6131.9 1162.8
## - Min.battito.cardiaco  1    3185.7 8219.9 1283.2
summary(fitb)
## 
## Call:
## lm(formula = Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + 
##     Ora.fine + Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + 
##     Max.battito.cardiaco + Min.battito.cardiaco + Alcol + Birra, 
##     data = datiIncrociati)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.9741 -2.0504 -0.2474  1.6455 16.3588 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -8.6873449  3.8982104  -2.229 0.026422 *  
## Dì.settimana.L        1.7566640  0.5608222   3.132 0.001867 ** 
## Dì.settimana.Q        0.1015649  0.4960322   0.205 0.837872    
## Dì.settimana.C        0.5974611  0.4853851   1.231 0.219113    
## Dì.settimana^4        0.0019867  0.4838126   0.004 0.996726    
## Dì.settimana^5       -0.2047754  0.4883238  -0.419 0.675200    
## Dì.settimana^6       -0.8938605  0.4943255  -1.808 0.071351 .  
## Ora.inizio            0.0039119  0.0010932   3.578 0.000390 ***
## Ora.fine             -0.0021035  0.0007996  -2.631 0.008865 ** 
## Mese.L                0.4399039  0.6402558   0.687 0.492450    
## Mese.Q               -0.6373078  0.7050288  -0.904 0.366591    
## Mese.C               -1.1795502  0.6699474  -1.761 0.079092 .  
## Mese^4               -0.2079369  0.6427129  -0.324 0.746470    
## Mese^5               -0.5276037  0.6516804  -0.810 0.418669    
## Mese^6               -0.7833954  0.6326030  -1.238 0.216336    
## Mese^7                0.6668355  0.6318149   1.055 0.291893    
## Mese^8               -0.7075882  0.6281150  -1.127 0.260646    
## Mese^9               -1.2850920  0.6339966  -2.027 0.043356 *  
## Mese^10               2.4340520  0.6590259   3.693 0.000253 ***
## Mese^11               0.9694291  0.6757437   1.435 0.152212    
## Sonno.totale          0.0681388  0.0300002   2.271 0.023683 *  
## Sonno.profondo       -0.0600935  0.0302834  -1.984 0.047926 *  
## Sonno.leggero        -0.0623814  0.0303773  -2.054 0.040695 *  
## Max.battito.cardiaco  0.1960377  0.0214240   9.150  < 2e-16 ***
## Min.battito.cardiaco  0.8149788  0.0522806  15.589  < 2e-16 ***
## Alcol1                2.0336699  0.6313842   3.221 0.001386 ** 
## Birra                -1.8977667  0.7200727  -2.636 0.008741 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.621 on 384 degrees of freedom
## Multiple R-squared:  0.6912, Adjusted R-squared:  0.6703 
## F-statistic: 33.06 on 26 and 384 DF,  p-value: < 2.2e-16

Interazioni

Consideriamo il modello con le interazioni più logiche a prima vista, per esempio potremmo raggruppare tutte le variabili che misurano lo stesso fenomeno: 1 Mese * Ora.fne * Dì.settimana Che vanno tutte a misurare il tempo 2 Max.battito.cardiaco * Min.battito.cardiacoChe misurano il battito cardiaco e sono molto correlate alla variabile risposta 3 Alcol * Birra Che misurano l’assunzione di alcolici, e nello specifico il tipo di alcolici

\[ Y= \beta_1 Dì.settimana * \beta_2 Mese* \beta_3Ora.fine + \beta_4Max.battito.cardiaco * \beta_5Min.battito.cardiaco + \beta_6Alcol * \beta_7Birra+errore \]

fitInterazione = lm(
  formula = Media.battito.cardiaco ~ Dì.settimana *
    Mese+ Ora.fine  + Max.battito.cardiaco * Min.battito.cardiaco + as.factor(Alcol) *
    as.factor(Birra),
  data = datiIncrociati)
summary(fitInterazione)
## 
## Call:
## lm(formula = Media.battito.cardiaco ~ Dì.settimana * Mese + Ora.fine + 
##     Max.battito.cardiaco * Min.battito.cardiaco + as.factor(Alcol) * 
##     as.factor(Birra), data = datiIncrociati)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.0708 -1.8777 -0.2089  1.6515 13.1413 
## 
## Coefficients: (1 not defined because of singularities)
##                                             Estimate Std. Error t value
## (Intercept)                               -5.260e+01  1.963e+01  -2.679
## Dì.settimana.L                             1.857e+00  5.746e-01   3.231
## Dì.settimana.Q                             2.654e-01  5.223e-01   0.508
## Dì.settimana.C                             6.548e-01  5.122e-01   1.279
## Dì.settimana^4                            -1.681e-01  5.106e-01  -0.329
## Dì.settimana^5                            -1.382e-01  5.132e-01  -0.269
## Dì.settimana^6                            -9.897e-01  5.163e-01  -1.917
## Mese.L                                     1.934e-01  6.539e-01   0.296
## Mese.Q                                    -8.126e-01  7.098e-01  -1.145
## Mese.C                                    -8.529e-01  6.864e-01  -1.243
## Mese^4                                    -6.258e-01  6.522e-01  -0.960
## Mese^5                                    -3.008e-01  6.614e-01  -0.455
## Mese^6                                    -8.602e-01  6.473e-01  -1.329
## Mese^7                                     5.964e-01  6.483e-01   0.920
## Mese^8                                    -7.588e-01  6.373e-01  -1.191
## Mese^9                                    -1.308e+00  6.406e-01  -2.042
## Mese^10                                    2.425e+00  6.645e-01   3.649
## Mese^11                                    1.342e+00  6.851e-01   1.959
## Ora.fine                                  -1.915e-03  8.887e-04  -2.155
## Max.battito.cardiaco                       7.322e-01  1.858e-01   3.941
## Min.battito.cardiaco                       1.953e+00  4.096e-01   4.767
## as.factor(Alcol)1                          1.649e+00  7.376e-01   2.236
## as.factor(Birra)1                         -1.975e+00  7.978e-01  -2.476
## Dì.settimana.L:Mese.L                     -1.194e+00  1.732e+00  -0.689
## Dì.settimana.Q:Mese.L                      1.717e+00  1.744e+00   0.985
## Dì.settimana.C:Mese.L                     -3.442e-01  1.722e+00  -0.200
## Dì.settimana^4:Mese.L                     -3.432e-01  1.716e+00  -0.200
## Dì.settimana^5:Mese.L                      1.328e+00  1.739e+00   0.764
## Dì.settimana^6:Mese.L                      1.099e+00  1.729e+00   0.636
## Dì.settimana.L:Mese.Q                      2.560e-01  1.819e+00   0.141
## Dì.settimana.Q:Mese.Q                      2.222e+00  1.812e+00   1.226
## Dì.settimana.C:Mese.Q                     -4.440e+00  1.812e+00  -2.451
## Dì.settimana^4:Mese.Q                      1.985e+00  1.816e+00   1.093
## Dì.settimana^5:Mese.Q                      1.080e+00  1.818e+00   0.594
## Dì.settimana^6:Mese.Q                     -5.518e-01  1.816e+00  -0.304
## Dì.settimana.L:Mese.C                     -1.097e+00  1.776e+00  -0.617
## Dì.settimana.Q:Mese.C                     -2.738e-01  1.753e+00  -0.156
## Dì.settimana.C:Mese.C                      7.270e-01  1.757e+00   0.414
## Dì.settimana^4:Mese.C                      3.109e+00  1.749e+00   1.778
## Dì.settimana^5:Mese.C                     -7.841e-01  1.766e+00  -0.444
## Dì.settimana^6:Mese.C                      4.035e-01  1.780e+00   0.227
## Dì.settimana.L:Mese^4                     -3.434e+00  1.715e+00  -2.002
## Dì.settimana.Q:Mese^4                      2.417e+00  1.725e+00   1.401
## Dì.settimana.C:Mese^4                     -9.145e-01  1.713e+00  -0.534
## Dì.settimana^4:Mese^4                     -3.332e+00  1.736e+00  -1.919
## Dì.settimana^5:Mese^4                      2.208e+00  1.726e+00   1.280
## Dì.settimana^6:Mese^4                      3.603e-01  1.757e+00   0.205
## Dì.settimana.L:Mese^5                     -2.794e-01  1.726e+00  -0.162
## Dì.settimana.Q:Mese^5                     -7.240e-01  1.736e+00  -0.417
## Dì.settimana.C:Mese^5                     -2.206e+00  1.703e+00  -1.295
## Dì.settimana^4:Mese^5                      7.939e-01  1.696e+00   0.468
## Dì.settimana^5:Mese^5                      9.008e-01  1.725e+00   0.522
## Dì.settimana^6:Mese^5                     -1.515e+00  1.749e+00  -0.867
## Dì.settimana.L:Mese^6                     -3.819e+00  1.675e+00  -2.280
## Dì.settimana.Q:Mese^6                     -6.793e-01  1.690e+00  -0.402
## Dì.settimana.C:Mese^6                      1.203e+00  1.692e+00   0.711
## Dì.settimana^4:Mese^6                      1.187e+00  1.707e+00   0.696
## Dì.settimana^5:Mese^6                     -1.750e-01  1.699e+00  -0.103
## Dì.settimana^6:Mese^6                      2.167e+00  1.717e+00   1.262
## Dì.settimana.L:Mese^7                     -2.291e-01  1.650e+00  -0.139
## Dì.settimana.Q:Mese^7                      2.998e-01  1.685e+00   0.178
## Dì.settimana.C:Mese^7                      1.504e+00  1.680e+00   0.895
## Dì.settimana^4:Mese^7                      2.873e-01  1.679e+00   0.171
## Dì.settimana^5:Mese^7                     -1.692e+00  1.710e+00  -0.990
## Dì.settimana^6:Mese^7                     -2.250e+00  1.731e+00  -1.300
## Dì.settimana.L:Mese^8                      1.816e+00  1.651e+00   1.099
## Dì.settimana.Q:Mese^8                      1.589e+00  1.677e+00   0.948
## Dì.settimana.C:Mese^8                      2.873e+00  1.658e+00   1.733
## Dì.settimana^4:Mese^8                      2.821e+00  1.688e+00   1.671
## Dì.settimana^5:Mese^8                     -1.656e+00  1.681e+00  -0.986
## Dì.settimana^6:Mese^8                     -6.209e-01  1.741e+00  -0.357
## Dì.settimana.L:Mese^9                      1.179e+00  1.663e+00   0.709
## Dì.settimana.Q:Mese^9                     -8.302e-01  1.692e+00  -0.491
## Dì.settimana.C:Mese^9                     -2.387e+00  1.686e+00  -1.416
## Dì.settimana^4:Mese^9                     -6.047e-01  1.721e+00  -0.351
## Dì.settimana^5:Mese^9                     -1.852e+00  1.691e+00  -1.096
## Dì.settimana^6:Mese^9                      2.516e+00  1.752e+00   1.436
## Dì.settimana.L:Mese^10                     1.736e+00  1.742e+00   0.996
## Dì.settimana.Q:Mese^10                    -1.124e+00  1.763e+00  -0.638
## Dì.settimana.C:Mese^10                     6.329e-01  1.749e+00   0.362
## Dì.settimana^4:Mese^10                    -9.974e-02  1.758e+00  -0.057
## Dì.settimana^5:Mese^10                    -1.134e+00  1.754e+00  -0.647
## Dì.settimana^6:Mese^10                     9.501e-02  1.785e+00   0.053
## Dì.settimana.L:Mese^11                    -1.240e+00  1.806e+00  -0.687
## Dì.settimana.Q:Mese^11                    -3.687e-01  1.788e+00  -0.206
## Dì.settimana.C:Mese^11                     2.833e+00  1.796e+00   1.578
## Dì.settimana^4:Mese^11                    -1.889e+00  1.862e+00  -1.015
## Dì.settimana^5:Mese^11                     2.434e+00  1.808e+00   1.347
## Dì.settimana^6:Mese^11                    -7.403e-01  1.817e+00  -0.407
## Max.battito.cardiaco:Min.battito.cardiaco -1.074e-02  3.837e-03  -2.800
## as.factor(Alcol)1:as.factor(Birra)1               NA         NA      NA
##                                           Pr(>|t|)    
## (Intercept)                               0.007760 ** 
## Dì.settimana.L                            0.001360 ** 
## Dì.settimana.Q                            0.611693    
## Dì.settimana.C                            0.201977    
## Dì.settimana^4                            0.742138    
## Dì.settimana^5                            0.787846    
## Dì.settimana^6                            0.056166 .  
## Mese.L                                    0.767647    
## Mese.Q                                    0.253097    
## Mese.C                                    0.214890    
## Mese^4                                    0.337977    
## Mese^5                                    0.649556    
## Mese^6                                    0.184872    
## Mese^7                                    0.358296    
## Mese^8                                    0.234691    
## Mese^9                                    0.041986 *  
## Mese^10                                   0.000308 ***
## Mese^11                                   0.050947 .  
## Ora.fine                                  0.031910 *  
## Max.battito.cardiaco                      9.96e-05 ***
## Min.battito.cardiaco                      2.84e-06 ***
## as.factor(Alcol)1                         0.026068 *  
## as.factor(Birra)1                         0.013809 *  
## Dì.settimana.L:Mese.L                     0.491250    
## Dì.settimana.Q:Mese.L                     0.325585    
## Dì.settimana.C:Mese.L                     0.841667    
## Dì.settimana^4:Mese.L                     0.841604    
## Dì.settimana^5:Mese.L                     0.445593    
## Dì.settimana^6:Mese.L                     0.525497    
## Dì.settimana.L:Mese.Q                     0.888174    
## Dì.settimana.Q:Mese.Q                     0.221101    
## Dì.settimana.C:Mese.Q                     0.014794 *  
## Dì.settimana^4:Mese.Q                     0.275194    
## Dì.settimana^5:Mese.Q                     0.552800    
## Dì.settimana^6:Mese.Q                     0.761393    
## Dì.settimana.L:Mese.C                     0.537379    
## Dì.settimana.Q:Mese.C                     0.875991    
## Dì.settimana.C:Mese.C                     0.679328    
## Dì.settimana^4:Mese.C                     0.076370 .  
## Dì.settimana^5:Mese.C                     0.657333    
## Dì.settimana^6:Mese.C                     0.820759    
## Dì.settimana.L:Mese^4                     0.046154 *  
## Dì.settimana.Q:Mese^4                     0.162256    
## Dì.settimana.C:Mese^4                     0.593830    
## Dì.settimana^4:Mese^4                     0.055853 .  
## Dì.settimana^5:Mese^4                     0.201586    
## Dì.settimana^6:Mese^4                     0.837702    
## Dì.settimana.L:Mese^5                     0.871477    
## Dì.settimana.Q:Mese^5                     0.676892    
## Dì.settimana.C:Mese^5                     0.196154    
## Dì.settimana^4:Mese^5                     0.640025    
## Dì.settimana^5:Mese^5                     0.601947    
## Dì.settimana^6:Mese^5                     0.386830    
## Dì.settimana.L:Mese^6                     0.023241 *  
## Dì.settimana.Q:Mese^6                     0.688016    
## Dì.settimana.C:Mese^6                     0.477612    
## Dì.settimana^4:Mese^6                     0.487043    
## Dì.settimana^5:Mese^6                     0.918053    
## Dì.settimana^6:Mese^6                     0.207820    
## Dì.settimana.L:Mese^7                     0.889690    
## Dì.settimana.Q:Mese^7                     0.858918    
## Dì.settimana.C:Mese^7                     0.371373    
## Dì.settimana^4:Mese^7                     0.864283    
## Dì.settimana^5:Mese^7                     0.323032    
## Dì.settimana^6:Mese^7                     0.194575    
## Dì.settimana.L:Mese^8                     0.272401    
## Dì.settimana.Q:Mese^8                     0.344023    
## Dì.settimana.C:Mese^8                     0.084054 .  
## Dì.settimana^4:Mese^8                     0.095645 .  
## Dì.settimana^5:Mese^8                     0.325109    
## Dì.settimana^6:Mese^8                     0.721661    
## Dì.settimana.L:Mese^9                     0.478963    
## Dì.settimana.Q:Mese^9                     0.623929    
## Dì.settimana.C:Mese^9                     0.157868    
## Dì.settimana^4:Mese^9                     0.725534    
## Dì.settimana^5:Mese^9                     0.274085    
## Dì.settimana^6:Mese^9                     0.151973    
## Dì.settimana.L:Mese^10                    0.319775    
## Dì.settimana.Q:Mese^10                    0.524198    
## Dì.settimana.C:Mese^10                    0.717737    
## Dì.settimana^4:Mese^10                    0.954786    
## Dì.settimana^5:Mese^10                    0.518402    
## Dì.settimana^6:Mese^10                    0.957581    
## Dì.settimana.L:Mese^11                    0.492748    
## Dì.settimana.Q:Mese^11                    0.836743    
## Dì.settimana.C:Mese^11                    0.115617    
## Dì.settimana^4:Mese^11                    0.310934    
## Dì.settimana^5:Mese^11                    0.179068    
## Dì.settimana^6:Mese^11                    0.684032    
## Max.battito.cardiaco:Min.battito.cardiaco 0.005426 ** 
## as.factor(Alcol)1:as.factor(Birra)1             NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.657 on 321 degrees of freedom
## Multiple R-squared:  0.7366, Adjusted R-squared:  0.6636 
## F-statistic: 10.09 on 89 and 321 DF,  p-value: < 2.2e-16

Emerge che non ha senso tenere conto dell’interazione tra Alcol e Birra e neanche dell’ Ora.fine con le altre date, invece delle interazioni tra le altre variabili sì.

fitInterazione = lm(
  formula = Media.battito.cardiaco ~ Dì.settimana *
    Mese+ Ora.fine  + Max.battito.cardiaco * Min.battito.cardiaco + as.factor(Alcol) +
    as.factor(Birra),
  data = datiIncrociati)
summary(fitInterazione)
## 
## Call:
## lm(formula = Media.battito.cardiaco ~ Dì.settimana * Mese + Ora.fine + 
##     Max.battito.cardiaco * Min.battito.cardiaco + as.factor(Alcol) + 
##     as.factor(Birra), data = datiIncrociati)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.0708 -1.8777 -0.2089  1.6515 13.1413 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                               -5.260e+01  1.963e+01  -2.679
## Dì.settimana.L                             1.857e+00  5.746e-01   3.231
## Dì.settimana.Q                             2.654e-01  5.223e-01   0.508
## Dì.settimana.C                             6.548e-01  5.122e-01   1.279
## Dì.settimana^4                            -1.681e-01  5.106e-01  -0.329
## Dì.settimana^5                            -1.382e-01  5.132e-01  -0.269
## Dì.settimana^6                            -9.897e-01  5.163e-01  -1.917
## Mese.L                                     1.934e-01  6.539e-01   0.296
## Mese.Q                                    -8.126e-01  7.098e-01  -1.145
## Mese.C                                    -8.529e-01  6.864e-01  -1.243
## Mese^4                                    -6.258e-01  6.522e-01  -0.960
## Mese^5                                    -3.008e-01  6.614e-01  -0.455
## Mese^6                                    -8.602e-01  6.473e-01  -1.329
## Mese^7                                     5.964e-01  6.483e-01   0.920
## Mese^8                                    -7.588e-01  6.373e-01  -1.191
## Mese^9                                    -1.308e+00  6.406e-01  -2.042
## Mese^10                                    2.425e+00  6.645e-01   3.649
## Mese^11                                    1.342e+00  6.851e-01   1.959
## Ora.fine                                  -1.915e-03  8.887e-04  -2.155
## Max.battito.cardiaco                       7.322e-01  1.858e-01   3.941
## Min.battito.cardiaco                       1.953e+00  4.096e-01   4.767
## as.factor(Alcol)1                          1.649e+00  7.376e-01   2.236
## as.factor(Birra)1                         -1.975e+00  7.978e-01  -2.476
## Dì.settimana.L:Mese.L                     -1.194e+00  1.732e+00  -0.689
## Dì.settimana.Q:Mese.L                      1.717e+00  1.744e+00   0.985
## Dì.settimana.C:Mese.L                     -3.442e-01  1.722e+00  -0.200
## Dì.settimana^4:Mese.L                     -3.432e-01  1.716e+00  -0.200
## Dì.settimana^5:Mese.L                      1.328e+00  1.739e+00   0.764
## Dì.settimana^6:Mese.L                      1.099e+00  1.729e+00   0.636
## Dì.settimana.L:Mese.Q                      2.560e-01  1.819e+00   0.141
## Dì.settimana.Q:Mese.Q                      2.222e+00  1.812e+00   1.226
## Dì.settimana.C:Mese.Q                     -4.440e+00  1.812e+00  -2.451
## Dì.settimana^4:Mese.Q                      1.985e+00  1.816e+00   1.093
## Dì.settimana^5:Mese.Q                      1.080e+00  1.818e+00   0.594
## Dì.settimana^6:Mese.Q                     -5.518e-01  1.816e+00  -0.304
## Dì.settimana.L:Mese.C                     -1.097e+00  1.776e+00  -0.617
## Dì.settimana.Q:Mese.C                     -2.738e-01  1.753e+00  -0.156
## Dì.settimana.C:Mese.C                      7.270e-01  1.757e+00   0.414
## Dì.settimana^4:Mese.C                      3.109e+00  1.749e+00   1.778
## Dì.settimana^5:Mese.C                     -7.841e-01  1.766e+00  -0.444
## Dì.settimana^6:Mese.C                      4.035e-01  1.780e+00   0.227
## Dì.settimana.L:Mese^4                     -3.434e+00  1.715e+00  -2.002
## Dì.settimana.Q:Mese^4                      2.417e+00  1.725e+00   1.401
## Dì.settimana.C:Mese^4                     -9.145e-01  1.713e+00  -0.534
## Dì.settimana^4:Mese^4                     -3.332e+00  1.736e+00  -1.919
## Dì.settimana^5:Mese^4                      2.208e+00  1.726e+00   1.280
## Dì.settimana^6:Mese^4                      3.603e-01  1.757e+00   0.205
## Dì.settimana.L:Mese^5                     -2.794e-01  1.726e+00  -0.162
## Dì.settimana.Q:Mese^5                     -7.240e-01  1.736e+00  -0.417
## Dì.settimana.C:Mese^5                     -2.206e+00  1.703e+00  -1.295
## Dì.settimana^4:Mese^5                      7.939e-01  1.696e+00   0.468
## Dì.settimana^5:Mese^5                      9.008e-01  1.725e+00   0.522
## Dì.settimana^6:Mese^5                     -1.515e+00  1.749e+00  -0.867
## Dì.settimana.L:Mese^6                     -3.819e+00  1.675e+00  -2.280
## Dì.settimana.Q:Mese^6                     -6.793e-01  1.690e+00  -0.402
## Dì.settimana.C:Mese^6                      1.203e+00  1.692e+00   0.711
## Dì.settimana^4:Mese^6                      1.187e+00  1.707e+00   0.696
## Dì.settimana^5:Mese^6                     -1.750e-01  1.699e+00  -0.103
## Dì.settimana^6:Mese^6                      2.167e+00  1.717e+00   1.262
## Dì.settimana.L:Mese^7                     -2.291e-01  1.650e+00  -0.139
## Dì.settimana.Q:Mese^7                      2.998e-01  1.685e+00   0.178
## Dì.settimana.C:Mese^7                      1.504e+00  1.680e+00   0.895
## Dì.settimana^4:Mese^7                      2.873e-01  1.679e+00   0.171
## Dì.settimana^5:Mese^7                     -1.692e+00  1.710e+00  -0.990
## Dì.settimana^6:Mese^7                     -2.250e+00  1.731e+00  -1.300
## Dì.settimana.L:Mese^8                      1.816e+00  1.651e+00   1.099
## Dì.settimana.Q:Mese^8                      1.589e+00  1.677e+00   0.948
## Dì.settimana.C:Mese^8                      2.873e+00  1.658e+00   1.733
## Dì.settimana^4:Mese^8                      2.821e+00  1.688e+00   1.671
## Dì.settimana^5:Mese^8                     -1.656e+00  1.681e+00  -0.986
## Dì.settimana^6:Mese^8                     -6.209e-01  1.741e+00  -0.357
## Dì.settimana.L:Mese^9                      1.179e+00  1.663e+00   0.709
## Dì.settimana.Q:Mese^9                     -8.302e-01  1.692e+00  -0.491
## Dì.settimana.C:Mese^9                     -2.387e+00  1.686e+00  -1.416
## Dì.settimana^4:Mese^9                     -6.047e-01  1.721e+00  -0.351
## Dì.settimana^5:Mese^9                     -1.852e+00  1.691e+00  -1.096
## Dì.settimana^6:Mese^9                      2.516e+00  1.752e+00   1.436
## Dì.settimana.L:Mese^10                     1.736e+00  1.742e+00   0.996
## Dì.settimana.Q:Mese^10                    -1.124e+00  1.763e+00  -0.638
## Dì.settimana.C:Mese^10                     6.329e-01  1.749e+00   0.362
## Dì.settimana^4:Mese^10                    -9.974e-02  1.758e+00  -0.057
## Dì.settimana^5:Mese^10                    -1.134e+00  1.754e+00  -0.647
## Dì.settimana^6:Mese^10                     9.501e-02  1.785e+00   0.053
## Dì.settimana.L:Mese^11                    -1.240e+00  1.806e+00  -0.687
## Dì.settimana.Q:Mese^11                    -3.687e-01  1.788e+00  -0.206
## Dì.settimana.C:Mese^11                     2.833e+00  1.796e+00   1.578
## Dì.settimana^4:Mese^11                    -1.889e+00  1.862e+00  -1.015
## Dì.settimana^5:Mese^11                     2.434e+00  1.808e+00   1.347
## Dì.settimana^6:Mese^11                    -7.403e-01  1.817e+00  -0.407
## Max.battito.cardiaco:Min.battito.cardiaco -1.074e-02  3.837e-03  -2.800
##                                           Pr(>|t|)    
## (Intercept)                               0.007760 ** 
## Dì.settimana.L                            0.001360 ** 
## Dì.settimana.Q                            0.611693    
## Dì.settimana.C                            0.201977    
## Dì.settimana^4                            0.742138    
## Dì.settimana^5                            0.787846    
## Dì.settimana^6                            0.056166 .  
## Mese.L                                    0.767647    
## Mese.Q                                    0.253097    
## Mese.C                                    0.214890    
## Mese^4                                    0.337977    
## Mese^5                                    0.649556    
## Mese^6                                    0.184872    
## Mese^7                                    0.358296    
## Mese^8                                    0.234691    
## Mese^9                                    0.041986 *  
## Mese^10                                   0.000308 ***
## Mese^11                                   0.050947 .  
## Ora.fine                                  0.031910 *  
## Max.battito.cardiaco                      9.96e-05 ***
## Min.battito.cardiaco                      2.84e-06 ***
## as.factor(Alcol)1                         0.026068 *  
## as.factor(Birra)1                         0.013809 *  
## Dì.settimana.L:Mese.L                     0.491250    
## Dì.settimana.Q:Mese.L                     0.325585    
## Dì.settimana.C:Mese.L                     0.841667    
## Dì.settimana^4:Mese.L                     0.841604    
## Dì.settimana^5:Mese.L                     0.445593    
## Dì.settimana^6:Mese.L                     0.525497    
## Dì.settimana.L:Mese.Q                     0.888174    
## Dì.settimana.Q:Mese.Q                     0.221101    
## Dì.settimana.C:Mese.Q                     0.014794 *  
## Dì.settimana^4:Mese.Q                     0.275194    
## Dì.settimana^5:Mese.Q                     0.552800    
## Dì.settimana^6:Mese.Q                     0.761393    
## Dì.settimana.L:Mese.C                     0.537379    
## Dì.settimana.Q:Mese.C                     0.875991    
## Dì.settimana.C:Mese.C                     0.679328    
## Dì.settimana^4:Mese.C                     0.076370 .  
## Dì.settimana^5:Mese.C                     0.657333    
## Dì.settimana^6:Mese.C                     0.820759    
## Dì.settimana.L:Mese^4                     0.046154 *  
## Dì.settimana.Q:Mese^4                     0.162256    
## Dì.settimana.C:Mese^4                     0.593830    
## Dì.settimana^4:Mese^4                     0.055853 .  
## Dì.settimana^5:Mese^4                     0.201586    
## Dì.settimana^6:Mese^4                     0.837702    
## Dì.settimana.L:Mese^5                     0.871477    
## Dì.settimana.Q:Mese^5                     0.676892    
## Dì.settimana.C:Mese^5                     0.196154    
## Dì.settimana^4:Mese^5                     0.640025    
## Dì.settimana^5:Mese^5                     0.601947    
## Dì.settimana^6:Mese^5                     0.386830    
## Dì.settimana.L:Mese^6                     0.023241 *  
## Dì.settimana.Q:Mese^6                     0.688016    
## Dì.settimana.C:Mese^6                     0.477612    
## Dì.settimana^4:Mese^6                     0.487043    
## Dì.settimana^5:Mese^6                     0.918053    
## Dì.settimana^6:Mese^6                     0.207820    
## Dì.settimana.L:Mese^7                     0.889690    
## Dì.settimana.Q:Mese^7                     0.858918    
## Dì.settimana.C:Mese^7                     0.371373    
## Dì.settimana^4:Mese^7                     0.864283    
## Dì.settimana^5:Mese^7                     0.323032    
## Dì.settimana^6:Mese^7                     0.194575    
## Dì.settimana.L:Mese^8                     0.272401    
## Dì.settimana.Q:Mese^8                     0.344023    
## Dì.settimana.C:Mese^8                     0.084054 .  
## Dì.settimana^4:Mese^8                     0.095645 .  
## Dì.settimana^5:Mese^8                     0.325109    
## Dì.settimana^6:Mese^8                     0.721661    
## Dì.settimana.L:Mese^9                     0.478963    
## Dì.settimana.Q:Mese^9                     0.623929    
## Dì.settimana.C:Mese^9                     0.157868    
## Dì.settimana^4:Mese^9                     0.725534    
## Dì.settimana^5:Mese^9                     0.274085    
## Dì.settimana^6:Mese^9                     0.151973    
## Dì.settimana.L:Mese^10                    0.319775    
## Dì.settimana.Q:Mese^10                    0.524198    
## Dì.settimana.C:Mese^10                    0.717737    
## Dì.settimana^4:Mese^10                    0.954786    
## Dì.settimana^5:Mese^10                    0.518402    
## Dì.settimana^6:Mese^10                    0.957581    
## Dì.settimana.L:Mese^11                    0.492748    
## Dì.settimana.Q:Mese^11                    0.836743    
## Dì.settimana.C:Mese^11                    0.115617    
## Dì.settimana^4:Mese^11                    0.310934    
## Dì.settimana^5:Mese^11                    0.179068    
## Dì.settimana^6:Mese^11                    0.684032    
## Max.battito.cardiaco:Min.battito.cardiaco 0.005426 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.657 on 321 degrees of freedom
## Multiple R-squared:  0.7366, Adjusted R-squared:  0.6636 
## F-statistic: 10.09 on 89 and 321 DF,  p-value: < 2.2e-16

Utilizzo di indici analitici

Si nota che $ R^2 adjusted$ è minore del modello senza interazione. Nella costruzione di un modello bisogna stare attenti all’errore di adattamento che decresce all’aumentare della complessità del modello e all’errore di generalizzazione che con l’aumentare della complessità del modello decresce per poi ad un certo crescere.

Una valutazione analitica per l’errore di generalizzazione ha la forma \(errore\space di\space adattamento + penalizzazione \space complessità\). In questo caso (e anche prima) verrà usato il criterio di informazioni di Akaike \[AIC=n* log(\hat\sigma^2)+2(p+1)\]

fitAIC=stepAIC(fitInterazione,direction = "both")
## Start:  AIC=1144.36
## Media.battito.cardiaco ~ Dì.settimana * Mese + Ora.fine + Max.battito.cardiaco * 
##     Min.battito.cardiaco + as.factor(Alcol) + as.factor(Birra)
## 
##                                             Df Sum of Sq    RSS    AIC
## - Dì.settimana:Mese                         66    902.63 5196.6 1090.8
## <none>                                                   4294.0 1144.4
## - Ora.fine                                   1     62.12 4356.1 1148.3
## - as.factor(Alcol)                           1     66.85 4360.8 1148.7
## - as.factor(Birra)                           1     81.99 4376.0 1150.1
## - Max.battito.cardiaco:Min.battito.cardiaco  1    104.85 4398.8 1152.3
## 
## Step:  AIC=1090.77
## Media.battito.cardiaco ~ Dì.settimana + Mese + Ora.fine + Max.battito.cardiaco + 
##     Min.battito.cardiaco + as.factor(Alcol) + as.factor(Birra) + 
##     Max.battito.cardiaco:Min.battito.cardiaco
## 
##                                             Df Sum of Sq    RSS    AIC
## <none>                                                   5196.6 1090.8
## - Ora.fine                                   1     69.10 5265.7 1094.2
## - as.factor(Birra)                           1     82.93 5279.5 1095.3
## - Max.battito.cardiaco:Min.battito.cardiaco  1     94.87 5291.5 1096.2
## - Mese                                      11    369.76 5566.3 1097.0
## - Dì.settimana                               6    260.64 5457.2 1098.9
## - as.factor(Alcol)                           1    137.57 5334.2 1099.5
## + Dì.settimana:Mese                         66    902.63 4294.0 1144.4
summary(fitAIC)
## 
## Call:
## lm(formula = Media.battito.cardiaco ~ Dì.settimana + Mese + Ora.fine + 
##     Max.battito.cardiaco + Min.battito.cardiaco + as.factor(Alcol) + 
##     as.factor(Birra) + Max.battito.cardiaco:Min.battito.cardiaco, 
##     data = datiIncrociati)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.9338 -2.2283 -0.3432  1.8967 16.1093 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                               -4.604e+01  1.808e+01  -2.547
## Dì.settimana.L                             1.934e+00  5.419e-01   3.569
## Dì.settimana.Q                             4.119e-01  4.986e-01   0.826
## Dì.settimana.C                             7.562e-01  4.898e-01   1.544
## Dì.settimana^4                            -1.177e-01  4.888e-01  -0.241
## Dì.settimana^5                            -2.532e-01  4.935e-01  -0.513
## Dì.settimana^6                            -9.154e-01  4.971e-01  -1.841
## Mese.L                                     2.587e-01  6.455e-01   0.401
## Mese.Q                                    -5.837e-01  6.964e-01  -0.838
## Mese.C                                    -7.311e-01  6.681e-01  -1.094
## Mese^4                                    -5.862e-01  6.457e-01  -0.908
## Mese^5                                    -3.353e-01  6.550e-01  -0.512
## Mese^6                                    -7.953e-01  6.396e-01  -1.243
## Mese^7                                     5.785e-01  6.404e-01   0.903
## Mese^8                                    -9.236e-01  6.314e-01  -1.463
## Mese^9                                    -1.290e+00  6.350e-01  -2.031
## Mese^10                                    2.285e+00  6.601e-01   3.462
## Mese^11                                    1.394e+00  6.799e-01   2.050
## Ora.fine                                  -1.807e-03  7.964e-04  -2.268
## Max.battito.cardiaco                       6.676e-01  1.717e-01   3.889
## Min.battito.cardiaco                       1.812e+00  3.762e-01   4.815
## as.factor(Alcol)1                          2.042e+00  6.381e-01   3.201
## as.factor(Birra)1                         -1.811e+00  7.287e-01  -2.485
## Max.battito.cardiaco:Min.battito.cardiaco -9.401e-03  3.537e-03  -2.658
##                                           Pr(>|t|)    
## (Intercept)                               0.011253 *  
## Dì.settimana.L                            0.000403 ***
## Dì.settimana.Q                            0.409202    
## Dì.settimana.C                            0.123386    
## Dì.settimana^4                            0.809842    
## Dì.settimana^5                            0.608238    
## Dì.settimana^6                            0.066324 .  
## Mese.L                                    0.688863    
## Mese.Q                                    0.402459    
## Mese.C                                    0.274515    
## Mese^4                                    0.364486    
## Mese^5                                    0.609054    
## Mese^6                                    0.214496    
## Mese^7                                    0.366952    
## Mese^8                                    0.144363    
## Mese^9                                    0.042928 *  
## Mese^10                                   0.000596 ***
## Mese^11                                   0.041018 *  
## Ora.fine                                  0.023850 *  
## Max.battito.cardiaco                      0.000119 ***
## Min.battito.cardiaco                      2.11e-06 ***
## as.factor(Alcol)1                         0.001484 ** 
## as.factor(Birra)1                         0.013369 *  
## Max.battito.cardiaco:Min.battito.cardiaco 0.008185 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.664 on 387 degrees of freedom
## Multiple R-squared:  0.6812, Adjusted R-squared:  0.6623 
## F-statistic: 35.96 on 23 and 387 DF,  p-value: < 2.2e-16

Sotto viene riportato l’ANOVA ovvero l’analisi delle varianze

anova(fit,fitb)
## Analysis of Variance Table
## 
## Model 1: Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Ora.fine + 
##     Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + Max.battito.cardiaco + 
##     Min.battito.cardiaco + Alcol + Serata + Birra + Cocktail + 
##     Spesa
## Model 2: Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Ora.fine + 
##     Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + Max.battito.cardiaco + 
##     Min.battito.cardiaco + Alcol + Birra
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1    381 5008.3                           
## 2    384 5034.2 -3   -25.859 0.6557 0.5798
anova(fitAIC,fitInterazione)
## Analysis of Variance Table
## 
## Model 1: Media.battito.cardiaco ~ Dì.settimana + Mese + Ora.fine + Max.battito.cardiaco + 
##     Min.battito.cardiaco + as.factor(Alcol) + as.factor(Birra) + 
##     Max.battito.cardiaco:Min.battito.cardiaco
## Model 2: Media.battito.cardiaco ~ Dì.settimana * Mese + Ora.fine + Max.battito.cardiaco * 
##     Min.battito.cardiaco + as.factor(Alcol) + as.factor(Birra)
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1    387 5196.6                           
## 2    321 4294.0 66    902.63 1.0224 0.4373
anova(fitInterazione,fitb)
## Analysis of Variance Table
## 
## Model 1: Media.battito.cardiaco ~ Dì.settimana * Mese + Ora.fine + Max.battito.cardiaco * 
##     Min.battito.cardiaco + as.factor(Alcol) + as.factor(Birra)
## Model 2: Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Ora.fine + 
##     Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + Max.battito.cardiaco + 
##     Min.battito.cardiaco + Alcol + Birra
##   Res.Df    RSS  Df Sum of Sq      F Pr(>F)
## 1    321 4294.0                            
## 2    384 5034.2 -63   -740.23 0.8784 0.7294
summary(fitb)
## 
## Call:
## lm(formula = Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + 
##     Ora.fine + Mese + Sonno.totale + Sonno.profondo + Sonno.leggero + 
##     Max.battito.cardiaco + Min.battito.cardiaco + Alcol + Birra, 
##     data = datiIncrociati)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.9741 -2.0504 -0.2474  1.6455 16.3588 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -8.6873449  3.8982104  -2.229 0.026422 *  
## Dì.settimana.L        1.7566640  0.5608222   3.132 0.001867 ** 
## Dì.settimana.Q        0.1015649  0.4960322   0.205 0.837872    
## Dì.settimana.C        0.5974611  0.4853851   1.231 0.219113    
## Dì.settimana^4        0.0019867  0.4838126   0.004 0.996726    
## Dì.settimana^5       -0.2047754  0.4883238  -0.419 0.675200    
## Dì.settimana^6       -0.8938605  0.4943255  -1.808 0.071351 .  
## Ora.inizio            0.0039119  0.0010932   3.578 0.000390 ***
## Ora.fine             -0.0021035  0.0007996  -2.631 0.008865 ** 
## Mese.L                0.4399039  0.6402558   0.687 0.492450    
## Mese.Q               -0.6373078  0.7050288  -0.904 0.366591    
## Mese.C               -1.1795502  0.6699474  -1.761 0.079092 .  
## Mese^4               -0.2079369  0.6427129  -0.324 0.746470    
## Mese^5               -0.5276037  0.6516804  -0.810 0.418669    
## Mese^6               -0.7833954  0.6326030  -1.238 0.216336    
## Mese^7                0.6668355  0.6318149   1.055 0.291893    
## Mese^8               -0.7075882  0.6281150  -1.127 0.260646    
## Mese^9               -1.2850920  0.6339966  -2.027 0.043356 *  
## Mese^10               2.4340520  0.6590259   3.693 0.000253 ***
## Mese^11               0.9694291  0.6757437   1.435 0.152212    
## Sonno.totale          0.0681388  0.0300002   2.271 0.023683 *  
## Sonno.profondo       -0.0600935  0.0302834  -1.984 0.047926 *  
## Sonno.leggero        -0.0623814  0.0303773  -2.054 0.040695 *  
## Max.battito.cardiaco  0.1960377  0.0214240   9.150  < 2e-16 ***
## Min.battito.cardiaco  0.8149788  0.0522806  15.589  < 2e-16 ***
## Alcol1                2.0336699  0.6313842   3.221 0.001386 ** 
## Birra                -1.8977667  0.7200727  -2.636 0.008741 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.621 on 384 degrees of freedom
## Multiple R-squared:  0.6912, Adjusted R-squared:  0.6703 
## F-statistic: 33.06 on 26 and 384 DF,  p-value: < 2.2e-16

Quindi il modello finale che useremo sarà \[Y=\beta_1 Dì.settimana + \beta_2Mese + \beta_3Ora.inizio + \beta_4 Max.battito.cardiaco +... +\beta_jBirra+errore \] che risulta essere il modello con la statistica \(F\) maggiore (\(35.74\))

ggplotRegression <- function (fit) {
  ggplot(fit$model, aes_string(x = names(fit$model)[7], y = names(fit$model)[1])) +
    geom_point() +
    stat_smooth(method = "lm", col = "red") +
    labs(title = paste(
      "Adj R2 = ",
      signif(summary(fit)$adj.r.squared, 5),
      " Max.battito.cardaco =",
      signif(fitb$coefficients["Max.battito.cardiaco"], 5),
      " P =",
      signif(summary(fit)$coef["Max.battito.cardiaco",4], 5)
    ))
}
ggplotRegression(fitb) +
  xlab(LabMaxBpm) +
  ylab(LabMedBpm)
## `geom_smooth()` using formula 'y ~ x'

Qualità del modello

L’\(R^2\) è relativamente basso ma questo è ragionevole in questo contesto dove ci aspettiamo che la variabilità del fenomeno intorno al modello di regressione sia grande. Sulla base della statistica \(F\) il modello IID è preferibile rispetto a quello con interazioni.

La variabile risposta Media.battito.caridiaco è una variabile quantitativa discreta, poiché i dati rilevati dal sensore sono tutti numeri naturali.

Multicollinearità

Il Sonno.totale è dato dalla somma di Sonno.profondo + Sonno.leggero e se fossero state incluse tutte e 3 le variabili nel modello ciò avrebbe potuto portare a non identificabilità del modello (multicollinearità) che avrebbe causato elevate varianze dei coefficienti. Stesso discorso vale per le etichette riguardanti l’assunzione delle diverse tipologie di alcolici con Alcol che contiene tutte.

summary(lm(datiIncrociati$Media.battito.cardiaco~datiIncrociati$Sonno.totale+datiIncrociati$Sonno.profondo+datiIncrociati$Sonno.leggero))
## 
## Call:
## lm(formula = datiIncrociati$Media.battito.cardiaco ~ datiIncrociati$Sonno.totale + 
##     datiIncrociati$Sonno.profondo + datiIncrociati$Sonno.leggero)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -16.779  -4.177  -1.102   2.974  29.130 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   67.87966    1.57791  43.019   <2e-16 ***
## datiIncrociati$Sonno.totale    0.05901    0.04876   1.210   0.2269    
## datiIncrociati$Sonno.profondo -0.08375    0.04939  -1.696   0.0907 .  
## datiIncrociati$Sonno.leggero  -0.07086    0.04969  -1.426   0.1547    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.139 on 407 degrees of freedom
## Multiple R-squared:  0.05905,    Adjusted R-squared:  0.05211 
## F-statistic: 8.513 on 3 and 407 DF,  p-value: 1.7e-05
summary(lm(datiIncrociati$Media.battito.cardiaco~datiIncrociati$Sonno.profondo+datiIncrociati$Sonno.leggero))
## 
## Call:
## lm(formula = datiIncrociati$Media.battito.cardiaco ~ datiIncrociati$Sonno.profondo + 
##     datiIncrociati$Sonno.leggero)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -16.701  -4.165  -1.085   3.144  28.730 
## 
## Coefficients:
##                                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   67.637607   1.566074  43.189  < 2e-16 ***
## datiIncrociati$Sonno.profondo -0.024392   0.005762  -4.233 2.85e-05 ***
## datiIncrociati$Sonno.leggero  -0.010899   0.003848  -2.832  0.00485 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.143 on 408 degrees of freedom
## Multiple R-squared:  0.05566,    Adjusted R-squared:  0.05103 
## F-statistic: 12.02 on 2 and 408 DF,  p-value: 8.437e-06

Ipotesi e strumenti di verifica sui residui

Per verificare quanto il modello si adatti al fenomeno si useranno alcuni strumenti grafici e inferenziali sui residui. Non necessariamente un comportamento diverso da quello ideale dei residui porta a negare il modello.

Omoschedasticità e linearità

Come strumento grafico si può usare il diagramma di dispersione dei residui (std) rispetto a \(x\) o $y $. Se la relazione è lineare il grafico non mostra regolarità (andamenti) ovvero positivi e negativi si alternano oppure simmetrie rispetto l’asse delle ascisse. Se i residui rispettano l’ipotesi di omoschedasticità allora la variabilità dei residui deve rimanere costante.

Mentre come test inferenziale, per l’omoschedasticità, si può usare il test di Bartlett.

{r warning=FALSE

Normalità

Per la verifica della normalità si è utilizzato il diagramma quantile - quantile che risulta il miglior strumento in quanto molto preciso.

autoplot(
    fitb,
    which = 2,
    colour = 'black',
    smooth.colour = 'black',
    smooth.linetype = 'dashed',
    ad.colour = 'blue',
    label.size = 3,
    label.n = 5,
    label.colour = 'blue',
    ncol = 1
  )

Il problema potrebbe essere dato dall’asimmetria della variabile risposta.

variabile=datiIncrociati$Media.battito.cardiaco
ggplot(datiIncrociati, aes(x = variabile)) +
  geom_histogram(aes(y = ..density..),
                 fill = 'red',
                 alpha = 0.6,
                 bins = 30) +
  geom_density(colour = 'blue',fill='blue',alpha=0.1,kernel="gaussian",adjust=0.9) + 
  geom_density(colour = 'green',fill='green',alpha=0.1,kernel="gaussian") + 
  xlab(LabMedBpm) +
  ylab(LabDensita)

Analisi di alcuni valori anomali

Come si può vedere dal grafico dei residui, merita analizzare alcune date e osservare il motivo del loro scostamento dal modello:

date=c("08/02/2020","28/11/2020","07/12/2020","18/08/2020")
dati[dati$Data=="26/03/2020",]
##           Data Giorno Giorno.lettere  Mese Ora.inizio Ora.fine      inizioT
## 278 26/03/2020      4        Giovedì Marzo       2436      796 26/3/20 6.22
##     Inizio.sonno  Fine.sonno Sonno.totale Sonno.profondo Sonno.leggero
## 278  43916,01528 43916,33194          456            224           232
##     Battito.medio Battito.Max Battito.Min
## 278            54         141          45
datiIncrociati[date,]
##            Dì.settimana Ora.inizio Ora.fine     Mese Sonno.totale
## 08/02/2020       Sabato       2028     -295 Febbraio          439
## 28/11/2020       Sabato       2266      778 Novembre          547
## 07/12/2020       Lunedì       1988     -302 Dicembre          708
## 18/08/2020      Martedì       3088      858   Agosto          372
##            Sonno.profondo Sonno.leggero Media.battito.cardiaco
## 08/02/2020            200           235                     78
## 28/11/2020            260           287                     76
## 07/12/2020            212           496                     68
## 18/08/2020            216           156                     81
##            Max.battito.cardiaco Min.battito.cardiaco Alcol Serata Birra
## 08/02/2020                   95                   48     1      1     1
## 28/11/2020                  109                   47     0      0     0
## 07/12/2020                   95                   46     0      0     0
## 18/08/2020                  118                   46     0      0     0
##            Cocktail Spesa
## 08/02/2020        0   130
## 28/11/2020        0     0
## 07/12/2020        0     0
## 18/08/2020        0     0

Nel primo caso il Max.battito.cardiaco dovuto molto probabilmente a una errata rilevazione, il dato infatti poi è stato tolto mediante il controllo iniziale di dati rilevati male.

Nel secondo caso, invece, è l’Ora.fine che è anomala al modello. Probabilmente l’errore si è creato nell’unione dei dati alla stessa giornata.

Il 18/08/2020 il motivo dell’anomalia è che la variabile Alcol non è stata registrata come True perché non c’è stata nessuna spesa nella omonima categoria ma l’assunzione c’è stata in quanto era una festa di compleanno. Questo è il dato che di più si discosta dal modello ed è ragionevole fare fare una correzione dei dati.

datiSistemati=datiIncrociati
datiSistemati["18/08/2020","Alcol"]=1
datiSistemati["18/08/2020","Birra"]=1
datiSistemati["18/08/2020","Serata"]=1
datiSistemati["08/02/2020","Ora.fine"]=mean(datiIncrociati$Ora.fine)
datiSistemati["07/12/2020","Ora.fine"]=mean(datiIncrociati$Ora.fine)
datiSistemati["28/11/20200","Max.battito.cardiaco"]=mean(datiIncrociati$Max.battito.cardiaco[datiIncrociati$Alcol==0])
fitPulito = lm(
  Media.battito.cardiaco ~ Dì.settimana + Ora.inizio + Mese  + Sonno.leggero + Max.battito.cardiaco + Min.battito.cardiaco +
    Alcol + Birra ,
  data = datiSistemati
)
summary(fitb)[9]
## $adj.r.squared
## [1] 0.6702768
summary(fitPulito)[9]
## $adj.r.squared
## [1] 0.6614175

Da notare come la stima del coefficiente per la variabile Birra sia negativo, questo non significa che l’assunzione di birra diminuisca il battito cardiaco nel sonno. Infatti bisogna osservare anche la stima del coefficiente Alcol poiché quando Birra è verificata allora è verificata anche Alcol però nel caso in cui sia presente solo Alcol vorrà dire che c’è stata solo assunzione di Cocktail mentre se è verificata anche Birra allora la Media.battito.cardiaco sarà più bassa che del primo caso.

Conclusioni

In questo modello la variabilità è elevata a causa della complessità del fenomeno, è naturale pensare che il battito cardiaco sia influenzato da moltissimi fattori, molti dei quali non misurabili. Però emergono alcune relazioni tra il cuore e lo stile di vita analizzato, mentre altre variabili come il sonno non risultano essere correlate significativamente con la variabile risposta.

Emerge che l’assunzione di alcolici ha un effetto nel senso che nelle giornate in cui vengono assunti alcolici la media del battito cardiaco nel sonno (in media) sarà maggiore, e questo in misura maggiore il mercoledì e il sabato e in alcuni mesi dell’anno. Nel valutare questo si è tenuto conto dell’impatto di altre caratteristiche potenzialmente correlate (ad esempio la spesa nella categoria alcolici oppure le differenze tra birra e cocktail che hanno una gradazione maggiore della birra).

Vanno evidenziati i limiti dell’interpretazione che possiamo dare a questi risultati, in particolare è possibile ipotizzare che la causa dietro a questi effetti sia che per il metabolismo dell’alcol è richiesta molta acqua, ciò porta a disidratazione e il sangue a sua volta diventa più concentrato circolando con più difficoltà nei vasi sanguigni, di conseguenza il cuore che funge da pompa per il sangue dovrà battere più velocemente.