1 Introduzione ad alcuni argomenti del corso

Gli esempi sono tratti dai seguenti dataset del mio package MLANP:

*antropometric

*children.rid

*fraud1

*buildings1

Le versioni dei data set e del package della versione più recente potrebbero differire leggermente da quelli utilizzati nel materiale didattico che state leggendo

2 Primo data set

Vengono caricati i packages necessari per realizzare questo documento

2.1 Esempio con 7 variabili

Utilizziamo il data frame antropometric e prendiamo 7 variabili, di cui riportiamo ancora delle statistiche e grafici descrittivi, insieme con la matrice dei grafici a coppia.

2.1.1 Summary dei dati

Data Frame Summary

dati

Dimensions: 1427 x 7
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 Altezza [numeric] Mean (sd) : 151.9 (10.1) min < med < max: 127 < 151 < 183 IQR (CV) : 15 (0.1) 54 distinct values 1427 (100%) 0 (0%)
2 Peso [numeric] Mean (sd) : 45 (10.7) min < med < max: 21 < 43 < 100 IQR (CV) : 14 (0.2) 65 distinct values 1427 (100%) 0 (0%)
3 Torace [numeric] Mean (sd) : 75.6 (7.8) min < med < max: 57 < 74 < 104 IQR (CV) : 10 (0.1) 44 distinct values 1427 (100%) 0 (0%)
4 Cranio [numeric] Mean (sd) : 54.8 (1.6) min < med < max: 50 < 55 < 60 IQR (CV) : 2 (0) 11 distinct values 1427 (100%) 0 (0%)
5 Bisacrom [numeric] Mean (sd) : 34.5 (3) min < med < max: 23 < 34 < 46 IQR (CV) : 4 (0.1) 21 distinct values 1427 (100%) 0 (0%)
6 Bitrocan [numeric] Mean (sd) : 26.3 (2.8) min < med < max: 20 < 26 < 38 IQR (CV) : 4 (0.1) 18 distinct values 1427 (100%) 0 (0%)
7 Span [numeric] Mean (sd) : 153.6 (11.2) min < med < max: 123 < 153 < 184 IQR (CV) : 16 (0.1) 60 distinct values 1427 (100%) 0 (0%)

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

2.1.2 Alcune righe del data frame

Altezza Peso Torace Cranio Bisacrom Bitrocan Span
1 143 36 67 53 30 23 138
2 144 34 66 54 33 23 149
3 142 35 69 54 30 24 139
712 158 62 86 58 37 29 161
713 154 36 65 54 33 24 148
714 153 41 71 55 31 26 148
1425 142 35 63 54 32 22 144
1426 164 49 82 55 39 29 163
1427 152 40 67 54 32 25 150

2.1.3 Matrice dei grafici a due a due

2.1.4 Matrice di correlazione

Altezza Peso Torace Cranio Bisacrom Bitrocan Span
Altezza 1.00 0.72 0.59 0.48 0.75 0.74 0.89
Peso 0.72 1.00 0.91 0.54 0.75 0.84 0.69
Torace 0.59 0.91 1.00 0.48 0.69 0.77 0.58
Cranio 0.48 0.54 0.48 1.00 0.50 0.49 0.47
Bisacrom 0.75 0.75 0.69 0.50 1.00 0.76 0.78
Bitrocan 0.74 0.84 0.77 0.49 0.76 1.00 0.71
Span 0.89 0.69 0.58 0.47 0.78 0.71 1.00

Ovviamente con più di tre variabili non possiamo rappresentarle graficamente simultaneamente.

Inoltre le variabili sono a due a due correlate, alcune anche molto correlate: ci chiediamo se è possibile trovare un modo di riassumere queste informazioni e se è possibile misurare questa forma di correlazione complessiva che sembra esserci fra tutte le variabili

L’argomento è affrontato nell’analisi delle componenti principali

3 Secondo data set di esempio

3.1 Statistiche descrittive e grafici del data set children.rid

Data Frame Summary

children.rid

