prueba KS poisson

Author
Affiliation

Jaime Isaac

UNIVERSIDAD DE EL SALVADOR

library(readxl)
Warning: package 'readxl' was built under R version 4.3.3
datos <- read_excel("poisson tablas.xlsx", 
    sheet = "hoja2")
head(datos)
# A tibble: 6 × 9
  Horario         T Lunes Martes Miércoles Jueves Viernes Sábado Domingo
  <chr>       <dbl> <dbl>  <dbl>     <dbl>  <dbl>   <dbl>  <dbl>   <dbl>
1 06:00 a. m.     0     0      0         0      0       0      0       0
2 07:00 a. m.     1    10      5         7      3       9      5      13
3 08:00 a. m.     2    12      1        13      5       8      9       8
4 09:00 a. m.     3     2     17        14     21      15     17      16
5 10:00 a. m.     4     6     13         1     18      18      6      12
6 11:00 a. m.     5     7     11        18     17       7      5      14
datos=datos[,c(3,4,5,6,7,8,9)]
head(datos)
# A tibble: 6 × 7
  Lunes Martes Miércoles Jueves Viernes Sábado Domingo
  <dbl>  <dbl>     <dbl>  <dbl>   <dbl>  <dbl>   <dbl>
1     0      0         0      0       0      0       0
2    10      5         7      3       9      5      13
3    12      1        13      5       8      9       8
4     2     17        14     21      15     17      16
5     6     13         1     18      18      6      12
6     7     11        18     17       7      5      14
datos=data.frame(datos)
head(datos)
  Lunes Martes Miércoles Jueves Viernes Sábado Domingo
1     0      0         0      0       0      0       0
2    10      5         7      3       9      5      13
3    12      1        13      5       8      9       8
4     2     17        14     21      15     17      16
5     6     13         1     18      18      6      12
6     7     11        18     17       7      5      14
# Tus datos de la columna "Lunes"
datos_lunes <- c(0, 10, 12, 2, 6, 7, 18, 7, 15, 19, 13, 10, 6, 12, 4, 17, 3, 9)

# Estimamos lambda como la media de los datos
lambda <- mean(datos_lunes)

# Prueba de Kolmogorov-Smirnov para Poisson
resultado_ks <- ks.test(datos_lunes, "ppois", lambda)
Warning in ks.test.default(datos_lunes, "ppois", lambda): ties should not be
present for the Kolmogorov-Smirnov test
# Imprimir el resultado de la prueba
print(resultado_ks)

    Asymptotic one-sample Kolmogorov-Smirnov test

data:  datos_lunes
D = 0.22998, p-value = 0.297
alternative hypothesis: two-sided
import numpy as np
from scipy import stats

# Tus datos de la columna "Lunes"
datos_lunes = [0, 10, 12, 2, 6, 7, 18, 7, 15, 19, 13, 10, 6, 12, 4, 17, 3, 9]

# Estimamos lambda como la media de los datos
lambda_est = np.mean(datos_lunes)

# Prueba de Kolmogorov-Smirnov para Poisson
resultado_ks = stats.kstest(datos_lunes, 'poisson', args=(lambda_est,))

# Imprimir el resultado de la prueba
print(resultado_ks)
KstestResult(statistic=0.2299752679338457, pvalue=0.2551010241634354, statistic_location=12, statistic_sign=-1)
# Tus datos de la columna "Lunes"
datos_lunes <- c(0, 10, 12, 2, 6, 7, 18, 7, 15, 19, 13, 10, 6, 12, 4, 17, 3, 9)

# Estimar lambda (media de los datos)
lambda <- mean(datos_lunes)

# Frecuencias observadas
observados <- table(datos_lunes)

# Valores posibles (nombres de la tabla de frecuencias observadas)
valores_posibles <- as.numeric(names(observados))

# Calcular las frecuencias esperadas bajo la distribución de Poisson
esperados <- dpois(valores_posibles, lambda) * sum(observados)

# Realizar la prueba de Chi-cuadrado
chisq_test <- chisq.test(observados, p = esperados, rescale.p = TRUE)
Warning in chisq.test(observados, p = esperados, rescale.p = TRUE): Chi-squared
approximation may be incorrect
# Imprimir resultados
print(chisq_test)

    Chi-squared test for given probabilities

data:  observados
X-squared = 499.94, df = 13, p-value < 2.2e-16
import numpy as np
from scipy import stats

# Tus datos de la columna "Lunes"
datos_lunes = [0, 10, 12, 2, 6, 7, 18, 7, 15, 19, 13, 10, 6, 12, 4, 17, 3, 9]

# Estimar lambda (media de los datos)
lambda_est = np.mean(datos_lunes)

