Conjunto de datos:

El conjunto de datos contiene un total de 11,796 registros simulados que representan mediciones meteorológicas en distintos escenarios climáticos y geográficos. Los datos están diseñados para propósitos analíticos y de modelado predictivo

  • Temperature (°C):
    Temperatura ambiental medida en grados Celsius, abarcando desde valores extremadamente fríos hasta calores extremos.

  • Humidity (%):
    Porcentaje de humedad relativa.

  • Wind Speed (km/h):
    Velocidad del viento en kilómetros por hora.

  • Precipitation (%):
    Porcentaje de precipitación esperada o registrada.

  • Atmospheric Pressure (hPa):
    Presión atmosférica medida en hectopascales, cubriendo un amplio rango de condiciones meteorológicas.

  • UV Index:
    Índice ultravioleta que indica la intensidad de la radiación solar. Varía desde niveles bajos hasta extremadamente peligrosos.

  • Visibility (km):
    Visibilidad horizontal medida en kilómetros, desde condiciones de neblina densa hasta atmósferas excepcionalmente claras.

Análisis exploratorio:

describe(datos)
  • La mayoría de las variables presentan asimetrías moderadas, tanto positivas como negativas, lo que sugiere distribuciones no perfectamente normales.

  • La presión atmosférica destaca por tener una curtosis muy alta (12.30), lo que indica una distribución con colas más pesadas de lo normal.

  • Variables como velocidad del viento, índice UV y visibilidad presentan sesgo positivo (asimetría a la derecha), típico de variables que no pueden tomar valores negativos.

Medias de cada variable

apply(datos, MARGIN = 2, FUN = mean)
##          Temperature             Humidity           Wind Speed 
##            18.291879            67.769159             9.436462 
##    Precipitation (%) Atmospheric Pressure             UV Index 
##            50.730248          1004.562018             3.636572 
##      Visibility (km) 
##             5.329307

Estandarización de Variables

Dado que las variables incluidas en el análisis factorial presentan distintas unidades de medida (°C, %, hPa, km/h, etc.), es necesario estandarizarlas para garantizar que todas tengan el mismo peso en la extracción de factores.

La estandarización se realiza usando la siguiente fórmula:

\[ Z_{ij} = \frac{X_{ij} - \bar{X}_j}{s_j} \]

donde:

  • \(X_{ij}\) es el valor original de la observación \(i\) en la variable \(j\),

  • \(\bar{X}_j\) es la media de la variable \(j\),

  • \(s_j\) es la desviación estándar de la variable \(j\).

datos_est <- scale(datos)
head(datos_est)
##      Temperature   Humidity   Wind Speed Precipitation (%) Atmospheric Pressure
## [1,]  -0.2762715  0.2739466  0.009947903         1.0035630            0.3138923
## [2,]   1.3329975  1.4784891 -0.146617096         0.6505319            0.3444891
## [3,]   0.7536607 -0.1973962 -0.381464594        -1.1146231            0.7101461
## [4,]   1.2686268  0.7976607 -1.242572089         1.0035630            1.0878412
## [5,]   0.5605484  0.3263180  1.184185396         0.4900633           -0.6968058
## [6,]   0.8824022 -0.6687389 -0.929442091        -0.7936859            0.2742669
##        UV Index Visibility (km)
## [1,] -0.4528591     -0.59738572
## [2,]  0.9307010      1.52528048
## [3,]  0.3772770      0.05574234
## [4,]  0.9307010     -1.41379580
## [5,] -0.7295711     -0.92394975
## [6,] -0.4528591     -0.10753967

Análisis de Correlación:

