Variable cualitativa ordinal

Mes

1 Carga de datos

Ese código importa en R el archivo “Mes.csv” como un data frame, indicando que los datos están separados por comas, el punto es el separador decimal y la primera fila contiene los nombres de las columnas.

Mes <- read.csv("C:/Users/inesa/Downloads/Mes1.csv", header=TRUE,
                sep = ",", dec =".")

2 Tabla de distribución de frecuencia

Extraemos la columna Cantidad del data frame Mes, la guardamos en ni, calculamos su suma total, luego obtienemos el porcentaje (hi) que representa cada valor de ni respecto al total. Después creamos un nuevo data frame llamado TDFMes que incluye las columnas originales más ni y hi.

ni<-Mes$Cantidad
sum(ni)
## [1] 17805
hi<-ni/sum(ni)*100
sum(hi)
## [1] 100
TDFMes<-data.frame(Mes, ni, hi)
TDFMes

3 Gráficas

3.1 Diagrama de barras local

barplot(TDFMes$ni, main="Gráfica N°79: Frecuencia del Mes
        de los Sismos del Subcontinente Indio", 
        xlab="Mes", ylab="Cantidad", names.arg = TDFMes$Mes, las=2, 
        col = "skyblue")

4 Agrupación 1 (Enero a Junio)

Filtramos los datos del data frame Mes para seleccionar solo los meses del 1 al 6, creamos un nuevo data frame con esa selección y calculamos las frecuencias relativas de la columna Cantidad en ese subconjunto.

Mes1 <- subset(Mes, Mes >= 1 & Mes <= 6)
tdfmes1<- data.frame(Mes1)
hi1<- tdfmes1$Cantidad/sum(tdfmes1$Cantidad)
hi1
## [1] 0.1542828 0.1702786 0.1933953 0.2122807 0.1497420 0.1200206
barplot(hi1, main = "Gráfica N°80: Distribución de Probabilidad de Mes(1-6)", 
        xlab = "Mes",
        ylab = "Probabilidad",
        names.arg = tdfmes1$Mes, col="skyblue")

4.1 Conjetura del modelo

Calculamos las probabilidades teóricas usando la distribución de Poisson

lambda1 <-(sum(Mes1$Mes*Mes1$Cantidad)/sum(Mes1$Cantidad))
P1<-dpois(tdfmes1$Mes, lambda1)
P1
## [1] 0.11403235 0.19345487 0.21879633 0.18559303 0.12594278 0.07122027
barplot(rbind(hi1,P1), main = "Gráfica N°81: Modelo de probabilidad Poison del Mes de los Sismos del
     Subcontinente Indio", 
                      xlab = "Mes",
                      ylab = "Cantidad-Probabilidad",
                      names.arg = Mes1$Mes, beside = TRUE, col=c("skyblue", "blue") )
legend("topright",legend = c("Real", "Modelo"),
       fill=c("skyblue", "blue"))

4.2 Test de Pearson

Mide el grado de correlación entre la frecuencia observada y la frecuencia esperada.

Fo1<-hi1
Fo1
## [1] 0.1542828 0.1702786 0.1933953 0.2122807 0.1497420 0.1200206
Fe1<-P1
Fe1
## [1] 0.11403235 0.19345487 0.21879633 0.18559303 0.12594278 0.07122027
plot(Fo1, Fe1, main="Gráfica N°82: Correlación de frecuencias en el modelo Poison 
                 del Mes de los Sismos del Subcontinente Indio",
     xlab="Frecuencia Observada", ylab="Frecuencia Esperada")

abline(lm(Fe1 ~ Fo1), col="red",lwd=2)

Correlación1<-cor(Fo1,Fe1)*100 #Correlacion 
Correlación1
## [1] 87.58027

4.3 Test de Chi-cuadrado

El test de Chi-Cuadrado utiliza dos parámetros: grados de libertad (se refiere al número 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)

Para validar el modelo, se compara el valor de chi-cuadrado calculado con el umbral de aceptación de chi-cuadrado correspondiente a los grados de libertad y el nivel de significancia deseado.

Si el valor de chi-cuadrado calculado es mayor que el umbral de aceptación, se rechaza el modelo, indicando que hay una diferencia significativa.

x2<-sum(((Fo1-Fe1)^2)/Fe1)
x2
## [1] 0.0617059
vc<-qchisq(0.95,5) #k-1
vc 
## [1] 11.0705
x2<vc
## [1] TRUE

4.4 Tabla resumen de test

Variable<-c("Mes")
tabla_resumen<-data.frame(Variable,round(Correlación1),round(x2,2),round(vc,2))
colnames(tabla_resumen)<-c("Variable","Test Pearson (%)","Chi Cuadrado","Umbral de aceptación")
library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Tabla Nº25: Resumen de test de bondad al modelo de probabilidad")
## Warning in attr(x, "align"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
## Warning in attr(x, "format"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
Tabla Nº25: Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Mes 88 0.06 11.07

