Taula de continguts

1 Descripció del dataset

El dataset emprat en aquesta pràctica conté les dades i les metadades de les estacions automàtiques operatives, recollides durant un any i cada trenta minuts, fins al 3 de desembre de 2025. Les estacions formen part de la Xarxa d’Estacions Meteorològiques Automàtiques (XEMA) de Catalunya i les dades s’han obtingut fent web scraping a dues pàgines de meteo.cat.

En el dataset, primer tenim les variables de l’estació que es va obtenir a la pàgina “Llistat d’estacions”:

Metadades de les estacions meteorològiques
# Nom Descripció Tipus Valors possibles
1 Comarca Comarca on es troba l’estació Categòrica Text
2 Municipi Municipi on es troba l’estació Categòrica Text
3 Estació Codi Nom de l’estació i codi identificador Categòrica Text
4 Latitud Latitud de l’estació Quantitativa contínua Valors reals [-90.0, 90.0]
5 Longitud Longitud de l’estació Quantitativa contínua Valors reals [-180.0, 180.0]
6 Altitud (m) Altitud de l’estació en metres Quantitativa contínua Valors reals [0.0, 3200.0]
7 Data alta Data d’alta de l’estació Data Data en format dd.mm.aaaa
8 Data baixa Data de baixa de l’estació Data Data en format dd.mm.aaaa
9 Estat actual Estat actual de l’estació Categòrica “Desmantellada” o “Operativa”
10 code Codi identificador de l’estació Categòrica Text de 2 caràcters de longitud
11 date Data de la mesura Data Data en format dd.mm.aaaa
12 Període TU Hora de la mesura en Temps Universal Categòrica Període en format HH:MM - HH:MM

Després tenim les variables amb la informació meteorològica dels sensors, que es va obtenir fent web scraping a la pàgina “Dades d’estació”:

Informació meteorològica recollida per les estacions
# Nom Descripció Tipus Valors possibles
13 TM °C Temperatura mitjana en graus Celsius Quantitativa contínua Valors reals [-20.0, 50.0]
14 TX °C Temperatura màxima en graus Celsius Quantitativa contínua Valors reals [-20.0, 50.0]
15 TN °C Temperatura mínima en graus Celsius Quantitativa contínua Valors reals [-20.0, 50.0]
16 HRM % Humitat relativa mitjana en percentatge Quantitativa contínua Valors reals [0.0, 100.0]
17 PPT mm Precipitació en mil·límetres Quantitativa contínua Valors reals [0.0, Inf)
18 VVM (2 m) km/h Velocitat mitjana del vent a 2 metres en km/h Quantitativa contínua Valors reals [0.0, Inf)
19 DVM (2 m) graus Direcció del vent a 2 metres en graus Quantitativa contínua Valors reals [0.0, 360.0]
20 VVX (2 m) km/h Velocitat màxima del vent a 2 metres en km/h Quantitativa contínua Valors reals [0.0, Inf)
21 RS W/m2 Radiació solar en watts per metre quadrat Quantitativa contínua Valors reals [0.0, Inf)
22 VVM (10 m) km/h Velocitat mitjana del vent a 10 metres en km/h Quantitativa contínua Valors reals [0.0, Inf)
23 DVM (10 m) graus Direcció del vent a 10 metres en graus Quantitativa contínua Valors reals [0.0, 360.0]
24 VVX (10 m) km/h Velocitat màxima del vent a 10 metres en km/h Quantitativa contínua Valors reals [0.0, Inf)
25 PM hPa Pressió atmosfèrica mitjana en hectopascals Quantitativa discreta Valors enters
26 VVM (6 m) km/h Velocitat mitjana del vent a 6 metres en km/h Quantitativa contínua Valors reals [0.0, inf)
27 DVM (6 m) graus Direcció del vent a 6 metres en graus Quantitativa contínua Valors reals [0.0, 360.0]
28 VVX (6 m) km/h Velocitat màxima del vent a 6 metres en km/h Quantitativa contínua Valors reals [0.0, Inf)
29 GN cm Gruix de neu en centímetres Quantitativa contínua Valors reals [0.0, Inf)

En cas que no es vulguin baixar les dades i es desitgi utilitzar el dataset comprimit en aquest repositori, cal descomprimir-lo i executar l’script per generar el fitxer dataset.csv:

tar xvfa ./backup/dataset.tar.xz
python3 source/main.py -w

En cas que es vulguin baixar les dades més recents, cal executar els següents ordres en la terminal. En l’exemple, s’obté el fitxer dataset.csv amb les dades de les estacions de l’últim any fins al 3 de desembre de 2025:

python3 source/main.py -d 365 -b 03.12.2025

En el següent bloc de codi es carrega el fitxer dataset.csv amb el conjunt de dades:

dataset_measurements <- fread(
    "../dataset/dataset.csv", # Camí al fitxer
    dec = ".", # Separador decimal
    na.strings = c("", "(s/d)"), # Valors que representen NA
    data.table = FALSE # Retorna data.frame per compatibilitat
)

El conjunt de dades té 29 variables (columnes) i 3.251.663 registres (files).

2 Integració i selecció

La integració pròpiament dita es realitza durant el procés de web scraping, on es recullen les dades de les dues pàgines web i es combinen en un únic conjunt de dades. En aquest cas, no és necessari realitzar una integració addicional ja que les dades ja estan integrades en el fitxer dataset.csv.

No obstant això, s’ha modificat la integració per utilitzar un únic separador de decimals (el punt) per a totes les variables numèriques. Originàriament en el fitxer dataset.csv, les variables Latitud i Longitud utilitzaven la coma com a separador decimal, mentre que la resta de variables numèriques utilitzen el punt.

Aquest canvi ha permès una millor gestió de les dades numèriques, evitar problemes de conversió de tipus de dades i utilitzar la funció fread de la biblioteca data.table per carregar el conjunt de dades de manera eficient.

En aquest apartat, un cop carregades les dades, es du a terme una anàlisi preliminar del conjunt de dades per conèixer millor les seves característiques. Al final d’aquest apartat, s’hauran eliminat les variables innecessàries (Estació [Codi], code, Data baixa i Estat actual) i s’hauran creat dues noves variables (Nom estació i Codi estació).

El conjunt de dades final només tindrà les variables necessàries per fer l’anàlisi de les dades; no obstant això, no s’eliminen les variables innecessàries fins després d’haver fet la imputació dels valors perduts, ja que poden ser útils per a la imputació.