Dimensions: 24553 x 6
Duplicates: 2352
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 gestazione [integer] Mean (sd) : 38.7 (2.1) min < med < max: 25 < 39 < 43 IQR (CV) : 2 (0.1) 19 distinct values 24553 (100%) 0 (0%)
2 lunghezza [integer] Mean (sd) : 491.8 (30) min < med < max: 255 < 500 < 580 IQR (CV) : 30 (0.1) 123 distinct values 24553 (100%) 0 (0%)
3 peso [integer] Mean (sd) : 3207.6 (580.9) min < med < max: 300 < 3250 < 5600 IQR (CV) : 640 (0.2) 472 distinct values 24553 (100%) 0 (0%)
4 Fumatrici [integer] Mean (sd) : 0.1 (0.3) min < med < max: 0 < 0 < 3 IQR (CV) : 0 (5.3)
0:23596(96.1%)
1:608(2.5%)
2:338(1.4%)
3:11(0.0%)
24553 (100%) 0 (0%)
5 parti.pretermine [integer] Mean (sd) : 0 (0.1) min < med < max: 0 < 0 < 5 IQR (CV) : 0 (13)
0:24371(99.3%)
1:147(0.6%)
2:27(0.1%)
3:4(0.0%)
4:3(0.0%)
5:1(0.0%)
24553 (100%) 0 (0%)
6 cranio [integer] Mean (sd) : 338.1 (18.1) min < med < max: 165 < 340 < 400 IQR (CV) : 20 (0.1) 170 distinct values 24553 (100%) 0 (0%)

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

3.1.1 Alcune righe del data frame

kable(headtail(children.rid))
gestazione lunghezza peso Fumatrici parti.pretermine cranio
1 41 495 3360 0 0 335
2 36 430 1900 1 0 305
3 32 430 1750 2 0 300
12275 39 510 3650 0 0 340
12276 38 490 3280 0 0 337
12277 37 515 3890 0 0 350
24551 38 505 3220 0 0 355
24552 38 515 3440 0 0 330
24553 41 500 2920 0 0 360

3.1.2 Matrice dei grafici a due a due

MLA.explor.pairs(children.rid[,ind])

Matrice di grafici per le sole variabili gestazione, lunghezza, peso, cranio e su un campione di 24553 righe del data.frame, che ha un totale di 24553 righe.

3.2 retta di regressione e curve di regressione

Warning in smooth.spline(y ~ x, cv = TRUE): cross-validation with non-unique 'x' values seems doubtful

Warning in smooth.spline(y ~ x, cv = TRUE): cross-validation with non-unique 'x' values seems doubtful

3.3 Data set ridotto eliminando le osservazioni con valori non plausibili

sel=gestazione>24&gestazione<45&lunghezza<650&lunghezza>250

3.4 Rappresentazione interattiva in 3d

You must enable Javascript to view this page properly.

3.5 Esempi di modelli lineari

Da riprendere al momento della lezione sui modelli lineari

Un applicazione ai dati precedenti per le variabili gestazione, lunghezza, peso

Proviamo ad estendere il concetto di regressione semplice alla regressione multipla, intanto con due sole variabili esplicative, in modo che sia visalizzabile.

Più avanti ovviamente generalizzeremo a più variabili.

più avanti ancora, in altri moduli, affronterete casi in cui addirittura le variabili sono più delle unità, caso frequente ad esempio nell’analisi di dati genetici

MLA.regression3d(graf1[,1:3], conf.exp=FALSE)

You must enable Javascript to view this page properly.

3.6 Primissime annotazioni sulla regressione a due variabili

I dettagli teorici a dopo…

l12=lm(peso~gestazione+lunghezza,data=children.rid)
summary(l12)

Call:
lm(formula = peso ~ gestazione + lunghezza, data = children.rid)

Residuals:
    Min      1Q  Median      3Q     Max 
-2950.2  -205.6   -20.2   183.5  3712.1 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -5.448e+03  3.726e+01 -146.22   <2e-16 ***
gestazione   4.261e+01  1.282e+00   33.22   <2e-16 ***
lunghezza    1.424e+01  9.033e-02  157.67   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 306.1 on 24550 degrees of freedom
Multiple R-squared:  0.7224,    Adjusted R-squared:  0.7224 
F-statistic: 3.194e+04 on 2 and 24550 DF,  p-value: < 2.2e-16

Con l’istruzione lm() ottengo le stime dei parametri in modo del tutto simile alla regressione lineare semplice (e dal punto di vista delle istruzioni R sarà quasi sempre lo stesso nei modelli lineari, il metodo è ancora quello dei minimi quadrati)

