Velocidad del viento
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
Viento<-datos3$Wind
hist(Viento,freq = FALSE,main = "Gráfica No.8.1: Modelo de probabilidad - Normal", xlab = "Viento (m/s)", ylab = "Densidad de probabilidad")
Conjeturamos el modelo
histograma<-hist(Viento,freq = FALSE,main="Gráfica 8.2.Modelo de probabilidad normalde la velocidad del viento en el volcán Antisana",
xlab="Viento (m/s)",ylab="Densidad de probabilidad",col="salmon")
h<-length(histograma$counts)
u<-mean(Viento)
sigma<-sd(Viento)
x<-seq(min(Viento),max(Viento),0.01)
curve(dnorm(x,u,sigma),type="l",add=TRUE,lwd=4,col="blue3")
#El modelo si se acopla, para verificar la correlacion entre la frecuencia observada y la esperada realizaremos el test de Pearson y Chi-cuadrado.
#Frecuencia simple observada
Fo<-histograma$counts
Fo
## [1] 1 1 9 30 46 57 55 49 46 35 28 7 2
P<-c(0)
for (i in 1:h)
{P[i] <-(pnorm(histograma$breaks[i+1],u,sigma)-
pnorm(histograma$breaks[i],u,sigma))}
Fe<-P*length(Viento)
sum(Fe)
## [1] 364.255
n<-length(Viento)
n
## [1] 366
Test de Pearson
Mide el grado de correlación entre la frecuencia observada y la frecuencia esperada.
plot(Fo,Fe,main="Gráfica 8.3.Correlación de frecuencias en el modelo normal
de superficie",xlab="Frecuencia Observada",ylab="Frecuencia esperada",col="blue3")
Correlación<-cor(Fo,Fe)*100
Correlación
## [1] 96.09081
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)¨
#Grados de libertad
grados_libertad <- length(histograma$counts)-1
grados_libertad
## [1] 12
# Nivel de significancia
nivel_significancia <- 0.05
#Frecuencia Observada porcentual
Fo<-(histograma$counts/n)*100
Fo
## [1] 0.2732240 0.2732240 2.4590164 8.1967213 12.5683060 15.5737705
## [7] 15.0273224 13.3879781 12.5683060 9.5628415 7.6502732 1.9125683
## [13] 0.5464481
sum(Fo)
## [1] 100
#Frecuencia esperada
Fe<-P*100
Fe
## [1] 0.3856761 1.1665911 2.9190006 6.0421482 10.3468503 14.6587887
## [7] 17.1818535 16.6620345 13.3681511 8.8734868 4.8728890 2.2137725
## [13] 0.8319829
sum(Fe)
## [1] 99.52323
x2<-sum((Fe-Fo)^2/Fe)
x2
## [1] 4.828681
# Calcular el umbral de aceptación
umbral_aceptacion <- qchisq(1 - nivel_significancia, grados_libertad)
umbral_aceptacion
## [1] 21.02607
x2<umbral_aceptacion
## [1] TRUE
RESUMEN TEST DE BONDAD
Variable<-c("Velocidad del viento (m/s)")
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 |
---|---|---|---|
Velocidad del viento (m/s) | 96.09 | 4.83 | 21.03 |
Cálculo de probabilidades
¿Cuál es la probabilidad de que la velocidad del vient en el volcán Antisana sea entre 1 m/s a 2 m/s
# Cálculo de la probabilidad entre 1 m/s y 2 m/s
probabilidad <- pnorm(2, u, sigma) - pnorm(1, u, sigma)
cat("Probabilidad entre 1 y 2 m/s:", round(probabilidad * 100, 2), "%\n")
## Probabilidad entre 1 y 2 m/s: 64.89 %
# Crear secuencia para la curva
x_curve <- seq(min(Viento), max(Viento), length.out = 1000)
# Graficar solo la línea de la distribución normal
plot(x_curve, dnorm(x_curve, u, sigma), type = "l",
col = "blue3", lwd = 2, xlim = c(0, 4),
main = "Gráfica 8.4. Cálculo de probabilidades",
ylab = "Densidad de probabilidad", xlab = "Viento (m/s)",
xaxt = "n")
# Área sombreada entre 1 y 2 m/s
x_section <- seq(1, 2, by = 0.001)
y_section <- dnorm(x_section, u, sigma)
polygon(c(x_section, rev(x_section)),
c(y_section, rep(0, length(y_section))),
col = rgb(1, 0, 0, 0.6), border = NA)
# Añadir leyenda y eje X
legend("topright", legend = c("Distribución Normal", "Área de probabilidad (1-2 m/s)"),
col = c("blue3", "red"), lwd = 2, pch = c(NA, 15))
axis(1, at = seq(0, 4, by = 0.5))
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
x<-mean(Viento)
x
## [1] 1.767582
sigma<-sd(Viento)
sigma
## [1] 0.4557183
#P(x-2e<u<x+2e)=95%
e<-sigma/sqrt(length(Viento))
e
## [1] 0.02382078
li<-x-2*e
li
## [1] 1.719941
ls<-x+2*e
ls
## [1] 1.815224
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 2:. Tabla de resumen del teorema del límite central")
Limite Inferior | Media poblacional | Límite superior | Desviación estándar poblacional |
---|---|---|---|
1.72 | 1.767583 | 1.82 | 0.0238208 |
CONCLUSIONES: La variable velocidad del viento (m/s) sigue un modelo de probabilidad normal aprobando los test de Pearson y Chi-Cuadrado, de esta manera, logramos calcular probabilidades, como por ejemplo, que al seleccionar aleatoriamente una velocidad de viento en el volcán Antisana la probabilidad de que su precipitación este entre 1 (m/s) y 2 (m/s) es del 64.88 % y, mediante el teorema de límite central, sabemos que, su media aritmética poblacional se encuentra entre 1.72 (m/s) y 1.82 (m/s) con una confianza del 95%.
.