4.5 Cálculo de probabilidades

n1<-sum(tdfmes1$Cantidad)
n1
## [1] 9690

¿Cuál es la probabilidad de que un sismo ocurra en Marzo?

dpois(3, lambda1)
## [1] 0.2187963

5 Agrupación 2 (Julio a Diciembre)

Filtramos los meses de julio a diciembre, creamos un nuevo data frame y calculamos las frecuencias relativas de ese rango.

Mes2 <- subset(Mes, Mes >= 7 & Mes <= 12)
tdfmes2 <- data.frame(Mes2)
hi2<- tdfmes2$Cantidad/sum(tdfmes2$Cantidad)
hi2
## [1] 0.1256932 0.1455330 0.1918669 0.2316697 0.1805299 0.1247073

Distribución de Probabilidad de Mes(7 a 12)

barplot(hi2, main = "Gráfico N°83: Distribución de Probabilidad de Mes(7 a 12)", 
        xlab = "Mes",
        ylab = "Probabilidad",
        names.arg = tdfmes2$Mes, col="skyblue")

5.1 Conjetura del modelo

n <- sum(tdfmes2$Cantidad)  # Total de sismos en meses 7 a 12
n
## [1] 8115
x <- tdfmes2$Cantidad       # Número de éxitos por mes (frecuencia)
x
## [1] 1020 1181 1557 1880 1465 1012
k <- ncol(tdfmes2)            # Cantidad de clases (6 meses)
k
## [1] 2

Asignamos valores de X: 0 a (k-1), esto es para que los valores tomen la forma binomial (x = 0,1,2,…)

X <- 0:(length(x)-1)
X
## [1] 0 1 2 3 4 5

Estimar p a partir de la esperanza E(X) = np

media_observada <- sum(X* tdfmes2$Cantidad) / sum(tdfmes2$Cantidad)
media_observada
## [1] 2.569932
p <- media_observada / (length(x) - 1)  # p = E(X)/n

# q
q <- 1 - p

Aplicar la fórmula: P(X = x) = C(n,x) * p^x * q^(n-x)

P2_binomial <- dbinom(X, size = length(x)-1, prob = p)  # tamaño = 5 porque X = 0...5
barplot(rbind(hi2, P2_binomial), beside = TRUE,
        col = c("skyblue", "blue"),
        names.arg = tdfmes2$Mes,
        main = "Gráfica N°84: Modelo de probabilidad Binomial del Mes de los Sismos del
     Subcontinente Indio",
        ylab = "Cantidad-Probabilidad", xlab = "Mes")

legend("topright", legend = c("Real", "Modelo"),
       fill = c("skyblue", "blue"), cex = 0.5)

5.2 Test de Pearson

plot(hi2, P2_binomial, main = "Gráfica N°85: Correlación de frecuencias en el modelo Binomial 
                 del Mes de los Sismos del Subcontinente Indio",xlab="Frecuencia Observada",
     ylab = "Frecuencia Esperada", pch = 19, col = "darkblue")
abline(lm(P2_binomial ~ hi2), col = "red", lwd = 2)

Fo2<-hi2
Fe2<-P2_binomial
Correlación2<-cor(Fo2,Fe2)*100
Correlación2
## [1] 94.49864

5.3 Test de Chi-cuadrado

x2_2<-sum(((Fo2-Fe2)^2)/Fe2)
x2_2
## [1] 0.6447411
vc_2<-qchisq(0.95,5) #k-1
vc_2#umbral
## [1] 11.0705
x2_2<vc
## [1] TRUE

5.4 Tabla resumen de test

Variable<-c("Mes")
tabla_resumen<-data.frame(Variable,round(Correlación2),round(x2_2,2),round(vc_2,2))
colnames(tabla_resumen)<-c("Variable","Test Pearson (%)","Chi Cuadrado","Umbral de aceptación")
library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Tabla Nº25.1: Resumen de test de bondad al modelo de probabilidad")
## Warning in attr(x, "align"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
## Warning in attr(x, "format"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
Tabla Nº25.1: Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Mes 94 0.64 11.07

5.5 Cálculo de probabilidades

n2<-sum(tdfmes2$Cantidad)
n2
## [1] 8115

¿Cuál es la probabilidad de que un sismo ocurra en Octubre?

dbinom(3, size = length(x)-1, prob=p)
## [1] 0.320739

6 Conclusiones

La variable mes se explica a traves de dos modelos, aprobando los test de pearson y chi-cuadrado, de esta manera, podemos calcular probabilidades, como por ejemplo,la probabilidad de que un sismo ocurra en octubre es del 32%.