Il significato dei parametri è analogo: sono delle pendenze, ma indicano una dipendenza parziale, ossia a parità di altre condizioni, oppure tenute costanti le altre variabili (vedere spiegazione geometrica nel grafico 3d)

Abbiamo le tre stime dei coefficienti: -5447.807, 42.609, 14.243, quindi la variabile di risposta varia mediamente di 42.609, al variare unitario di x1, per valori costanti di x2.

3.6.1 Confronto con le regressioni lineari semplici

l1=lm(peso~gestazione,data=children.rid)
l2=lm(peso~lunghezza,data=children.rid)
summary(l1)

Call:
lm(formula = peso ~ gestazione, data = children.rid)

Residuals:
     Min       1Q   Median       3Q      Max 
-2587.94  -279.86    -8.72   273.98  2240.91 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -3871.709     50.918  -76.04   <2e-16 ***
gestazione    182.693      1.312  139.24   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 434.2 on 24551 degrees of freedom
Multiple R-squared:  0.4412,    Adjusted R-squared:  0.4412 
F-statistic: 1.939e+04 on 1 and 24551 DF,  p-value: < 2.2e-16
summary(l2)

Call:
lm(formula = peso ~ lunghezza, data = children.rid)

Residuals:
    Min      1Q  Median      3Q     Max 
-3041.9  -208.6   -18.3   186.9  4047.7 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -4.819e+03  3.281e+01  -146.9   <2e-16 ***
lunghezza    1.632e+01  6.659e-02   245.1   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 312.9 on 24551 degrees of freedom
Multiple R-squared:  0.7099,    Adjusted R-squared:  0.7099 
F-statistic: 6.008e+04 on 1 and 24551 DF,  p-value: < 2.2e-16

3.7 Alcune considerazioni e commenti

  • Le stime dei coefficienti di regressione sono sempre delle pendenze

  • In generale queste pendenze sono diverse da quelle delle rette di regressione semplice fatte su x1 e x2

    Nella regressione multipla abbiamo ottenuto due stime:

    42.609, 14.243

    diverse dalle due stime delle due regressioni semplici

    182.693 e 16.322

  • La devianza spiegata dalla regressione multipla è maggiore di quella spiegata da ciascuna delle singole rette ma non può essere superiore alla somma delle spiegazioni delle singole variabili (spiegare e vedere con i numeri)

    Infatti il coefficiente di determinazione multipla della regressione con due variabili esplicative (modello ) è:

    \[R^2_{y.12} = 0.722\]

    mentre i singoli coefficienti di determinazione multipla dei due modelli di regressione sono:

    \[R^2_{y.1} = 0.441\] \[R^2_{y.2} = 0.71\]

4 Terzo esempio: frodi negli acquisti online

Classes 'data.table' and 'data.frame':  310134 obs. of  14 variables:
 $ isFraud       : int  0 0 0 0 0 0 0 0 0 0 ...
 $ TransactionDT : int  86400 86469 86510 86522 86536 86618 86725 86761 86808 86972 ...
 $ TransactionAmt: num  68.5 59 49 159 117 ...
 $ ProductCD     : Factor w/ 5 levels "C","H","R","S",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ card4         : Factor w/ 5 levels "","american express",..: 3 5 5 5 4 5 5 4 4 5 ...
 $ card6         : Factor w/ 5 levels "","charge card",..: 3 4 4 4 4 4 4 4 4 4 ...
 $ C1            : int  1 1 1 1 2 4 1 1 1 4 ...
 $ C2            : int  1 1 1 1 2 4 1 1 1 2 ...
 $ D1            : int  14 0 0 0 61 0 0 0 0 0 ...
 $ D10           : int  13 0 0 0 40 465 0 0 0 0 ...
 $ D11           : int  13 315 0 0 302 423 237 0 0 35 ...
 $ D15           : int  0 315 0 0 318 0 0 0 0 0 ...
 $ hour          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ day           : num  1 1 1 1 1 1 1 1 1 1 ...

4.1 Summary dei dati

Data Frame Summary

fraud0