Les dades meteorològiques es van recollir en un període d’un any, des del 4 de desembre de 2024 fins al 3 de desembre de 2025. El conjunt de dades recull les dades meteorològiques de 189 estacions meteorològiques, durant 364 dies, amb 48 observacions per dia. Per tant, una estació meteorològica com a molt pot tenir 17.472 registres (files) o una variable d’una estació pot tenir com a molt 17.472 observacions, corresponents a 364 dies (date) amb 48 observacions/dia (una cada 30 minuts, Període TU).

No totes les estacions tenen el mateix nombre de registres, de fet hi ha 108 estacions meteorològiques que tenen exactament 17.472 files. Hi ha diversos motius que expliquen aquest fet, com ara problemes tècnics en les estacions, errors en la transmissió de dades, o que les estacions es van donar d’alta després de l’inici del període de recollida de dades.

Estacions meteorològiques donades d’alta després del 04/12/2024
Estació Codi Data d’alta
Cantonigròs [YU] 2025-02-18
Mataró [YV] 2025-06-11
Batea [YX] 2025-07-30

En la taula següent es mosta un resum del nombre de registres de les estacions meteorològiques restants (78), on per temes d’espai, només es mostren les 5 primeres i les 5 últimes estacions, ordenades pel nombre de registres.

Estacions meteorològiques sense totes les files
Estació Codi Nombre de files
Primeres 5 estacions
Anglesola - Tornabous [XX] 17.424
Caldes de Montbui [X9] 17.424
Castellbisbal [XC] 17.424
Gandesa [XP] 17.424
Granollers [YM] 17.424
Últimes 5 estacions
la Llacuna [XB] 17.184
la Panadella [XA] 17.184
la Seu d’Urgell - Bellestar [CD] 17.184
Òdena [H1] 17.184
Bonabé (1.693 m) [YT] 7.104

En el conjunt de dades hi ha un total de 182 municipis i 42 comarques diferents.

En la següent taula es mostra el nombre de valors diferents per cada variable del conjunt de dades.

Nombre de valors diferents per variable
Variable Nombre de valors diferents
Data baixa 1
Estat actual 1
Comarca 42
Període TU 48
HRM % 100
VVM (2 m) km/h 130
Altitud (m) 172
Data alta 176
Municipi 182
GN cm 182
Estació Codi 189
Latitud 189
Longitud 189
code 189
VVM (6 m) km/h 232
VVX (2 m) km/h 242
VVM (10 m) km/h 318
PPT mm 334
VVX (6 m) km/h 342
DVM (2 m) graus 362
DVM (6 m) graus 362
DVM (10 m) graus 362
date 364
VVX (10 m) km/h 467
TN °C 574
TM °C 579
TX °C 581
PM hPa 895
RS W/m2 1.172

A partir dels valors observats en la taula anterior, s’eliminen les variables Data baixa i Estat actual perquè només tenen un únic valor, ja que totes les estacions estan operatives.

# Elimina les variables del conjunt de dades
dataset_measurements <- dataset_measurements |>
    select(-`Data baixa`, -`Estat actual`)

Per facilitar la visualització de les gràfiques i taules, es creen dues variables noves Nom estació i Codi estació a partir de la variable Estació [Codi].

dataset_measurements <- dataset_measurements |>
    mutate(
        `Nom estació` = sub("(.*) \\[.*\\]", "\\1", `Estació [Codi]`),
        `Codi estació` = sub(".*\\[(.*)\\]", "\\1", `Estació [Codi]`)
    ) |>
    select(-`Estació [Codi]`, -code) |>
    select(`Nom estació`, `Codi estació`, everything())

3 Conversió de tipus de dades

Abans de continuar amb l’anàlisi de les dades, és important assegurar-se que les variables tinguin el tipus de dada correcte. Això facilitarà l’anàlisi i la visualització de les dades. Al final d’aquest apartat, s’hauran convertit les variables al tipus de dada adequat i s’hauran eliminat dues variables innecessàries (Període TU i date) i s’haurà creat una nova variable Data i hora.

glimpse(dataset_measurements) # Mostra l'estructura del conjunt de dades inicial
## Rows: 3,251,663
## Columns: 27
## $ `Nom estació`      <chr> "Nulles", "Nulles", "Nulles", "Nulles", "Nulles", "…
## $ `Codi estació`     <chr> "VY", "VY", "VY", "VY", "VY", "VY", "VY", "VY", "VY…
## $ Comarca            <chr> "Alt Camp", "Alt Camp", "Alt Camp", "Alt Camp", "Al…
## $ Municipi           <chr> "Nulles", "Nulles", "Nulles", "Nulles", "Nulles", "…
## $ Latitud            <dbl> 41.25095, 41.25095, 41.25095, 41.25095, 41.25095, 4…
## $ Longitud           <dbl> 1.29863, 1.29863, 1.29863, 1.29863, 1.29863, 1.2986…
## $ `Altitud (m)`      <int> 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 2…
## $ `Data alta`        <chr> "18.09.2000", "18.09.2000", "18.09.2000", "18.09.20…
## $ date               <chr> "05.12.2024", "05.12.2024", "05.12.2024", "05.12.20…
## $ `Període TU`       <chr> "00:00 - 00:30", "00:30 - 01:00", "01:00 - 01:30", …
## $ `TM °C`            <dbl> 7.2, 8.4, 9.0, 9.2, 8.1, 7.0, 6.8, 6.0, 7.2, 7.3, 6…
## $ `TX °C`            <dbl> 8.1, 8.7, 9.8, 9.9, 9.0, 7.4, 7.4, 7.3, 7.7, 8.3, 7…
## $ `TN °C`            <dbl> 6.7, 8.0, 8.6, 8.3, 7.2, 6.0, 5.5, 4.6, 6.9, 6.0, 6…
## $ `HRM %`            <dbl> 62, 59, 52, 50, 55, 61, 63, 66, 60, 58, 65, 64, 62,…
## $ `PPT mm`           <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ `VVM (2 m) km/h`   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `DVM (2 m) graus`  <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `VVX (2 m) km/h`   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `RS W/m2`          <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `VVM (6 m) km/h`   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `DVM (6 m) graus`  <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `VVX (6 m) km/h`   <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `VVM (10 m) km/h`  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `DVM (10 m) graus` <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `VVX (10 m) km/h`  <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `PM hPa`           <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ `GN cm`            <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…