## Call:corr.test(x = datos_est)
## Correlation matrix 
##                      Temperature Humidity Wind Speed Precipitation (%)
## Temperature                 1.00    -0.37      -0.14             -0.46
## Humidity                   -0.37     1.00       0.39              0.65
## Wind Speed                 -0.14     0.39       1.00              0.44
## Precipitation (%)          -0.46     0.65       0.44              1.00
## Atmospheric Pressure        0.44    -0.24      -0.14             -0.39
## UV Index                    0.45    -0.48      -0.15             -0.45
## Visibility (km)             0.36    -0.53      -0.33             -0.55
##                      Atmospheric Pressure UV Index Visibility (km)
## Temperature                          0.44     0.45            0.36
## Humidity                            -0.24    -0.48           -0.53
## Wind Speed                          -0.14    -0.15           -0.33
## Precipitation (%)                   -0.39    -0.45           -0.55
## Atmospheric Pressure                 1.00     0.26            0.18
## UV Index                             0.26     1.00            0.45
## Visibility (km)                      0.18     0.45            1.00
## Sample Size 
## [1] 11796
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##                      Temperature Humidity Wind Speed Precipitation (%)
## Temperature                    0        0          0                 0
## Humidity                       0        0          0                 0
## Wind Speed                     0        0          0                 0
## Precipitation (%)              0        0          0                 0
## Atmospheric Pressure           0        0          0                 0
## UV Index                       0        0          0                 0
## Visibility (km)                0        0          0                 0
##                      Atmospheric Pressure UV Index Visibility (km)
## Temperature                             0        0               0
## Humidity                                0        0               0
## Wind Speed                              0        0               0
## Precipitation (%)                       0        0               0
## Atmospheric Pressure                    0        0               0
## UV Index                                0        0               0
## Visibility (km)                         0        0               0
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option
  • Se observa que muchas de las variables están moderadamente correlacionadas (por ejemplo, Humedad con Precipitación r = 0.65, Precipitación con Visibilidad r = -0.55).

  • Todas las correlaciones son estadísticamente significativas (p < 0.05), lo cual sugiere que los datos cumplen el supuesto básico del análisis factorial.

  • La existencia de varias correlaciones por encima de ±0.3 indica que el análisis factorial puede ser apropiado.

Supuestos

Esfericidad de Barlett

  • \(\mathbf{H}_0\): \(|\mathbf{R}_p| = 1\) (las variables no están correlacionadas)
  • \(\mathbf{H}_1\): \(|\mathbf{R}_p| < 1\) (existen correlaciones entre variables)
esfer$p.value[1]
## [1] 0

Normalidad multivariada

library(MVN)
mvn(datos_est, mvnTest = "mardia")
## $multivariateNormality
##              Test        Statistic p value Result
## 1 Mardia Skewness 57047.3957646395       0     NO
## 2 Mardia Kurtosis 323.249135230144       0     NO
## 3             MVN             <NA>    <NA>     NO
## 
## $univariateNormality
##               Test             Variable Statistic   p value Normality
## 1 Anderson-Darling     Temperature       151.5200  <0.001      NO    
## 2 Anderson-Darling       Humidity         81.1966  <0.001      NO    
## 3 Anderson-Darling      Wind Speed       117.3467  <0.001      NO    
## 4 Anderson-Darling  Precipitation (%)    286.8829  <0.001      NO    
## 5 Anderson-Darling Atmospheric Pressure  326.4135  <0.001      NO    
## 6 Anderson-Darling       UV Index        635.5872  <0.001      NO    
## 7 Anderson-Darling   Visibility (km)     119.8162  <0.001      NO    
## 
## $Descriptives
##                          n          Mean Std.Dev      Median       Min      Max
## Temperature          11796  6.072394e-17       1  0.17432384 -2.722360 2.684784
## Humidity             11796  4.586159e-18       1  0.06446089 -2.501739 1.687975
## Wind Speed           11796 -3.780332e-17       1 -0.14661710 -1.477420 6.115983
## Precipitation (%)    11796 -6.870437e-18       1  0.10493855 -1.628123 1.581250
## Atmospheric Pressure 11796  7.547326e-16       1  0.13457490 -6.746950 4.025637
## UV Index             11796 -5.314656e-17       1 -0.45285905 -1.006283 2.867685
## Visibility (km)      11796 -1.766273e-17       1 -0.10753967 -1.740360 4.790921
##                            25th      75th       Skew   Kurtosis
## Temperature          -0.9199791 0.7536607 -0.2909897 -0.7333972
## Humidity             -0.5639961 0.7452893 -0.5092710 -0.2581250
## Wind Speed           -0.6945946 0.6362079  1.2312660  3.1491167
## Precipitation (%)    -1.0504357 0.9072818 -0.1004910 -1.4071162
## Atmospheric Pressure -0.4836312 0.5847493 -2.1743099 12.3040589
## UV Index             -0.7295711 0.6539890  1.0110683 -0.0911406
## Visibility (km)      -0.7606677 0.7088704  1.0980012  2.5939307

