DISTRIBUCIÓN EXPONENCIAL

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~exponencial\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~exponencial \]

require(vcd)
## Loading required package: vcd
## Loading required package: grid
require(MASS)
## Loading required package: MASS
# Generación de datos
exponencial <- rexp(1000, rate = 1.85) # generar datos con distribución exponencial
control <- abs(rnorm(1000)) # generar datos con cualquier otra distribución

# Estimación de parámetros
fit1 <- fitdistr(exponencial, "exponential") 
fit2 <- fitdistr(control, "exponential")

# Bondad del ajuste del test
(pr_ex1=ks.test(exponencial, "pexp", fit1$estimate)) # p-value > 0.05 -> Ho no rechazada
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  exponencial
## D = 0.025309, p-value = 0.5436
## alternative hypothesis: two-sided
ifelse(pr_ex1$p.value<0.05, "Rechazo Ho", "No rechazo Ho")
## [1] "No rechazo Ho"
(pr_ex2=ks.test(control, "pexp", fit2$estimate)) #  significant p-value -> Ho rechazada
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  control
## D = 0.084311, p-value = 1.339e-06
## alternative hypothesis: two-sided
ifelse(pr_ex2$p.value<0.05, "Rechazo Ho", "No rechazo Ho")
## [1] "Rechazo Ho"
# Graficar
hist(exponencial, freq = FALSE, breaks = 100, xlim = c(0, quantile(exponencial, 0.99)))
curve(dexp(x, rate = fit1$estimate), from = 0, col = "red", add = TRUE)

DISTRIBUCIÓN NORMAL

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~normal\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~normal \]

#Generación de datos
normal = rnorm(1000) #Distribución normal
control2 = rt(1000, df=3) #Distribución t

#Graficar densidad
plot(density(normal));plot(density(control2))

#Realizar el test
(pr_nor1=shapiro.test(normal))
## 
##  Shapiro-Wilk normality test
## 
## data:  normal
## W = 0.99811, p-value = 0.3307
ifelse(pr_nor1$p.value<0.05, "Rechazo Ho", "No rechazo Ho")
## [1] "No rechazo Ho"
(pr_nor2=shapiro.test(control2))
## 
##  Shapiro-Wilk normality test
## 
## data:  control2
## W = 0.90091, p-value < 2.2e-16
ifelse(pr_nor2$p.value<0.05, "Rechazo Ho", "No rechazo Ho")
## [1] "Rechazo Ho"
#Graficar usando qqplot
qqnorm(normal)
qqline(normal, col = 2)

qqnorm(control2)
qqline(control2, col = 2)

DISTRIBUCIÓN UNIFORME

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~uniforme\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~uniforme\]

#Generación de datos
library(swfscMisc)
## 
## Attaching package: 'swfscMisc'
## The following object is masked from 'package:vcd':
## 
##     odds
uniforme <- runif(1000) #Uniforme
control3 <- rlnorm(1000) #Normal

#Realizar el test
(pr_uni1=uniform.test(hist(uniforme), B = 1000))

## 
##  Chi-squared test for given probabilities with simulated p-value (based
##  on 1000 replicates)
## 
## data:  hist.output$counts
## X-squared = 6.72, df = NA, p-value = 0.6523
ifelse(pr_uni1$p.value<0.05, "Rechazo Ho", "No rechazo Ho")
## [1] "No rechazo Ho"
(pr_uni2=uniform.test(hist(control3), B = 1000))

## 
##  Chi-squared test for given probabilities with simulated p-value (based
##  on 1000 replicates)
## 
## data:  hist.output$counts
## X-squared = 7989.5, df = NA, p-value = 0.000999
ifelse(pr_uni2$p.value<0.05, "Rechazo Ho", "No rechazo Ho")
## [1] "Rechazo Ho"

DISTRIBUCIÓN POISSON

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~poisson\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~poisson\]

#Crear función que se basa en el hecho de que la media de la distribución de Poisson es igual a su varianza, y la relación entre la varianza y la media en una muestra de n recuentos de una distribución de Poisson debe seguir una distribución de Chi-cuadrado, con n-1 grados de libertad.
dispersion_test <- function(x) 
{
  res <- 1-2 * abs((1 - pchisq((sum((x - mean(x))^2)/mean(x)), length(x) - 1))-0.5)

  cat("Dispersion test of count data:\n",
      length(x), " data points.\n",
      "Mean: ",mean(x),"\n",
      "Variance: ",var(x),"\n",
      "Probability of being drawn from Poisson distribution: ", 
      round(res, 3),"\n", sep = "")

  invisible(res)
}
#Crear datos
poisson=rpois(1000,1)
control4=rnorm(1000)