Dimensions: 310134 x 14
Duplicates: 57
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 isFraud [integer] Min : 0 Mean : 0 Max : 1
0:304052(98.0%)
1:6082(2.0%)
310134 (100%) 0 (0%)
2 TransactionDT [integer] Mean (sd) : 8765654.5 (4371378.3) min < med < max: 86400 < 9124508.5 < 15811131 IQR (CV) : 7101428.5 (0.5) 304681 distinct values 310134 (100%) 0 (0%)
3 TransactionAmt [numeric] Mean (sd) : 153.1 (272.5) min < med < max: 2 < 78.5 < 31937.4 IQR (CV) : 97 (1.8) 9571 distinct values 310134 (100%) 0 (0%)
4 ProductCD [factor] 1. C 2. H 3. R 4. S 5. W
0(0.0%)
0(0.0%)
0(0.0%)
0(0.0%)
310134(100.0%)
310134 (100%) 0 (0%)
5 card4 [factor] 1. (Empty string) 2. american express 3. discover 4. mastercard 5. visa
1219(0.4%)
0(0.0%)
3070(1.0%)
100922(32.5%)
204923(66.1%)
310134 (100%) 0 (0%)
6 card6 [factor] 1. (Empty string) 2. charge card 3. credit 4. debit 5. debit or credit
1219(0.4%)
0(0.0%)
49006(15.8%)
259890(83.8%)
19(0.0%)
310134 (100%) 0 (0%)
7 C1 [integer] Mean (sd) : 9 (29.2) min < med < max: 0 < 2 < 344 IQR (CV) : 2 (3.2) 321 distinct values 310134 (100%) 0 (0%)
8 C2 [integer] Mean (sd) : 8.3 (26.6) min < med < max: 1 < 2 < 297 IQR (CV) : 2 (3.2) 276 distinct values 310134 (100%) 0 (0%)
9 D1 [integer] Mean (sd) : 116 (170.2) min < med < max: 0 < 26 < 639 IQR (CV) : 171 (1.5) 640 distinct values 310134 (100%) 0 (0%)
10 D10 [integer] Mean (sd) : 141.8 (191.5) min < med < max: 0 < 36 < 679 IQR (CV) : 240 (1.4) 676 distinct values 310134 (100%) 0 (0%)
11 D11 [integer] Mean (sd) : 146.7 (186.1) min < med < max: -53 < 43 < 670 IQR (CV) : 274 (1.3) 675 distinct values 310134 (100%) 0 (0%)
12 D15 [integer] Mean (sd) : 182.8 (209.5) min < med < max: -60 < 82 < 672 IQR (CV) : 351 (1.1) 680 distinct values 310134 (100%) 0 (0%)
13 hour [numeric] Mean (sd) : 14.2 (7.5) min < med < max: 0 < 17 < 23 IQR (CV) : 9 (0.5) 24 distinct values 310134 (100%) 0 (0%)
14 day [numeric] Mean (sd) : 100.8 (50.6) min < med < max: 1 < 105 < 182 IQR (CV) : 83 (0.5) 182 distinct values 310134 (100%) 0 (0%)

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

4.2 Alcune righe del data frame

isFraud TransactionDT TransactionAmt ProductCD card4 card6 C1 C2 D1 D10 D11 D15 hour day
1 0 86400 68.50 W discover credit 1 1 14 13 13 0 0 1
2 0 86469 59.00 W visa debit 1 1 0 0 315 315 0 1
3 0 86510 49.00 W visa debit 1 1 0 0 0 0 0 1
155065 0 9124493 107.95 W visa debit 3 1 104 580 580 580 14 105
155066 0 9124497 134.95 W mastercard credit 1 1 0 0 0 0 14 105
155067 0 9124507 66.95 W visa debit 2 2 0 0 0 0 14 105
310132 0 15811079 30.95 W mastercard debit 1 1 0 0 0 0 23 182
310133 0 15811088 117.00 W mastercard debit 1 1 22 22 22 22 23 182
310134 0 15811131 279.95 W mastercard credit 2 1 0 1 0 1 23 182

4.3 Descrizione dei dati

Si tratta di un campione estratto dal sito kaggle.com, notevolmente ridotto e semplificato, relativo a 310134 transazioni on line.

Ogni record corrisponde a una transazione effettuata. Non sono presenti dati mancanti

Per semplicità non ho incluso i record con osservazioni mancanti, che in qualche caso possono essere invece informativi.