Desde un punto de vista estadístico, se pueden obviar los supuestos de normalidad, homocedasticidad y linealidad siendo conscientes que su incumplimiento produce una disminución en las correlaciones observadas. En realidad sólo es necesaria la normalidad cuando se aplica una prueba estadística a la significación de los factores;sin embargo raramente se utilizan estas pruebas. Es deseable que haya cierto grado de multicolinealidad, porque uno de los objetivos es identificar series de variables interrelacionadas.

Indicador Kaiser-Meyer-Olkin KMO y MSAj

El índice de Kaiser-Meyer-Olkin (KMO) evalúa la adecuación de los datos para aplicar un análisis factorial, midiendo la proporción de varianza que puede ser común entre las variables. Los valores posibles están entre 0 y 1.

  • Valores cercanos a 1 indican que los patrones de correlación son relativamente compactos, lo que sugiere que el análisis factorial debería producir factores distintos y confiables.
KMO(datos_est)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = datos_est)
## Overall MSA =  0.83
## MSA for each item = 
##          Temperature             Humidity           Wind Speed 
##                 0.82                 0.83                 0.82 
##    Precipitation (%) Atmospheric Pressure             UV Index 
##                 0.81                 0.76                 0.85 
##      Visibility (km) 
##                 0.87

Tanto el KMO general como los MSA individuales respaldan la decisión de aplicar un análisis factorial, ya que superan los umbrales mínimos recomendados.

Conclusión

check_factorstructure(datos_est)
## # Is the data suitable for Factor Analysis?
## 
## 
##   - Sphericity: Bartlett's test of sphericity suggests that there is sufficient significant correlation in the data for factor analysis (Chisq(21) = 26225.57, p < .001).
##   - KMO: The Kaiser, Meyer, Olkin (KMO) overall measure of sampling adequacy suggests that data seems appropriate for factor analysis (KMO = 0.83). The individual KMO scores are: Temperature (0.82), Humidity (0.83), Wind Speed (0.82), Precipitation (%) (0.81), Atmospheric Pressure (0.76), UV Index (0.85), Visibility (km) (0.87).

Análisis Factorial

En este análisis, se extrajeron dos factores principales utilizando la función principal en R, sin rotación.

facto.sin.rota_2 <- principal(r=datos_est,nfactors=2,rotate="none")
print(facto.sin.rota_2)
## Principal Components Analysis
## Call: principal(r = datos_est, nfactors = 2, rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                        PC1   PC2   h2   u2 com
## Temperature           0.67  0.48 0.68 0.32 1.8
## Humidity             -0.79  0.23 0.68 0.32 1.2
## Wind Speed           -0.52  0.58 0.60 0.40 2.0
## Precipitation (%)    -0.84  0.11 0.72 0.28 1.0
## Atmospheric Pressure  0.52  0.58 0.60 0.40 2.0
## UV Index              0.69  0.18 0.50 0.50 1.1
## Visibility (km)       0.73 -0.24 0.59 0.41 1.2
## 
##                        PC1  PC2
## SS loadings           3.32 1.07
## Proportion Var        0.47 0.15
## Cumulative Var        0.47 0.63
## Proportion Explained  0.76 0.24
## Cumulative Proportion 0.76 1.00
## 
## Mean item complexity =  1.5
## Test of the hypothesis that 2 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.11 
##  with the empirical chi square  5894.45  with prob <  0 
## 
## Fit based upon off diagonal values = 0.93

Las cargas factoriales de cada variable indican qué tanto contribuye a cada factor. En este caso:

  • Factor 1 (PC1) está altamente influenciado por las variables Precipitación, Humedad, y Temperatura.

  • Factor 2 (PC2) está relacionado principalmente con la Velocidad del viento y Presión atmosférica.

