Precipitación
Cargamos las librería
library(PASWR)
## Loading required package: lattice
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
Carga los datos (Conjunto de datos)
setwd("/cloud/project")
read_csv("weatherdataANTISANA.csv")
## Rows: 366 Columns: 10
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Date
## dbl (9): Longitude, Latitude, Elevation, Max Temperature, Min Temperature, P...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## # A tibble: 366 × 10
## Date Longitude Latitude Elevation `Max Temperature` `Min Temperature`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 01/01/2012 -78.1 -0.468 4048 16.1 6.91
## 2 01/02/2012 -78.1 -0.468 4048 15.5 9.23
## 3 01/03/2012 -78.1 -0.468 4048 11.5 8.69
## 4 01/04/2012 -78.1 -0.468 4048 12.0 9.53
## 5 01/05/2012 -78.1 -0.468 4048 11.7 7.90
## 6 01/06/2012 -78.1 -0.468 4048 12.1 7.84
## 7 01/07/2012 -78.1 -0.468 4048 13.1 6.39
## 8 01/08/2012 -78.1 -0.468 4048 11.5 9.76
## 9 01/09/2012 -78.1 -0.468 4048 12.9 10.1
## 10 01/10/2012 -78.1 -0.468 4048 13.4 8.41
## # ℹ 356 more rows
## # ℹ 4 more variables: Precipitation <dbl>, Wind <dbl>,
## # `Relative Humidity` <dbl>, Solar <dbl>
datos3 <- read.csv("weatherdataANTISANA.csv", header = T, sep = ",", dec = ".")
EXTRAER LA VARIABLE CONTINUA
Precipitacion<-datos3$Precipitation
hist(Precipitacion,freq = FALSE,main = "Gráfica No.7.1: Modelo de probabilidad - Exponencial", xlab = "Precipitacion (mm)", ylab = "Densidad de probabilidad")
library(MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
#Realizamo la gráfica
histograma<-hist(Precipitacion,freq = FALSE,main="Gráfica 7.2.Modelo de probabilidad exponencial",
xlab="Precipitacion (mm)",ylab="Densidad de probabilidad",col="salmon")
Conjeturamos el modelo
# Histograma con densidades
hist(Precipitacion, freq = FALSE,
main = "Gráfico N° 7.3:Modelo de probabilidad - Exponencial",
xlab = "Precipitación (mm)", ylab = "Densidad de probabilidad",
col = "salmon", border = "white")
# Parámetro lambda
lambda <- 1 / mean(Precipitacion)
# Curva de la distribución exponencial
x <- seq(0, max(Precipitacion), length.out = 1000)
y <- dexp(x, lambda)
# Dibujar la curva sobre el histograma
lines(x, y, col = "skyblue3", lwd = 2)
Entonces, se observa el modelo, para comprobar la correlación entre la frecuencia observada (muestra) y la frecuencia esperada (población),se realizan los test de Pearson y de Chi-cuadrado que son muy eficácez al momento de evaluar un modelo.
#Frecuencia simple observada
Fo<-histograma$counts
Fo
## [1] 150 92 58 27 23 10 4 0 1 1
#Frecuencia simple esperada
P<-c(0)
for (i in 1:10)
{P[i] <-(pexp(histograma$breaks[i+1],lambda)-
pexp(histograma$breaks[i],lambda))}
Fe<-P*length(Precipitacion)
sum(Fe)
## [1] 364.9422
Test de Pearson
Mide el grado de correlación entre la frecuencia observada y la frecuencia esperada.
plot(Fo,Fe, main="Gráfica 7.4:Correlación de las frecuencias del modelo exponencial",col="skyblue3",xlab = "Frecuencia Observada",ylab="Frecuencia Esperada")
Correlación<-cor(Fo,Fe)*100
Correlación
## [1] 99.55792
Test de Chi-Cuadrado El test de Chi-Cuadrado utiliza dos parámetro: grados de libertad (se refiere al numero de valores libres de variar dentro de intervalos de la variable, k-1), y nivel de significancia (probabilidad de cometer un error, valores de 0.05,0.1,0.15)¨
#Test de Chi-Cuadrado
#Grados de libertad
grados_libertad <- length(histograma$counts)-1
grados_libertad
## [1] 9
# Nivel de significancia
nivel_significancia <- 0.05
#Frecuencia Observada porcentual
Fo<-((histograma$counts)/length(Precipitacion))*100
Fo
## [1] 40.983607 25.136612 15.846995 7.377049 6.284153 2.732240 1.092896
## [8] 0.000000 0.273224 0.273224
sum(Fo)
## [1] 100
#Frecuencia esperada
Fe<-P*100
Fe
## [1] 44.2693744 24.6715993 13.7496366 7.6627585 4.2705033 2.3799782
## [7] 1.3263767 0.7391980 0.4119597 0.2295877
sum(Fe)
## [1] 99.71097
x2<-sum((Fe-Fo)^2/Fe)
x2
## [1] 2.420161
# Calcular el umbral de aceptación
umbral_aceptacion <- qchisq(1 - nivel_significancia, grados_libertad)
umbral_aceptacion
## [1] 16.91898
x2<umbral_aceptacion
## [1] TRUE
RESUMEN TEST DE BONDAD
Variable<-c("Precipitación (mm)")
tabla_resumen<-data.frame(Variable,round(Correlación,2),round(x2,2),round(umbral_aceptacion,2))
colnames(tabla_resumen)<-c("Variable","Test Pearson (%)","Chi Cuadrado","Umbral de aceptación")
library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Tabla 1.Resumen de test de bondad al modelo de probabilidad")
Variable | Test Pearson (%) | Chi Cuadrado | Umbral de aceptación |
---|---|---|---|
Precipitación (mm) | 99.56 | 2.42 | 16.92 |
Cálculo de probabilidades
¿Cuál es la probabilidad de que la cantidad de precipitación este entre 0 mm a 10 mm de agua ?
probabilidad <- pexp(10, lambda) - pexp(0, lambda)
probabilidad * 100
## [1] 44.26937
# Curva de densidad exponencial
plot(x, dexp(x, lambda), col = "skyblue3", lwd = 2,
xlim = c(0, 100),
main = "Gráfica 7.5:Modelo de probabilidad exponencial - Probabilidad entre 0 y 10 mm",
ylab = "Densidad de probabilidad",
xlab = "Precipitación (mm)")
# Definir el rango de la sección (0 a 10 mm)
x_section <- seq(0, 10, by = 0.1)
y_section <- dexp(x_section, lambda)
# Pintar la sección de la curva
lines(x_section, y_section, col = "red", lwd = 2)
# Pintar el área debajo de la curva en rojo semitransparente
polygon(c(x_section, rev(x_section)),
c(y_section, rep(0, length(y_section))),
col = rgb(1, 0, 0, 0.6))
# Añadir leyenda
legend("topright",
legend = c("Modelo exponencial", "Área de probabilidad (0-10 mm)"),
col = c("skyblue3", "red"),
lwd = 2, pch = c(NA, 15))
# Calcular y mostrar la probabilidad
probabilidad <- pexp(10, lambda) - pexp(0, lambda)
cat("Probabilidad entre 0 y 10 mm:", round(probabilidad * 100, 2), "%\n")
## Probabilidad entre 0 y 10 mm: 44.27 %
Teorema de límite central
El teorema de límite central nos indica que, aunque las variables individuales no sigan una distribución normal, la distribución de las medias aritméticas de n conjuntos muestrales, ses normal, y por lo tanto, podemos obtener la media poblacional mediante intervalos de confianza
# Nuestra media aritmetica muestral es nuestro "u"
x<-mean(Precipitacion)
x
## [1] 17.10453
sigma<-sd(Precipitacion)
sigma
## [1] 16.11552
#P(x-2e<u<x+2e)=95%
e<-sigma/sqrt(length(Precipitacion))
e
## [1] 0.8423717
li<-x-2*e
li
## [1] 15.41979
ls<-x+2*e
ls
## [1] 18.78928
tabla_media<-data.frame(round(li,2),x,round(ls,2),e)
colnames(tabla_media)<-c("Limite Inferior","Media poblacional","Límite superior", "Desviación estándar poblacional")
library(knitr)
kable(tabla_media, format = "markdown", caption = "Tabla 7.2: media poblacional de la precipitación de cada uno de los registros de clima en el volcán Antisana")
Limite Inferior | Media poblacional | Límite superior | Desviación estándar poblacional |
---|---|---|---|
15.42 | 17.10453 | 18.79 | 0.8423717 |
CONCLUSIONES: La variable precipitación (mm) sigue un modelo de probabilidad exponencial aprobando los test de Pearson y Chi-Cuadrado, de esta manera, logramos calcular probabilidades, como por ejemplo, que al seleccionar aleatoriamente una cantidad de precipitación en el volcán Antisana la probabilidad de que su precipitación este entre 0 (mm) y 10 (m) es del 44.26%, y, mediante el teorema de límite central, sabemos que, su media aritmética poblacional se encuentra entre 15.42 (mm) y 18.79 (mm) con una confianza del 95%.
.