Le variabili presenti sono le seguenti (Il significato effettivo di alcune variabili è mascherato dall’ente che ha messo a disposizione i dati):

  • la variabile di interesse isFraud: è una variabile dicotomica che assume modalità “0” se la transazione è regolare oppure “1” se la transazione è risultata poi fraudolenta;

  • TransactionDT: è una variabile temporale espressa in secondi;

  • TransactionAmt: è una variabile quantitativa che indica l’importo del pagamento della transazione in dollari;

  • ProductCD: inutile perchè costante in questo sottoinsieme di dati;

  • card1 e card6: sono due variabili qualitative che indicano vari tipi di informazioni sulla carta di pagamento come il tipo di carta, la categoria, la banca, il Paese, ecc.;

  • C1 e C2: sono variabili di conteggio. Ad esempio il numero di indirizzi associati alla carta di pagamento, ecc.;

  • D1, D10, D11, D15: sono variabili quantitative che indicano intervalli temporali misurati in giorni come ad esempio i giorni tra la transazione precedente, etc.

  • hour,day: ora e giorno della transazione

with(fraud0,plot(log10(TransactionAmt+0.5),log10(D15+0.5),col=isFraud+1))
Warning in xy.coords(x, y, xlabel, ylabel, log): Si è prodotto un NaN

with(fraud0,MLA.group.density.plot(log10(TransactionAmt+0.5),isFraud))

with(fraud0,myplot.grouped.bin(isFraud,hour))

$m
         0          1          2          3          4          5          6          7          8          9 
0.01647686 0.01568811 0.01632025 0.01768049 0.01995284 0.03406814 0.03246753 0.04487659 0.03764479 0.04489796 
        10         11         12         13         14         15         16         17         18         19 
0.02790462 0.02267685 0.02271827 0.01736527 0.01744897 0.01705332 0.01955496 0.02027244 0.02145443 0.02181074 
        20         21         22         23 
0.02010050 0.01907502 0.01784312 0.02097966 

$x
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

$n
    0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19 
20635 17083 12990  9502  5513  2994  2002  1337  1036  1225  1971  4057  7571 11690 15531 18061 20762 21803 22373 22466 
   20    21    22    23 
22089 22595 22922 21926 

4.4 Il problema statistico di previsione.

Alcune di queste variabili ci possono aiutare a valutare se una transazione è fraudolenta?

E’ basilare in questo contesto che tutte le variabili (tranne la risposta isFraud) siano osservabili immediatamente prima dell’esecuzione della transazione, mentre la variabile isFraud ragionevolmente sarà nota dopo alcuni giorni

Potremo commettere due tipi di errori: Falsi Positivi e Falsi negativi

Non potremo ovviamente, in generale, ottenere previsioni esatte, ma magari avere una valutazione della probabilità che una transazione sia fraudolenta

5 Quarto esempio: il consumo di energia elettrica.

Classes 'data.table' and 'data.frame':  512872 obs. of  18 variables:
 $ timestamp         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ air_temperature   : num  3.8 3.8 3.8 3.8 3.8 3.8 3.8 3.8 3.8 3.8 ...
 $ cloud_coverage    : num  1.67 1.67 1.67 1.67 1.67 ...
 $ dew_temperature   : num  2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 ...
 $ precip_depth_1_hr : num  0.678 0.678 0.678 0.678 0.678 ...
 $ sea_level_pressure: num  1021 1021 1021 1021 1021 ...
 $ wind_direction    : num  240 240 240 240 240 240 240 240 240 240 ...
 $ wind_speed        : num  3.1 3.1 3.1 3.1 3.1 3.1 3.1 3.1 3.1 3.1 ...
 $ building_id       : int  105 106 107 108 109 110 111 112 112 113 ...
 $ meter             : int  0 0 0 0 0 0 0 0 3 0 ...
 $ meter_reading     : num  23.304 0.375 175.184 91.265 80.93 ...
 $ primary_use       : chr  "Education" "Education" "Education" "Education" ...
 $ year_built        : num  1961 1960 2005 1913 1953 ...
 $ log.meter         : num  3.191 0.318 5.172 4.525 4.406 ...
 $ floor.count       : num  6 5 11 6 7 9 8 7 7 10 ...
 $ sq.feet           : num  50624 5375 97533 81581 56996 ...
 $ day               : num  0 0 0 0 0 0 0 0 0 0 ...
 $ hour              : num  0 0 0 0 0 0 0 0 0 0 ...
 - attr(*, ".internal.selfref")=<externalptr> 