En la conversió del tipus de dades, s’han realitzat les següents accions:

# Conversió del tipus de dades de les variables i eliminació
dataset_measurements <- dataset_measurements |>
    mutate(
        # Variables de dates (2)
        `Data alta` = as.Date(`Data alta`, format = "%d.%m.%Y"),
        `Data i hora` = as.POSIXct(
            paste(date, substr(`Període TU`, 1, 5)),
            format = "%d.%m.%Y %H:%M", tz = "UTC"
        ),
        # Variables categòriques (5)
        `Codi estació` = as.factor(`Codi estació`),
        `Nom estació` = as.factor(`Nom estació`),
        Comarca = as.factor(Comarca),
        Municipi = as.factor(Municipi),
        # Variables numèriques geogràfiques (3)
        `Altitud (m)` = as.numeric(`Altitud (m)`),
        Longitud = as.numeric(Longitud),
        Latitud = as.numeric(Latitud),
        # Variables numèriques de temperatura (3)
        `TM °C` = as.numeric(`TM °C`),
        `TX °C` = as.numeric(`TX °C`),
        `TN °C` = as.numeric(`TN °C`),
        # Variables numèriques de direcció del vent (3)
        `DVM (2 m) graus` = as.numeric(`DVM (2 m) graus`),
        `DVM (6 m) graus` = as.numeric(`DVM (6 m) graus`),
        `DVM (10 m) graus` = as.numeric(`DVM (10 m) graus`),
        # Variables numèriques de velocitat del vent (5)
        `VVM (2 m) km/h` = as.numeric(`VVM (2 m) km/h`),
        `VVM (6 m) km/h` = as.numeric(`VVM (6 m) km/h`),
        `VVM (10 m) km/h` = as.numeric(`VVM (10 m) km/h`),
        `VVX (2 m) km/h` = as.numeric(`VVX (2 m) km/h`),
        `VVX (10 m) km/h` = as.numeric(`VVX (10 m) km/h`),
        # Altres variables numèriques (5)
        `GN cm` = as.numeric(`GN cm`),
        `HRM %` = as.numeric(`HRM %`),
        `PM hPa` = as.numeric(`PM hPa`),
        `PPT mm` = as.numeric(`PPT mm`),
        `RS W/m2` = as.numeric(`RS W/m2`)
    ) |>
    select(-`Període TU`, -date)

A continuació es mostra un resum estadístic del conjunt de dades després de la conversió de tipus.

summary(dataset_measurements) # Resum estadístic després de la conversió
##    Nom estació       Codi estació                  Comarca       
##  Albesa  :  17472   C6     :  17472   Segrià           : 192192  
##  Alcarràs:  17472   C8     :  17472   Alt Empordà      : 154656  
##  Alfarràs:  17472   C9     :  17472   Noguera          : 139776  
##  Algerri :  17472   CC     :  17472   Vallès Occidental: 121968  
##  Alguaire:  17472   CG     :  17472   Osona            : 118560  
##  Amposta :  17472   CI     :  17472   Pallars Sobirà   : 111936  
##  (Other) :3146831   (Other):3146831   (Other)          :2412575  
##                  Municipi          Latitud         Longitud     
##  Barcelona           :  52367   Min.   :40.56   Min.   :0.3056  
##  El Prat de Llobregat:  51696   1st Qu.:41.36   1st Qu.:0.8818  
##  Lleida              :  34944   Median :41.68   Median :1.5212  
##  Vielha e Mijaran    :  34848   Mean   :41.71   Mean   :1.5652  
##  Alt Àneu            :  24576   3rd Qu.:42.09   3rd Qu.:2.1552  
##  Albesa              :  17472   Max.   :42.77   Max.   :3.1815  
##  (Other)             :3035760                                   
##   Altitud (m)       Data alta              TM °C            TX °C       
##  Min.   :   0.0   Min.   :1988-08-31   Min.   :-15.10   Min.   :-14.90  
##  1st Qu.: 148.0   1st Qu.:1996-02-29   1st Qu.:  8.10   1st Qu.:  8.40  
##  Median : 325.0   Median :2000-06-22   Median : 13.80   Median : 14.20  
##  Mean   : 523.9   Mean   :2003-05-31   Mean   : 14.24   Mean   : 14.66  
##  3rd Qu.: 684.0   3rd Qu.:2010-01-26   3rd Qu.: 20.40   3rd Qu.: 20.80  
##  Max.   :2535.0   Max.   :2025-07-30   Max.   : 43.40   Max.   : 43.80  
##                                        NA's   :87560    NA's   :88947   
##      TN °C            HRM %            PPT mm       VVM (2 m) km/h   
##  Min.   :-15.30   Min.   :  2.00   Min.   : 0.000   Min.   : 0.00    
##  1st Qu.:  7.70   1st Qu.: 57.00   1st Qu.: 0.000   1st Qu.: 1.80    
##  Median : 13.40   Median : 75.00   Median : 0.000   Median : 3.60    
##  Mean   : 13.84   Mean   : 72.49   Mean   : 0.037   Mean   : 4.63    
##  3rd Qu.: 20.00   3rd Qu.: 91.00   3rd Qu.: 0.000   3rd Qu.: 6.50    
##  Max.   : 43.00   Max.   :100.00   Max.   :63.700   Max.   :57.20    
##  NA's   :88933    NA's   :88167    NA's   :34765    NA's   :2416412  
##  DVM (2 m) graus   VVX (2 m) km/h       RS W/m2       VVM (6 m) km/h   
##  Min.   :  0.0     Min.   :  0.00    Min.   :  0.0    Min.   : 0.00    
##  1st Qu.:102.0     1st Qu.:  5.40    1st Qu.:  0.0    1st Qu.: 2.90    
##  Median :192.0     Median :  9.70    Median :  4.0    Median : 6.10    
##  Mean   :189.3     Mean   : 11.74    Mean   :181.4    Mean   : 7.68    
##  3rd Qu.:278.0     3rd Qu.: 16.20    3rd Qu.:312.0    3rd Qu.:10.80    
##  Max.   :360.0     Max.   :103.70    Max.   :999.0    Max.   :98.30    
##  NA's   :2416856   NA's   :2416448   NA's   :635082   NA's   :3035498  
##  DVM (6 m) graus   VVX (6 m) km/h    VVM (10 m) km/h   DVM (10 m) graus 
##  Min.   :  0.0     Min.   :  0.00    Min.   : -0.70    Min.   :  0.0    
##  1st Qu.:118.0     1st Qu.:  8.30    1st Qu.:  3.60    1st Qu.: 99.0    
##  Median :227.0     Median : 14.80    Median :  6.80    Median :197.0    
##  Mean   :204.3     Mean   : 17.23    Mean   :  8.67    Mean   :188.2    
##  3rd Qu.:285.0     3rd Qu.: 23.00    3rd Qu.: 11.50    3rd Qu.:276.0    
##  Max.   :360.0     Max.   :143.30    Max.   :123.10    Max.   :360.0    
##  NA's   :3036151   NA's   :3035498   NA's   :1534470   NA's   :1535904  
##  VVX (10 m) km/h       PM hPa            GN cm        
##  Min.   :  0.00    Min.   : 829.7    Min.   : -2.00   
##  1st Qu.:  8.30    1st Qu.:1013.3    1st Qu.:  0.00   
##  Median : 14.00    Median :1017.2    Median :  0.00   
##  Mean   : 17.05    Mean   :1011.1    Mean   : 13.28   
##  3rd Qu.: 22.70    3rd Qu.:1020.7    3rd Qu.:  5.00   
##  Max.   :173.90    Max.   :1046.6    Max.   :178.00   
##  NA's   :1534563   NA's   :1895297   NA's   :2914019  
##   Data i hora                 
##  Min.   :2024-12-05 00:00:00  
##  1st Qu.:2025-03-06 11:00:00  
##  Median :2025-06-05 12:00:00  
##  Mean   :2025-06-05 14:48:20  
##  3rd Qu.:2025-09-05 09:00:00  
##  Max.   :2025-12-03 23:30:00  
## 

