Análisis climático: distribución de frecuencia

Para este ejercicio usaremos datos de la temperatura media normal obtenidos de la estación meteorológica de ÁLAMOS, SONORA, del SMN: https://smn.conagua.gob.mx/tools/RESOURCES/Normales5110/NORMAL26002.TXT

Importar datos

ALAMOS <- c(18.5,19.1,20.2,22.1,24.7,28.1,28.0,27.6,26.8,24.8,21.6, 19.1)
head(ALAMOS)
## [1] 18.5 19.1 20.2 22.1 24.7 28.1
library(fdth) # Importar paquete / libreria
## 
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
## 
##     sd, var

Tabla de frecuencias

dist <- fdt(ALAMOS, breaks = "Sturges")
#usando la regla de Sturges
dist
##     Class limits f   rf rf(%) cf  cf(%)
##  [18.315,20.328) 4 0.33 33.33  4  33.33
##  [20.328,22.341) 2 0.17 16.67  6  50.00
##  [22.341,24.355) 0 0.00  0.00  6  50.00
##  [24.355,26.368) 2 0.17 16.67  8  66.67
##  [26.368,28.381) 4 0.33 33.33 12 100.00
#f= frecuencia absoluta
#rf= frecuencia relativa
#rf(%) frecuencia relativa porcentual
#cf= frecuencia acumulada
#cf(%)=frecuencia acumulada porcentual

Ordenar numeros de menor a mayor

sort(ALAMOS)
##  [1] 18.5 19.1 19.1 20.2 21.6 22.1 24.7 24.8 26.8 27.6 28.0 28.1

Histogramas y polígonos de frecuencia

Histogramas

plot(dist, type = "fh") #Histograma de frecuencias absolutas

plot(dist, type = "rfh") #Histograma de frecuencias relativas

plot(dist, type = "cfh") #Histograma de frecuencias acumuladas

Polígonos

plot(dist, type = "fp") #Polígono de frecuencias absolutas

plot(dist, type = "rfp") #Polígono de frecuencias relativas

plot(dist, type = "cfp") #Polígono de frecuencias acumuladas

Medidas de tendencia central

Media

La media de un conjunto de números, algunas ocasiones simplemente llamda el promedio , es la suma de los datos dividida entre el número total de datos.

mean(ALAMOS)
## [1] 23.38333

Mediana

La mediana de un conjunto de números es el número medio en el conjunto (después que los números han sido arreglados del menor al mayor) – o, si hay un número par de datos, la mediana es el promedio de los dos números medios.

median(ALAMOS)
## [1] 23.4

Moda

library(modeest)
## 
## Attaching package: 'modeest'
## The following object is masked from 'package:fdth':
## 
##     mfv
mlv(ALAMOS, method="mfv")[1]
## [1] 19.1

Cuartiles, valor máximo, valor mínimo

summary(ALAMOS)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.50   19.93   23.40   23.38   27.00   28.10

Gráfico de caja y bigote

boxplot(ALAMOS)

Medidas de dispersión

var(ALAMOS) #varianza
## [1] 13.84152
sd(ALAMOS) #desviación estándar
## [1] 3.720419
  • Gráfico de dispersión
plot(ALAMOS)

Estadística inferencial

Regresión lineal

Relacion entre la temperatura y la precipitación ¿Son los meses más cálidos en Álamos los meses que más llueve? ¿A mayor temperatura mayor precipitación?

Para esto declararemos 2 variables: TEMPERATURA y PRECIPITACION

TEMPERATURA <- ALAMOS
PRECIPITACION <- c(35.0,17.9,17.8,1.9,      3.9,25.5,184.4,198.2,86.3,53.1,26.3,37.0)

Crear una matriz, data frame con ambas series de datos

meteo <- data.frame(TEMPERATURA, PRECIPITACION)
head(meteo)
##   TEMPERATURA PRECIPITACION
## 1        18.5          35.0
## 2        19.1          17.9
## 3        20.2          17.8
## 4        22.1           1.9
## 5        24.7           3.9
## 6        28.1          25.5

Matriz de diagramas de dispersión

pairs(meteo)

Matriz de coeficientes de correlación

  • correlación pearson
cor(meteo)
##               TEMPERATURA PRECIPITACION
## TEMPERATURA     1.0000000     0.6129532
## PRECIPITACION   0.6129532     1.0000000

Cálculo y representacion de la recta de mínimos cuadrados

El comando básico es lm (linear models).

El primer argumento de este comando es una fórmula y ~ x en la que se especifica cuál es la variable respuesta o dependiente (y) y cuál es la variable regresora o independiente (x).

El segundo argumento, llamado “data” especifica cuál es el fichero en el que se encuentran las variables.

El resultado lo guardamos en un objeto llamado regresion. Este objeto es una lista que contiene toda la información relevante sobre el análisis. Mediante el comando summary obtenemos un resumen de los principales resultados:

regresion <-lm(PRECIPITACION ~ TEMPERATURA, data=meteo)
summary(regresion)
## 
## Call:
## lm(formula = PRECIPITACION ~ TEMPERATURA, data = meteo)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -83.524 -25.112  -6.505  27.865  94.662 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) -199.274    105.783  -1.884   0.0890 .
## TEMPERATURA   10.971      4.472   2.453   0.0341 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 55.18 on 10 degrees of freedom
## Multiple R-squared:  0.3757, Adjusted R-squared:  0.3133 
## F-statistic: 6.018 on 1 and 10 DF,  p-value: 0.03407

Los parámetros de la ecuación de la recta de mínimos cuadrados que relaciona la PRECIPITACION en feuncion de la TEMPERATURA vienen dados por la columna ´Estimate´ de la tabla ´Coefficients´ de la salida anterior. Por lo tanto, en este ejemplo la ecuación de la recta de mínimos cuadrados es:

\[ Y = -199.274 + 10.971 x \]

Los siguientes comandos representan la nube de puntos (comando plot) y añaden la representación gráfica de la recta de mínimos cuadrados (comando abline aplicado al objeto generado por lm):

plot(meteo$TEMPERATURA, meteo$PRECIPITACION, xlab = "Temperatura", ylab="Precipitación")
abline(regresion)