Propiedades de los Factores

Cargas totales (SS loadings):

  • PC1: 3.32

  • PC2: 1.07

Proporción de varianza explicada:

  • PC1: 47%

  • PC2: 15%

Varianza acumulada:

  • 47% para PC1 y 63% para los dos factores combinados.

La proporción explicada indica que el primer componente explica un 76% de la varianza total, mientras que el segundo componente explica un 24%.

Ajuste del Modelo

El valor Root Mean Square of Residuals (RMSR) es 0.11, que es un valor aceptable, ya que los valores cercanos a 0 indican un buen ajuste del modelo.

El chi-cuadrado empírico es 5894.45 con un valor p < 0, lo que sugiere que el modelo es adecuado para los datos.

Finalmente, el ajuste basado en valores fuera de la diagonal es 0.93, lo que también respalda que el modelo ajusta bien a los datos.

Comunalidades y unicidad

Las comunalidades representan la proporción de varianza de una variable que es explicada por los factores extraídos. Mientras que las unicidades indican la proporción de varianza que no está explicada por los factores y que queda como residual.
  • Comunalidad (h²):
    • La variable Precipitación (%) tiene la mayor comunalidad (0.724), lo que significa que un 72.4% de su varianza es explicada por los factores extraídos.
    • Las variables UV Index y Visibilidad tienen las comunalidades más bajas, con 0.503 y 0.587, respectivamente. Esto indica que estas variables están menos representadas por los factores.
  • Unicidad (u²):
    • Las variables con mayores unicidades (como UV Index y Visibilidad) tienen un mayor porcentaje de varianza no explicada por los factores, lo que podría indicar que tienen una relación más débil con los factores extraídos.

Cargas factoriales

Las cargas factoriales son las correlaciones entre las variables originales y los factores extraídos.

facto.sin.rota_2$loadings
## 
## Loadings:
##                      PC1    PC2   
## Temperature           0.670  0.484
## Humidity             -0.791  0.232
## Wind Speed           -0.515  0.582
## Precipitation (%)    -0.844  0.107
## Atmospheric Pressure  0.515  0.582
## UV Index              0.687  0.179
## Visibility (km)       0.728 -0.238
## 
##                  PC1   PC2
## SS loadings    3.320 1.066
## Proportion Var 0.474 0.152
## Cumulative Var 0.474 0.627
scor=facto.sin.rota_2$scores
round(cor(scor),3)
##     PC1 PC2
## PC1   1   0
## PC2   0   1
  • PC1 (Primer Factor Principal):
    • Las variables con cargas altas en el PC1 son Precipitación (%) (-0.844), Visibilidad (km) (0.728), Temperatura (0.670), Humedad (-0.791), UV Index (0.687). Estas variables están fuertemente asociadas con el primer factor.
  • PC2 (Segundo Factor Principal):
    • Las variables con mayores cargas en PC2 son Vel. Viento (0.582) y Presión Atm. (0.582), lo que sugiere que estas dos variables están asociadas con el segundo factor.

Analisis con Rotación

Ahora se ha aplicado un análisis factorial exploratorio (AFE) con extracción de factores comunes y rotación Varimax para facilitar la interpretación de las dimensiones subyacentes en los datos meteorológicos.

facto.con.rota_2 <- principal(r=datos_est,nfactors=2,rotate="varimax")
print(facto.con.rota_2)
## Principal Components Analysis
## Call: principal(r = datos_est, nfactors = 2, rotate = "varimax")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                        RC1   RC2   h2   u2 com
## Temperature          -0.21  0.80 0.68 0.32 1.1
## Humidity              0.76 -0.33 0.68 0.32 1.4
## Wind Speed            0.77  0.12 0.60 0.40 1.0
## Precipitation (%)     0.72 -0.46 0.72 0.28 1.7
## Atmospheric Pressure -0.03  0.78 0.60 0.40 1.0
## UV Index             -0.41  0.58 0.50 0.50 1.8
## Visibility (km)      -0.71  0.28 0.59 0.41 1.3
## 
##                        RC1  RC2
## SS loadings           2.40 1.98
## Proportion Var        0.34 0.28
## Cumulative Var        0.34 0.63
## Proportion Explained  0.55 0.45
## Cumulative Proportion 0.55 1.00
## 
## Mean item complexity =  1.3
## Test of the hypothesis that 2 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.11 
##  with the empirical chi square  5894.45  with prob <  0 
## 
## Fit based upon off diagonal values = 0.93