4 Neteja de les dades

A causa que les estacions meteorològiques són dispositius electrònics que poden fallar o tenir problemes tècnics, és comú trobar valors perduts en els conjunts de dades meteorològiques. Aquests valors perduts poden ser deguts a diversos motius, com ara errors en la transmissió de dades, problemes amb els sensors, o condicions meteorològiques extremes que impedeixen la recollida de dades.

Per tal de garantir la qualitat i la fiabilitat de l’anàlisi, els valors perduts s’imputaran utilitzant diferents tècniques segons la variable i el context. No obstant això, s’utilitzarà l’anàlisi de valors perduts per comprendre millor la distribució i el patró dels valors perduts en el conjunt de dades.

La majoria de les estacions meteorològiques estan distribuïdes per tota la geografia de Catalunya. En les següents gràfiques es mostren les ubicacions de les estacions meteorològiques sobre els límits administratius de Catalunya.

4.1 Gestió dels valors perduts

Abans de tot, eliminen els valors inicials i finals de les estacions quan són NA.

## [1] "Removing leading NAs for station code: YV"
## [1] "Removing leading NAs for station code: YX"
## [1] "Removing trailing NAs for station code: D5"

En la següent gràfica es mostra un mapa de calor dels valors perduts en el conjunt de dades.

## 
##  Variables sorted by number of missings: 
##          Variable      Count
##   DVM (6 m) graus 0.93372218
##    VVM (6 m) km/h 0.93352136
##    VVX (6 m) km/h 0.93352136
##             GN cm 0.89616213
##   DVM (2 m) graus 0.74326633
##    VVX (2 m) km/h 0.74314086
##    VVM (2 m) km/h 0.74312979
##            PM hPa 0.58286788
##  DVM (10 m) graus 0.47234139
##   VVX (10 m) km/h 0.47192899
##   VVM (10 m) km/h 0.47190039
##           RS W/m2 0.19530570
##             TX °C 0.02734923
##             TN °C 0.02734492
##             HRM % 0.02710935
##             TM °C 0.02692267
##            PPT mm 0.01068628
##       Nom estació 0.00000000
##      Codi estació 0.00000000
##           Comarca 0.00000000
##          Municipi 0.00000000
##           Latitud 0.00000000
##          Longitud 0.00000000
##       Altitud (m) 0.00000000
##         Data alta 0.00000000
##       Data i hora 0.00000000

Les variables amb un percentatge de valors perduts igual a \(0.00000000\) no tenen valors perduts:

## [1] "Nom estació"  "Codi estació" "Comarca"      "Municipi"     "Latitud"     
## [6] "Longitud"     "Altitud (m)"  "Data alta"    "Data i hora"

En la gràfica es mostra la matriu de correlació entre les variables numèriques del conjunt de dades, per tal de veure si hi ha alguna variable correlacionada que pugui ajudar en la imputació dels valors perduts. S’exclouen les variables categòriques i les variables que tenen més del 20% de valors perduts.

En els següents subapartats s’analitzaran el valors perduts de cada variable, per ordre de més a menys valors perduts. En el recompte s’han exclòs les estacions que tenen gairebé tots els valors perduts (>17.000) o bé no tenen cap valor perdut (0).

4.1.1 Valors perduts de la variable PPT mm

En la variable PPT mm, els valors perduts es consideren com a zero, ja que aquest és el valor que pren la precipitació quan no hi ha pluja, una vegada s’ha comprovat que els valors perduts coincideixen amb períodes sense precipitació.

4.1.2 Valors perduts de la variable TM ºC

En la variable TM °C, s’utilitza la imputació amb interpolació estacional per als valors perduts, ja que aquesta tècnica és adequada per a sèries temporals amb patrons estacionals, com és el cas de les dades de temperatura.

4.1.3 Valors perduts de la variable HRM %

En la variable HRM %, s’utilitza la imputació interpolació estacional per als valors perduts, ja que aquesta tècnica és adequada per a sèries temporals amb patrons estacionals, com és el cas de les dades d’humitat relativa.

4.1.4 Valors perduts de la variable GN cm

En la variable GN cm, els valors perduts s’imputen mitjançant la interpolació no estacional, ja que aquesta tècnica d’imputació és adequada per a sèries temporals sense patrons estacionals.

4.1.5 Valors perduts de la variable PM hPa

En la variable PM hPa, s’utilitza la imputació basada en les estacions veïnes més properes geogràficament, ja que la pressió atmosfèrica tendeix a ser similar en ubicacions properes.

4.1.6 Valors perduts de la variable VVM (10 m) km/h

En la variable VVM (10 m) km/h, s’utilitza la imputació basada en interpolació estacional per a les estacions amb menys de 500 valors perduts.