Data Frame Summary

a

Dimensions: 512872 x 18
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 timestamp [integer] Mean (sd) : 4335.4 (2561.3) min < med < max: 0 < 4264 < 8783 IQR (CV) : 4473 (0.6) 8763 distinct values 512872 (100%) 0 (0%)
2 air_temperature [numeric] Mean (sd) : 11.5 (6.1) min < med < max: -3.9 < 11 < 32.9 IQR (CV) : 9.1 (0.5) 336 distinct values 512872 (100%) 0 (0%)
3 cloud_coverage [numeric] Mean (sd) : 1.7 (0.9) min < med < max: 0 < 1.9 < 9 IQR (CV) : 0.7 (0.6) 7064 distinct values 512872 (100%) 0 (0%)
4 dew_temperature [numeric] Mean (sd) : 7.5 (5.2) min < med < max: -8.9 < 7.6 < 20.7 IQR (CV) : 8.2 (0.7) 266 distinct values 512872 (100%) 0 (0%)
5 precip_depth_1_hr [numeric] Mean (sd) : 0.9 (0.7) min < med < max: -0.8 < 0.9 < 4.9 IQR (CV) : 0.8 (0.8) 8763 distinct values 512872 (100%) 0 (0%)
6 sea_level_pressure [numeric] Mean (sd) : 1015.9 (10.8) min < med < max: 973.3 < 1017.5 < 1045.5 IQR (CV) : 13.3 (0) 674 distinct values 512872 (100%) 0 (0%)
7 wind_direction [numeric] Mean (sd) : 195.4 (98.5) min < med < max: 0 < 220 < 360 IQR (CV) : 160 (0.5) 40 distinct values 512872 (100%) 0 (0%)
8 wind_speed [numeric] Mean (sd) : 4 (2.2) min < med < max: 0 < 3.6 < 18.5 IQR (CV) : 2.5 (0.6) 34 distinct values 512872 (100%) 0 (0%)
9 building_id [integer] Mean (sd) : 129.1 (14.7) min < med < max: 105 < 128 < 155 IQR (CV) : 26 (0.1) 51 distinct values 512872 (100%) 0 (0%)
10 meter [integer] Min : 0 Mean : 0.4 Max : 3
0:446907(87.1%)
3:65965(12.9%)
512872 (100%) 0 (0%)
11 meter_reading [numeric] Mean (sd) : 160.9 (187.5) min < med < max: 0 < 90 < 22700 IQR (CV) : 183.7 (1.2) 66129 distinct values 512872 (100%) 0 (0%)
12 primary_use [character] 1. Education 2. Entertainment/public asse 3. Lodging/residential 4. Office 5. Public services
240283(46.9%)
8763(1.7%)
87630(17.1%)
150174(29.3%)
26022(5.1%)
512872 (100%) 0 (0%)
13 year_built [numeric] Mean (sd) : 1962.2 (28.5) min < med < max: 1900 < 1960.7 < 2007 IQR (CV) : 18.7 (0) 38 distinct values 512872 (100%) 0 (0%)
14 log.meter [numeric] Mean (sd) : 4.4 (1.3) min < med < max: 0 < 4.5 < 10 IQR (CV) : 1.8 (0.3) 66129 distinct values 512872 (100%) 0 (0%)
15 floor.count [numeric] Mean (sd) : 8 (2.5) min < med < max: 3 < 8 < 17 IQR (CV) : 3 (0.3) 13 distinct values 512872 (100%) 0 (0%)
16 sq.feet [numeric] Mean (sd) : 66514 (40647.1) min < med < max: 5375 < 57674 < 174602 IQR (CV) : 56694 (0.6) 51 distinct values 512872 (100%) 0 (0%)
17 day [numeric] Mean (sd) : 180.2 (106.7) min < med < max: 0 < 177 < 365 IQR (CV) : 187 (0.6) 366 distinct values 512872 (100%) 0 (0%)
18 hour [numeric] Mean (sd) : 11.5 (6.9) min < med < max: 0 < 11 < 23 IQR (CV) : 11 (0.6) 24 distinct values 512872 (100%) 0 (0%)

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