El análisis con rotación Varimax ha permitido una interpretación más clara de las variables en relación con los dos factores extraídos. El primer factor (RC1) está asociado principalmente con variables relacionadas con las condiciones meteorológicas, mientras que el segundo factor (RC2) está asociado más con la temperatura y las variables atmosféricas.

Comparación

facto.sin.rota_2$ Vaccounted 
##                             PC1       PC2
## SS loadings           3.3196019 1.0659113
## Proportion Var        0.4742288 0.1522730
## Cumulative Var        0.4742288 0.6265019
## Proportion Explained  0.7569472 0.2430528
## Cumulative Proportion 0.7569472 1.0000000
facto.con.rota_2$ Vaccounted
##                             RC1       RC2
## SS loadings           2.4019249 1.9835884
## Proportion Var        0.3431321 0.2833698
## Cumulative Var        0.3431321 0.6265019
## Proportion Explained  0.5476953 0.4523047
## Cumulative Proportion 0.5476953 1.0000000

Aunque el modelo sin rotación concentra más varianza en el primer factor, la rotación varimax logra distribuir más equilibradamente la varianza entre los dos factores, lo que facilita la interpretación de cada uno.

facto.sin.rota_2$communality
##          Temperature             Humidity           Wind Speed 
##            0.6830770            0.6793805            0.6046930 
##    Precipitation (%) Atmospheric Pressure             UV Index 
##            0.7244125            0.6039972            0.5033687 
##      Visibility (km) 
##            0.5865843
facto.con.rota_2$communality
##          Temperature             Humidity           Wind Speed 
##            0.6830770            0.6793805            0.6046930 
##    Precipitation (%) Atmospheric Pressure             UV Index 
##            0.7244125            0.6039972            0.5033687 
##      Visibility (km) 
##            0.5865843

Las comunalidades no cambian con la rotación, lo cual es esperado: la rotación no altera la cantidad total de varianza explicada por cada variable, solo redistribuye las cargas para facilitar su interpretación.

Correlación entre factores

Anexo

Alternativa para numero de factores

Otra manera de determinar la cantidad óptima de factores a retener en el análisis factorial se hace a traves del Análisis Paralelo de Horn utilizando la matriz de correlaciones de los datos estandarizados. Este método compara los valores propios (eigenvalues) obtenidos de los datos reales con aquellos generados aleatoriamente bajo la hipótesis de que no existe estructura factorial subyacente.

library(paran)
paran(datos_est,iterations=5000,graph=TRUE,color=4)
## 
## Using eigendecomposition of correlation matrix.
## Computing: 10%  20%  30%  40%  50%  60%  70%  80%  90%  100%
## 
## 
## Results of Horn's Parallel Analysis for component retention
## 5000 iterations, using the mean estimate
## 
## -------------------------------------------------- 
## Component   Adjusted    Unadjusted    Estimated 
##             Eigenvalue  Eigenvalue    Bias 
## -------------------------------------------------- 
## 1           3.285287    3.319601      0.034314
## 2           1.045312    1.065911      0.020598
## -------------------------------------------------- 
## 
## Adjusted eigenvalues > 1 indicate dimensions to retain.
## (2 components retained)

Según el criterio del análisis paralelo, se deben retener los factores cuyos valores propios ajustados sean mayores a 1. En este caso, tanto el primer como el segundo componente cumplen con este requisito. Por lo tanto, se concluye que:

  • La solución factorial óptima está compuesta por dos factores, lo cual coincide con los resultados obtenidos previamente mediante el análisis factorial con y sin rotación.