4.1.7 Valors perduts de la variable VVX (10 m) km/h

En la variable VVM (10 m) km/h, s’utilitza la imputació basada en interpolació estacional per a les estacions amb menys de 500 valors perduts.

4.1.8 Valors perduts de la variable RS W/m2

En la variable RS W/m2, s’utilitza la imputació amb interpolació estacional per als valors perduts, ja que aquesta tècnica és adequada per a sèries temporals amb patrons estacionals, com és el cas de les dades de radiació solar.

4.2 Gestió de valors extrems

No s’han detectat valors anòmals en les variables numèriques.

Les velocitats del vent, les direccions del vent i les temperatures no presenten valors extrems segons els criteris establerts.

Les variables geogràfiques no presenten valors extrems segons els criteris establerts.

Les altres variables numèriques no presenten valors extrems segons els criteris establerts.

4.3 Eliminació de variables innecessàries

# Eliminem les variables innecessàries del dataset
dataset_measurements <- dataset_measurements[, c(
    "Codi estació", "Data i hora", "Altitud (m)", "Longitud", "Latitud",
    "PPT mm", "TM °C", "HRM %", "RS W/m2", "PM hPa", "VVM (10 m) km/h",
    "VVX (10 m) km/h", "GN cm"
)]
# Desem el conjunt de dades netejat en un fitxer CSV
write.csv(
    dataset_measurements,
    file = "../dataset/dataset_data_analysis.csv",
    append = FALSE, # no afegim al final del fitxer
    na = "NA", # com es representen els valors perduts
    sep = ",", # separador de camps
    dec = ".", # separador decimal
    row.names = FALSE, # no escrivim els noms de les files
    fileEncoding = "UTF-8", # codificació del fitxer
    eol = "\n" # final de línia
)

5 Anàlisi de les dades

5.1 Aplicació d’un Model Supervisat i un No Supervisat

5.1.1 Model Supervisat

En aquest apartat volem calcular la Temperatura Mitjana (TM °C) en funció de les variables que ens proporciona el Meteocat, el mes i l’hora. Primer crearem un model de regressió lineal amb totes les variables numèriques i després veurem la multicol·linealitat entre les variables. Després crearem un segon model de regressió lineal amb menys predictors per evitar la multicol·linealitat.

# Dataset numèric, afegim mes i hora
dataset_numeric <- dataset_measurements |>
    select(
        where(is.numeric),
        `Data i hora`
    )
# Convertir els mesos i les hores a una variable numerica
dataset_numeric$Mes <- month(dataset_numeric$`Data i hora`)
dataset_numeric$Hora <- hour(dataset_numeric$`Data i hora`)
# Model de regressió lineal per a la predicció de TM °C
model_regressio <- lm(
    `TM °C` ~ `Altitud (m)` + Latitud + Longitud + `HRM %` + `RS W/m2` +
        `PM hPa` + `PPT mm` + `VVM (10 m) km/h` + `VVX (10 m) km/h` + `GN cm` +
        Mes + Hora,
    data = dataset_numeric
)
# Mostrem el resumen del model de regressió lineal
summary(model_regressio)
## 
## Call:
## lm(formula = `TM °C` ~ `Altitud (m)` + Latitud + Longitud + 
##     `HRM %` + `RS W/m2` + `PM hPa` + `PPT mm` + `VVM (10 m) km/h` + 
##     `VVX (10 m) km/h` + `GN cm` + Mes + Hora, data = dataset_numeric)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -25.0307  -4.1994  -0.0839   4.5347  23.3601 
## 
## Coefficients:
##                     Estimate Std. Error  t value Pr(>|t|)    
## (Intercept)        8.898e+01  1.817e+00   48.982  < 2e-16 ***
## `Altitud (m)`     -3.497e-03  3.684e-05  -94.928  < 2e-16 ***
## Latitud           -1.664e+00  4.222e-02  -39.417  < 2e-16 ***
## Longitud           1.584e-01  2.452e-02    6.461 1.04e-10 ***
## `HRM %`           -5.849e-02  6.137e-04  -95.313  < 2e-16 ***
## `RS W/m2`          1.024e-02  5.556e-05  184.254  < 2e-16 ***
## `PM hPa`          -4.005e-03  2.457e-04  -16.301  < 2e-16 ***
## `PPT mm`           4.893e-01  2.535e-02   19.300  < 2e-16 ***
## `VVM (10 m) km/h`  4.774e-02  2.999e-03   15.921  < 2e-16 ***
## `VVX (10 m) km/h` -9.331e-02  1.918e-03  -48.655  < 2e-16 ***
## `GN cm`           -6.389e-02  6.068e-04 -105.291  < 2e-16 ***
## Mes                2.901e-01  4.170e-03   69.567  < 2e-16 ***
## Hora               8.550e-02  1.970e-03   43.408  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.932 on 189943 degrees of freedom
##   (3061690 observations deleted due to missingness)
## Multiple R-squared:  0.4124, Adjusted R-squared:  0.4123 
## F-statistic: 1.111e+04 on 12 and 189943 DF,  p-value: < 2.2e-16
# Obtenim els valors de VIF per al model de regressió lineal simple creat
vif_model_regressio <- vif(model_regressio)
# Canviem el nom de les files del VIF per a què siguin més llegibles
names(vif_model_regressio) <- c(
    "Altitud", "Latitud", "Longitud", "HRM", "RS", "PM", "PPT", "VVM", "VVX",
    "GN", "Mes", "Hora"
)
# Mostrem els valors de VIF en un taula ordenats de major a menor
sort(vif_model_regressio, decreasing = TRUE)
##      VVX      VVM  Latitud  Altitud Longitud       PM       GN      HRM 
## 5.046499 4.967224 2.368867 1.960408 1.421967 1.271239 1.250743 1.142291 
##      Mes       RS      PPT     Hora 
## 1.104444 1.084090 1.035575 1.003018

Perquè les variables no presentin multicol·linealitat han de ser inferiors a 5.

  • Altitud i Pressió: L’Altitud presenta un VIF de 1,96 i la Pressió de 1,27. Aquests valors són molt alts, indicant que la forta relació física inversa entre pressió i altitud genera multicol·linealitat en el model.
  • Variables del Vent: VVM i VVX tenen VIF alts, 4,97 i 5,05, respectivament. que estan molt correlacionades entre si.
  • Latitud: Té un VIF de 2,37, que és alt a causa de la seva correlació amb l’Altitud (les zones més altes solen estar més al nord).
  • Variables Temporals: L’hora i el mes tenen valors VIF molt baixos.