#Probar la función
dispersion_test(poisson)
## Dispersion test of count data:
## 1000 data points.
## Mean: 0.983
## Variance: 0.9096206
## Probability of being drawn from Poisson distribution: 0.09
dispersion_test(control4)
## Dispersion test of count data:
## 1000 data points.
## Mean: 0.02478714
## Variance: 1.039307
## Probability of being drawn from Poisson distribution: 0

DISTRIBUCIÓN BINOMIAL

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~binomial\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~binomial\]

require("fitdistrplus")
## Loading required package: fitdistrplus
## Loading required package: survival
#Crear datos
set.seed(100)
binomial = rbinom(1000,50,0.4)

#Probar el test
fit1 = fitdist(binomial, dist="binom", #método "mle"
                   fix.arg=list(size = 50), 
                   start=list(prob = 0.1))

summary(fit1)
## Fitting of the distribution ' binom ' by maximum likelihood 
## Parameters : 
##       estimate  Std. Error
## prob 0.4044602 0.002194857
## Fixed parameters:
##      value
## size    50
## Loglikelihood:  -2678.442   AIC:  5358.884   BIC:  5363.792
plot(fit1)

DISTRIBUCIÓN LOGNORMAL

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~lognormal\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~lognormal \]

require("fitdistrplus")
#Crear datos
set.seed(100)
lognormal = rlnorm(1000,50,0.3)

#Probar el test
fit2 = fitdist(lognormal, dist="lnorm") #método "mle"

summary(fit2)
## Fitting of the distribution ' lnorm ' by maximum likelihood 
## Parameters : 
##           estimate  Std. Error
## meanlog 50.0050415 0.009772126
## sdlog    0.3090218 0.006909611
## Loglikelihood:  -50249.64   AIC:  100503.3   BIC:  100513.1 
## Correlation matrix:
##         meanlog sdlog
## meanlog       1     0
## sdlog         0     1
plot(fit2)

DISTRIBUCIÓN BETA

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~lognormal\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~lognormal \]

require("fitdistrplus")
#Crear datos
set.seed(100)
beta <- rbeta(1000,0.9,0.5)

#Probar el test
fit3 = fitdist(beta, dist="beta")

summary(fit3)
## Fitting of the distribution ' beta ' by maximum likelihood 
## Parameters : 
##         estimate Std. Error
## shape1 0.9449265 0.04250818
## shape2 0.4809618 0.01824865
## Loglikelihood:  320.3926   AIC:  -636.7851   BIC:  -626.9696 
## Correlation matrix:
##           shape1    shape2
## shape1 1.0000000 0.5452701
## shape2 0.5452701 1.0000000
plot(fit3)

DISTRIBUCIÓN BETA

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~lognormal\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~lognormal \]

require("fitdistrplus")
#Crear datos
set.seed(100)
gamma <- rgamma(1000,0.9,0.6)

#Probar el test
fit4 = fitdist(gamma, dist="gamma")

summary(fit4)
## Fitting of the distribution ' gamma ' by maximum likelihood 
## Parameters : 
##        estimate Std. Error
## shape 0.8553526 0.03320887
## rate  0.5492155 0.02841333
## Loglikelihood:  -1434.735   AIC:  2873.471   BIC:  2883.286 
## Correlation matrix:
##           shape      rate
## shape 1.0000000 0.7504593
## rate  0.7504593 1.0000000
plot(fit4)

DISTRIBUCIÓN CHI cuadrado

\[ Ho:~Los~datos~se~ajustan~a~una~distribución~chicuadrado\\ Ha:~Los~datos~no~se~ajustan~a~una~distribución~chicuadrado \]

require("fitdistrplus")
#Crear datos
set.seed(100)
chi <- rchisq(n = 1000,df = 20,ncp = 2)
hist(chi)

#Probar el test
print(chisq.test(chi))
## 
##  Chi-squared test for given probabilities
## 
## data:  chi
## X-squared = 2047.4, df = 999, p-value < 2.2e-16

```