Tema: Estadistica inferencial de variables cuantitativas continuas

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")
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")
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%.

.