Per tant, farem un segon model de regressió lineal amb menys predictors: eliminem la neu, vents (molts NA) i longitud.

# Creació del model de regressió més simple
model_regressio_simple <- lm(
    `TM °C` ~ `Altitud (m)` + Latitud + Longitud + `HRM %` + `RS W/m2` +
        `PPT mm` + `VVX (10 m) km/h` + Mes + Hora,
    data = dataset_numeric
)
# Obtenim els coeficients del model de regressió lineal simple
coef_model_regressio_simple <- coef(model_regressio_simple)
# Canviem el nom dels coeficients per a què siguin més llegibles
names(coef_model_regressio_simple) <- c(
    "Intercept", "Altitud", "Latitud", "Longitud", "HRM", "RS", "PPT", "VVX",
    "Mes", "Hora"
)
# Mostrem el resum del model de regressió lineal simple
resum_model_regressio_simple <- summary(model_regressio_simple)
resum_model_regressio_simple
## 
## Call:
## lm(formula = `TM °C` ~ `Altitud (m)` + Latitud + Longitud + 
##     `HRM %` + `RS W/m2` + `PPT mm` + `VVX (10 m) km/h` + Mes + 
##     Hora, data = dataset_numeric)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -27.5524  -4.2362   0.0857   4.6754  20.4352 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        8.760e+01  6.476e-01  135.27   <2e-16 ***
## `Altitud (m)`     -4.649e-03  1.122e-05 -414.53   <2e-16 ***
## Latitud           -1.632e+00  1.578e-02 -103.41   <2e-16 ***
## Longitud           5.069e-01  8.163e-03   62.10   <2e-16 ***
## `HRM %`           -1.177e-01  2.900e-04 -406.05   <2e-16 ***
## `RS W/m2`          1.096e-02  2.131e-05  514.23   <2e-16 ***
## `PPT mm`           5.402e-01  1.061e-02   50.94   <2e-16 ***
## `VVX (10 m) km/h` -5.028e-02  4.327e-04 -116.19   <2e-16 ***
## Mes                3.802e-01  1.406e-03  270.47   <2e-16 ***
## Hora               1.139e-01  7.071e-04  161.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.128 on 1611246 degrees of freedom
##   (1640390 observations deleted due to missingness)
## Multiple R-squared:  0.4861, Adjusted R-squared:  0.4861 
## F-statistic: 1.694e+05 on 9 and 1611246 DF,  p-value: < 2.2e-16
# Obtenim els valors de VIF per al model de regressió lineal simple
vif_model_regressio_simple <- vif(model_regressio_simple)
# Canviem el nom de les files del VIF per a què siguin més llegibles
names(vif_model_regressio_simple) <- c(
    "Altitud", "Latitud", "Longitud", "HRM", "RS", "PPT", "VVX", "Mes", "Hora"
)
# Mostrem els valors de VIF en un taula ordenats de major a menor
sort(vif_model_regressio_simple, decreasing = TRUE)
##  Latitud  Altitud Longitud      HRM       RS      VVX     Hora      PPT 
## 2.486951 2.077845 1.675162 1.558180 1.411310 1.207702 1.027991 1.018368 
##      Mes 
## 1.004381
  • Capacitat explicativa (\(R^2\)): El model aconsegueix un \(R^2\) ajustat de 0,4861. Això significa que explica el 48,61 % de la variància en la Temperatura Mitjana. En l’anterior model era del 0,4123.
  • Error estàndard de la regressió: L’error estàndard és de 6,1281 ºC. Això indica que les prediccions del model tenen un error mitjà d’aproximadament aquesta quantitat respecte als valors reals. En l’anterior model era de 5,9319 ºC.
  • Intercept: Té un valor de 87,60. Aquesta és la temperatura mitjana estimada (en ºC) quan tots els predictors són zero. En aquest cas no té un significat físic directe.
  • Altitud: El coeficient té un valor de -0,0046 i un valor-p \(<2e-16\). Aquests resultats indiquen que aquest coeficient és significatiu. A més, el signe és coherent, ja que a major altitud, la temperatura disminueix.
  • Latitud: Té un valor de -1,6323 i un valor-p \(<2e-16\). Això indica que per cada grau cap al nord, la temperatura baixa 2.2ºC, el que és coherent amb el clima (als Pirineus fa més fred en general).
  • Longitud: Té un valor de 0,5069 i un valor-p \(<2e-16\). Això indica que per cap a l’est, la temperatura augmenta una mica, però no afecta tant com la latitud.
  • HRM %: El coeficient té un valor de -0,1177 i un valor-p \(<2e-16\). Més humitat relativa implica un descens en la temperatura.
  • RS W/M2: Té un valor de 0,0110 i un valor-p \(<2e-16\). El seu valor positiu indica que per cada unitat d’augment en la radiació solar, la temperatura augmenta. Coherent físicament.
  • PPT mm: Té un valor de 0,5402 i un valor-p de 0.008442. El seu valor negatiu indica que un augment en la precipitació s’associa a una temperatura mitjana més baixa segons el model.
  • VVX (10 m) km/h: Té un valor de -0,0503 i un valor-p \(<2e-16\). El seu signe ha canviat respecte l’anterior model.
  • Variables temporals (Mes i Hora): Són altament significatives (\(<2e-16\)).
  • Significació Global: El valor-p de la prova és \(<2e-16\), que indica que el model és significatiu.
  • Ara no s’han exclòs tantes dades.
  • La multicol·linealitat és correcta.

5.1.2 Model No Supervisat

Fem servir el PCA per reduir la dimensionalitat

# Ens quedem amb les variables continues, no amb les temporals que són cícliques
variables_continues <- c(
    "Altitud (m)",
    "Latitud",
    "Longitud",
    "HRM %",
    "RS W/m2",
    "PPT mm",
    "VVX (10 m) km/h"
)
# Fem subset ometent valors NA
df_pca <- dataset_numeric[, c(variables_continues, "TM °C")]
df_pca <- na.omit(df_pca)