# A tibble: 9 x 18
  timestamp air_temperature cloud_coverage dew_temperature precip_depth_1_… sea_level_press… wind_direction wind_speed
      <int>           <dbl>          <dbl>           <dbl>            <dbl>            <dbl>          <dbl>      <dbl>
1         0             3.8           1.67             2.4            0.678            1021.            240        3.1
2         0             3.8           1.67             2.4            0.678            1021.            240        3.1
3         0             3.8           1.67             2.4            0.678            1021.            240        3.1
4      4264            18.9           2.60            11.4            1.94             1018.            260        7.7
5      4264            18.9           2.60            11.4            1.94             1018.            260        7.7
6      4264            18.9           2.60            11.4            1.94             1018.            260        7.7
7      8783             7.5           2.13             6.5            1.59             1025.            210        5.7
8      8783             7.5           2.13             6.5            1.59             1025.            210        5.7
9      8783             7.5           2.13             6.5            1.59             1025.            210        5.7
# … with 10 more variables: building_id <int>, meter <int>, meter_reading <dbl>, primary_use <chr>, year_built <dbl>,
#   log.meter <dbl>, floor.count <dbl>, sq.feet <dbl>, day <dbl>, hour <dbl>

You must enable Javascript to view this page properly.

La figura in 3d è su un campione di 20000 valori e non su tutte le 512872 osservazioni per non appesantire il rendering di questo documento html. In R si può fare girare il codice sull’intero data.frame

5.1 Alcune righe del data frame

timestamp air_temperature cloud_coverage dew_temperature precip_depth_1_hr sea_level_pressure wind_direction wind_speed building_id meter meter_reading primary_use year_built log.meter floor.count sq.feet day hour
1 8718 -0.9 0.000000 -0.9 -0.2604375 1037.8 40 1.0 145 0 22.6250 Office 1968.998 3.1623055 5 14220 363 6
2 6457 11.2 1.741333 8.9 0.7319694 1022.3 200 2.1 115 0 416.6670 Education 1968.000 6.0346845 7 129717 269 1
3 4141 19.8 2.431685 12.4 1.6100561 1017.4 250 6.2 133 0 46.3000 Lodging/residential 1960.000 3.8565103 9 64724 172 13
9998 7526 8.6 2.541610 4.9 1.6710009 1001.3 300 6.2 115 0 596.9000 Education 1968.000 6.3934235 7 129717 313 14
9999 7200 10.1 0.000000 9.9 0.0294759 1031.1 270 2.6 132 0 64.2000 Lodging/residential 1995.000 4.1774595 9 83109 300 0
10000 8589 9.1 2.025383 7.2 1.2714407 1021.8 250 4.1 123 0 113.2000 Education 1989.000 4.7379513 7 61205 357 21
19998 5998 19.7 2.069243 16.5 1.1249259 1022.8 170 3.6 135 0 28.4000 Lodging/residential 1967.000 3.3809947 11 66533 249 22
19999 7883 10.2 2.075795 6.9 1.4976822 1023.7 40 6.2 107 0 0.0405 Education 2005.000 0.0397014 11 97533 328 11
20000 273 4.6 0.000000 2.2 0.0526846 996.1 250 6.2 106 0 0.7492 Education 1960.172 0.5591585 5 5375 11 9

5.2 Descrizione sommaria dei dati

Si tratta di un campione estratto dal sito kaggle.com, ridotto e semplificato, relativo ai consumi orari di energia elettrica in diversi edifici. Il file contiene 20000 rilevazioni orarie, e per ciascuna è riportato:

  • timestamp: orario (ore trascorse dal tempo 0 della prima osservazione)

  • air_temperature, cloud_coverage, dew_temperature, precip_depth_1_hr, sea_level_pressure, wind_direction, wind_speed sono variabili atmosferiche rilevate dalla stazione meteo più vicina al palazzo

  • meter tipo di consumo di energia

  • meter_reading consumo orario di energia

  • primary_use uso dell’edificio

  • year_built anno di costruzione

  • log.meter logaritmo del consumo di energia (commentare)

  • floor.count numero di piani

  • sq.feet superficie

  • hour,day: ora e giorno della rilevazione

5.3 Il problema statistico.

Si vorrà vedere se e come meter_reading (o log.meter) dipende dalle altre variabili. il grafico 3d ci lascerebbe pensare di sì.

Ma da quali di più?