# Frecuencias observadas (conteo de cada valor)
observados = np.bincount(datos_lunes)

# Valores posibles
valores_posibles = np.arange(len(observados))

# Frecuencias esperadas bajo la distribución de Poisson
esperados = stats.poisson.pmf(valores_posibles, lambda_est) * len(datos_lunes)

# Reescalar las frecuencias esperadas para que sumen igual que las observadas
esperados = esperados * (np.sum(observados) / np.sum(esperados))

# Prueba de Chi-cuadrado
chi2_stat, p_val = stats.chisquare(observados, f_exp=esperados)

# Imprimir los resultados
print(f"Chi-cuadrado: {chi2_stat}, p-valor: {p_val}")
Chi-cuadrado: 762.9444394587763, p-valor: 1.600669978785992e-149
n <- 18
alpha <- 0.05
C_alpha <- sqrt(-0.5 * log(alpha / 2)) 
C_alpha
[1] 1.358102
n <- 18   # Tamaño de la muestra
alpha <- 0.05  # Nivel de significancia

# Constante crítica para alfa = 0.05
c_alpha <- 1.358

# Valor crítico de KS
D_alpha <- c_alpha / sqrt(n)
D_alpha
[1] 0.3200837
import numpy as np

# Parámetros
n = 18
alpha = 0.05

# Constante crítica para alfa = 0.05
c_alpha = 1.358

# Valor crítico de KS
D_alpha = c_alpha / np.sqrt(n)
print(D_alpha)
0.32008366961711054
# Tus datos de "Domingo"
datos_domingo <- c(0, 13, 8, 16, 12, 14, 15, 16, 8, 7, 16, 12, 9, 12, 4, 3, 26, 5)

# Estimar lambda como la media de los datos
lambda <- mean(datos_domingo)

# Prueba de Kolmogorov-Smirnov para Poisson
resultado_ks <- ks.test(datos_domingo, "ppois", lambda)
Warning in ks.test.default(datos_domingo, "ppois", lambda): ties should not be
present for the Kolmogorov-Smirnov test
# Imprimir el resultado de la prueba KS
print(resultado_ks)

    Asymptotic one-sample Kolmogorov-Smirnov test

data:  datos_domingo
D = 0.25635, p-value = 0.1876
alternative hypothesis: two-sided
import numpy as np
from scipy import stats

# Tus datos de "Domingo"
datos_domingo = [0, 13, 8, 16, 12, 14, 15, 16, 8, 7, 16, 12, 9, 12, 4, 3, 26, 5]

# Estimar lambda (media de los datos)
lambda_est = np.mean(datos_domingo)

# Prueba de Kolmogorov-Smirnov para Poisson
resultado_ks = stats.kstest(datos_domingo, 'poisson', args=(lambda_est,))

# Imprimir los resultados
print(resultado_ks)
KstestResult(statistic=0.2563474068201075, pvalue=0.15696194659410756, statistic_location=12, statistic_sign=-1)
# Frecuencias observadas
observados <- table(datos_domingo)

# Valores posibles (nombres de la tabla de frecuencias observadas)
valores_posibles <- as.numeric(names(observados))

# Calcular las frecuencias esperadas bajo la distribución de Poisson
esperados <- dpois(valores_posibles, lambda) * sum(observados)

# Realizar la prueba de Chi-cuadrado
chisq_test <- chisq.test(observados, p = esperados, rescale.p = TRUE)
Warning in chisq.test(observados, p = esperados, rescale.p = TRUE): Chi-squared
approximation may be incorrect
# Imprimir resultados de la prueba Chi-cuadrado
print(chisq_test)

    Chi-squared test for given probabilities

data:  observados
X-squared = 2858.9, df = 12, p-value < 2.2e-16
# Si tienes un modelo lineal generalizado con Poisson y encuentras sobredispersión
# Puedes cambiar a un modelo de Binomial Negativa con el paquete MASS
library(MASS)

# Ajustar un modelo de Binomial Negativa
modelo_nb <- glm.nb(datos_domingo ~ 1)

# Resumen del modelo
summary(modelo_nb)

Call:
glm.nb(formula = datos_domingo ~ 1, init.theta = 3.577334227, 
    link = log)

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   2.3877     0.1436   16.62   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(3.5773) family taken to be 1)

    Null deviance: 21.613  on 17  degrees of freedom
Residual deviance: 21.613  on 17  degrees of freedom
AIC: 120.42

Number of Fisher Scoring iterations: 1

              Theta:  3.58 
          Std. Err.:  1.74 

 2 x log-likelihood:  -116.421 
from scipy.stats import kstwobign
n = 18
alpha = 0.05

D_alpha = kstwobign.ppf(1 - alpha) / (n ** 0.5)
D_alpha
0.32010691912839956