# Apliquem PCA
pca_resultat <- prcomp(
    df_pca[, variables_continues],
    center = TRUE, scale. = TRUE
)
# Mostrem la importància dels components
summary(pca_resultat)
## Importance of components:
##                           PC1    PC2    PC3    PC4    PC5     PC6     PC7
## Standard deviation     1.3315 1.2974 1.0685 1.0022 0.8600 0.66943 0.45819
## Proportion of Variance 0.2533 0.2405 0.1631 0.1435 0.1057 0.06402 0.02999
## Cumulative Proportion  0.2533 0.4937 0.6569 0.8003 0.9060 0.97001 1.00000
# Mostrem la relació entre variables i components (Rotation)
pca_resultat$rotation
##                         PC1         PC2         PC3         PC4        PC5
## Altitud (m)      0.19083568  0.54398825  0.49980239  0.25583127  0.1500679
## Latitud          0.07700351  0.71944521 -0.09996889  0.04767065  0.1144227
## Longitud        -0.07120927  0.39274413 -0.70021138 -0.29003237 -0.2425774
## HRM %           -0.62629515  0.10361530  0.14357910 -0.01310692 -0.1284971
## RS W/m2          0.56464704 -0.12720369 -0.25491501 -0.06771749  0.4609906
## PPT mm          -0.06691837  0.06982954  0.32483048 -0.89370610  0.2778619
## VVX (10 m) km/h  0.48685879  0.02084111  0.24247958 -0.21140258 -0.7741526
##                          PC6          PC7
## Altitud (m)     -0.043560176 -0.572702883
## Latitud          0.024555327  0.671198381
## Longitud         0.006682246 -0.455387820
## HRM %           -0.747444436  0.032354633
## RS W/m2         -0.618551050 -0.017548036
## PPT mm           0.095784964 -0.006190169
## VVX (10 m) km/h -0.216798406  0.112840597

 

En el diagrama de colze (Scree Plot) podem observar la variància explicada per cada component principal. Els dos primers components principals expliquen una gran part de la variància total (gairebé el 50%), i les següents components explicaran menys variància.

Percentatge de variància explicada per cada component principal
Component Principal Variància Explicada % Variància
Altitud (m) 1,77 25,3
Latitud 1,68 24,0
Longitud 1,14 16,3
HRM % 1,00 14,3
RS W/m2 0,74 10,6
PPT mm 0,45 6,4
VVX (10 m) km/h 0,21 3,0

5.1.2.1 Component Principal 1 (PC1)

PC1 explica la màxima variància del conjunt de dades.

  • HRM: -0.624 (Alt i negatiu)
  • VVX: +0.487 (Alt i positiu)
  • RS: +0.561 (Alt i positiu)

Un valor alt en PC1 indica una estació amb molta Radiació Solar (RS) i Vent Màxim (VVX), i baixa Humitat Relativa (HRM). Això es podria interpretar com a condicions de temps assolellat, sec i ventós.

5.1.2.2 Component Principal 2 (PC2)

PC2 explica la següent major quantitat de variància independent de PC2. Els pesos més alts i significatius són:

  • Latitud: +0.718 (Molt alt i positiu)
  • Altitud: +0.538 (Alt i positiu)
  • Longitud: +0.396 (Moderat i positiu)

Aquest component representa clarament la geografia. Un valor alt en PC2 indica una estació amb una Latitud alta (Nord) i Altitud alta (muntanya/interior).

5.1.2.3 Component Principal 4 (PC4)

  • PPT mm: -0.895 (Molt alt, negatiu i dominant)

També cal destacar aquest component, que està gairebé totalment dominat per la Precipitació (PPT mm). Essencialment, PC4 aïlla la variabilitat lligada als episodis de pluja de la resta de factors climàtics.

5.1.3 Gràfiques

Primer projectem la Temperatura Mitjana sobre els PCA1 i PCA2.

# Gràfic d'estacions per la Temperatura Mitjana
fviz_pca_ind(pca_resultat,
    geom.ind = "point",
    col.ind = df_pca$`TM °C`, # Pintem segons la temperatura
    # Blau (fred) a Vermell (calent)
    gradient.cols = c("cadetblue3", "bisque2", "salmon"),
    legend.title = "Temp. Mitjana (°C)",
    title = "Mapa climàtic: PC1 (meteorologia) vs PC2 (geografia)"
) +
    theme_minimal()

PCA1

  • Esquerre, valors negatius: En aquesta zona hi bufa menys el vent, toca menys el sol i hi ha alta humitat. Predomina temperatures moderades (color groguenc).
  • Dret, valors positius: Bufa més el vent, hi ha més sol i hi ha menys humitat.

Aquest eix separa les zones humides (esquerra) de zones assolellades i ventoses (dreta).

PCA2

  • Amunt, valors positius: Els punts son majoritariament blaus (per sota dels 0 graus). Aquí és on l’Altitud i la Latitud pugen (nord, alta muntanya).
  • Avall, valors negatius: Trobem una concentració de colors groguencs i taronja (més de 10ºC). Un PCA2 negatiu indica una Latitud i una l’Altitud més baixes. Són les zones principalment del sud i amb baixa altitud.

Aquest eix és el que determina la temperatura segons la geografia: a més alçada i latitud hi ha més fred.

Anàlisis per quadrants

  • Superior esquerre:
    • PC1 negatiu (alta humitat) i PC2 positiu (més altitud i latitud).
    • Trobem punts de colors blavosos i groguencs.
    • Zones de muntanya o del nord en dies humits o tapats.
  • Inferior esquerre:
    • PC1 negatiu (alta humitat) i PC2 negatiu (baixa altitud i latitud).
    • Colors groguencs, que corresponen a temperatures moderades.
    • Zones litorals o planes del sud amb humitat.
  • Superior dret:
    • PC1 positiu (molt sol i vent) i PC2 positiu (alta muntanya i nord).
    • Trobem aquí la màxima concentració de punts blaus, per tant les temperatures es desplomen.
    • Alta muntanya en dies clars i ventosos, on fa més fred.
  • Inferior dret:
    • PC1 positiu (sol i vent) i PC2 negatiu (zones baixes i sud).
    • Trobem aquí les temperatures més altes.
    • Són les zones més planes i del sud en dies assolellats i secs.

Gràfic Biplot

# Biplot de les variables i les observacions
fviz_pca_biplot(pca_resultat,
    label = "var",
    col.var = "black",
    col.ind = df_pca$`TM °C`,
    gradient.cols = c("cadetblue3", "bisque2", "salmon"),
    repel = TRUE,
    title = "Relació entre variables principals i la temperatura"
)

El biplot mostra com les variables influeixen en els dos primers eixos, explicant conjuntament gairebé un 50% de la variabilitat: 25.4% el PC1 i 24% el PC2 respectivament. Corrobora els anàlisis previs.

  • Eix PC1: Mostra el contrast entre la humitat i la radiació/vent. La fletxa d’HRM apunta a l’esquerra, oposada a RS i VVX, que apunten a la dreta. Això indica que els dies assolellats i ventosos solen ser secs, mentre que els humits tenen menys radiació i vent.
  • Eix PC2: Aquest eix està dominat per la Latitud i l’Altitud, les fletxes apuntant cap amunt sobre l’eix. La Longitud també influeix positivament en aquest eix.
  • Temperatura: S’observa una transició clara de colors càlids a la part inferior del gràfic (que correspon amb baixa altitud/latitud) cap a colors blavosos a la part superior (alta altitud/latitud).

5.2 Contrast d’Hipòtesi

Primerament aconseguim la mediana d’altituds.

mediana_global_altitud <- median(dataset_numeric$`Altitud (m)`, na.rm = TRUE)
mediana_global_altitud
## [1] 325

Pregunta: Existeix una diferència significativa en la Humitat Relativa Mitjana (HRM %) entre les estacions de baixa altitud (\(\le 325\text{m}\)) i les d’alta altitud (\(\ge 325\text{m}\))?

  • Hipòtesi Nul·la (\(H_0\)): \(\mu_{\text{Alta}} = \mu_{\text{Baixa}}\). Les mitjanes d’HRM entre el grup d’alta i baixa altitud són iguals.
  • Hipòtesi Alternativa (\(H_a\)): \(\mu_{\text{Alta}} > \mu_{\text{Baixa}}\). La mitjana d’HRM del grup d’alta altitud és més gran que la del grup de baixa altitud.
dataset_grups <- dataset_numeric |>
    select(`Altitud (m)`, `HRM %`) |>
    na.omit() |>
    mutate(Grup_Altitud = case_when(
        `Altitud (m)` < 325 ~ "Baixa",
        `Altitud (m)` >= 325 ~ "Alta",
        TRUE ~ "Altres"
    )) |>
    filter(Grup_Altitud != "Altres")

En una població de 189 individus, no podem aplicar el teorema del límit central, en el qual podem assumir una distrubució normal de les mitjanes en poblacions grans.

# Separa les dades en dos grups segons l'altitud
hrm_alta_altitud <- dataset_grups$`HRM %`[dataset_grups$Grup_Altitud == "Alta"]
hrm_baixa_altitud <- dataset_grups$`HRM %`[dataset_grups$Grup_Altitud == "Baixa"]
# Mostra la normalitat de les mostres en la mateixa gràfica
par(mfrow = c(1, 2))
qqnorm(hrm_alta_altitud, main = "Q-Q Plot HRM Alta Altitud")
qqline(hrm_alta_altitud, col = "red")
qqnorm(hrm_baixa_altitud, main = "Q-Q Plot HRM Baixa Altitud")
qqline(hrm_baixa_altitud, col = "red")

par(mfrow = c(1, 1))
# Calcula asimetria i curtosi
c(skewness(hrm_alta_altitud), skewness(hrm_baixa_altitud))
## [1] -0.5029054 -0.3531036
c(kurtosis(hrm_alta_altitud), kurtosis(hrm_baixa_altitud))
## [1] 2.302179 2.183348

Un cop comprovada la normalitat de les mostres (visualment amb els gràfics Q-Q; numericament amb l’asimetria: la normal té una asimetria de 0, una asimetria entre -0.5 i +0.5 s’acostuma a considerar simètrica en la pràctica, -0,53 indica una lleugera cua més llarga cap a l’esquerra, però res dramàtic; numèricament amb la curtosi: la normal té curtosi igual a 3, 2.30 és una mica més baixa, distribució lleugerament platicúrtica, però continua sent molt propera a la normal), abans d’aplicar el test d’hipòtesi de dues mostres independents sobre la humitat d’estacions d’alta i baixa altitud amb variàncies desconegudes, comprovem l’homoscedasticitat amb la prova d’igualtat de variàncies.

# Test d'homoscedasticitat
var_test <- var.test(
    hrm_alta_altitud, hrm_baixa_altitud,
    alternative = "two.sided"
)
if (var_test$p.value < 0.05) {
    print("Les variàncies no són iguals, s'utilitza el test de Welch")
    var_equal <- FALSE
} else {
    print("Les variàncies són iguals, s'utilitza el test de Student")
    var_equal <- TRUE
}
## [1] "Les variàncies no són iguals, s'utilitza el test de Welch"
print(var_test)
## 
##  F test to compare two variances
## 
## data:  hrm_alta_altitud and hrm_baixa_altitud
## F = 1.2213, num df = 1575629, denom df = 1588943, p-value < 2.2e-16
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  1.218593 1.223987
## sample estimates:
## ratio of variances 
##           1.221286
# Prova T de Welch o Student segons homoscedasticitat
prova_t <- t.test(
    hrm_alta_altitud, hrm_baixa_altitud,
    alternative = "greater",
    var.equal = var_equal
)
print(prova_t)
## 
##  Welch Two Sample t-test
## 
## data:  hrm_alta_altitud and hrm_baixa_altitud
## t = 13.25, df = 3128091, p-value < 2.2e-16
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  0.2749149       Inf
## sample estimates:
## mean of x mean of y 
##  72.64778  72.33390
  • Significació Estadística: Atès que el valor de p és 2,250994e-40, que és menor que el nivell de significació estàndard (\(\alpha = 0.05\)), es rebutja la hipòtesi nul·la. Per tant, establim que hi ha una diferència significativa en la humitat relativa mitjana entre les estacions de baixa i alta altitud, on les estacions d’alta altitud tenen una humitat mitjana més alta.
  • Diferència de Mitjanes:
    • Mitjana HRM Baixa Altitud: 72,33%
    • Mitjana HRM Alta Altitud: 72,65%

6 Resolució del problema

7 Codi

Accés al repositori amb el codi disponible al següent enllaç: https://github.com/norabolivar/PRACT1_Tipologia.git

8 Vídeo

L’enllaç al vídeo: Google Drive

9 Contribucions

Taula de contribucions i signatures del projecte
Contribucions Signatura
Investigació prèvia N.B., R.B.
Redacció de les respostes N.B., R.B.
Desenvolupament del codi N.B., R.B.
Participació al vídeo N.B., R.B.