Vous êtes sur la page 1sur 7

Distribuciones Estadísticas en Hidrología: Distribución

Normal
Ing. Iván Arturo Ayala Bizarro, ayalabizarro@unh.edu.pe
Modificado 16 de abril de 2016
Hidrología General

Distribución Normal
También denominada campana de Gauss (la distribución de probabilidad es similar a una campana)

• Función de densidad de probabilidad f (x)

1 1 x−µ 2
f (x) = √ e− 2 ( σ ) (1)
σ 2π
x−µ
Estandarizando con z = σ

1 −z2
f (z) = √ e 2 (2)

• Función de distribución acumulada F (x)
Z x
1 x−µ 2
e− 2 (
1
F (x) = √ σ ) dx (3)
σ 2π −∞
Z z
1 −z 2
F (z) = √ e 2 dz (4)
2π −∞

Solución aproximada según Abramowitz y Stegun (1965)

F (z) = 1 − f (z)(0.4361836w − 0.1201676w2 + 0.937280w3 ) (5)


donde:

1
w= (6)
1 + 0.33267|Z|
si Z < 0 la función de distribución acumulada es 1 − F (Z)
• Parámetros
Para ambos método (Máxima Verosimilitud y Momentos) son iguales

n
1X
µ= xi (7)
n i=1
" n
#1/2
1 X 2
σ= (xi − µ) (8)
n − 1 i=1

Donde: x es la varaible independiente, µ el parámetro de localización igual a la media, σ parámetro de escala


igual a la desviación estandard y n tamaño de la muestra.

1
Recepción de datos

Importar los datos de la variable.

# Definir la ubicación de la carpeta de trabajo


setwd('C:/Users/abia/OneDrive/IVAN/IVAN_PROGRAMACION_R/Rpubs_IvanAyala/02.-Distribuciones Estadísticas')

Datos<- read.table('Data_Pmax.txt', header=TRUE)


x<-sort(Datos$Pmax)
#summary(x)

Distribución Empírica

Existen muchas relaciones para representar una Distribución Empírica (DE). Para precipitaciones y caudales
en hidrología, recomiendan el suso de la distribución propuesta por Weilbull, cuya relación es.

m
Pe = (9)
n+1

donde m es el número de orden correspondiente a cada valor de la serie ordenados de menor a mayor, y n es
el tamaño o número total de la muestra.

n<-length(x)
P_E <- c()
for(i in 1:n)
{
P_E[i] <- i/(n+1)
}
P_E

## [1] 0.02380952 0.04761905 0.07142857 0.09523810 0.11904762 0.14285714


## [7] 0.16666667 0.19047619 0.21428571 0.23809524 0.26190476 0.28571429
## [13] 0.30952381 0.33333333 0.35714286 0.38095238 0.40476190 0.42857143
## [19] 0.45238095 0.47619048 0.50000000 0.52380952 0.54761905 0.57142857
## [25] 0.59523810 0.61904762 0.64285714 0.66666667 0.69047619 0.71428571
## [31] 0.73809524 0.76190476 0.78571429 0.80952381 0.83333333 0.85714286
## [37] 0.88095238 0.90476190 0.92857143 0.95238095 0.97619048

plot(x,P_E, pch=18, col="blue", type="b", lty=1 ,ylab = "P",


main = "Distribución Empírica")
grid()

2
Distribución Empírica
1.0
0.8
0.6
P

0.4
0.2
0.0

15 20 25 30 35 40 45

Cálculo de los parámetros

# Cálculo de parámetros Método de Momento y Máxima verosimilitud


mu <- mean(x);mu # Parámetro de Posición.

## [1] 29.10244

sigma <- sd(x);sigma # Parámetro de Escala.

## [1] 8.527353

Cálculo de la función de distribución acumulada Fx

• Mediante la ecuación de Abramowitz y Stegun (1965)

F_AS <- c()


for(i in 1:n)
{
z<-(x[i]-mu)/sigma
fz <- 1/(sqrt(2*pi))*exp(-0.5*z^2)

w <- 1./(1+0.33267*abs(z))

3
F_AS[i]<-1-fz*(0.4361836*w-0.1201676*w**2+0.937280*w**3)

if(z<0){
F_AS[i]<-1-F_AS[i]
}
}
F_AS

## [1] 0.04908434 0.05276376 0.08680805 0.09645090 0.10685901 0.10685901


## [7] 0.12275747 0.12759032 0.15935489 0.20577245 0.22287071 0.27090858
## [13] 0.32361276 0.34927917 0.35799717 0.36678971 0.39357183 0.40716308
## [19] 0.43928759 0.44855050 0.45784211 0.48584033 0.50925349 0.52328022
## [25] 0.59715931 0.60620816 0.63299495 0.65050912 0.68456401 0.70510218
## [31] 0.75540283 0.75540283 0.76271016 0.77344284 0.85962628 0.86222498
## [37] 0.92862637 0.93915405 0.96885482 0.97687728 0.98450532

• Mediante comandos R

# Función de Distribución Normal Acumulada


F_N <- pnorm(x, mu, sigma);F_N

## [1] 0.04908523 0.05276584 0.08681779 0.09646168 0.10687041 0.10687041


## [7] 0.12276891 0.12760158 0.15936323 0.20577363 0.22286919 0.27090162
## [13] 0.32360634 0.34927595 0.35799544 0.36678966 0.39357770 0.40717213
## [19] 0.43930299 0.44856699 0.45785912 0.48585371 0.50924183 0.52326461
## [25] 0.59715127 0.60620224 0.63299495 0.65051230 0.68457105 0.70510989
## [31] 0.75540733 0.75540733 0.76271373 0.77344491 0.85961587 0.86221436
## [37] 0.92861932 0.93914958 0.96886035 0.97688563 0.98451571

plot(x, F_N, type="l", pch=19, col="red",lty=2, xlab="",


ylab="Probabilidad Acumulada",main="")
lines(x, P_E, pch=18, col="blue", type="b", lty=1) # Agregar una línea
legend('topleft', legend=c('Distribución Normal','Distribución Empírica'),
lty=1:2, col=c('red', 'blue'), cex=0.8, text.font=4)
grid()

4
1.0
Distribución Normal
Distribución Empírica
Probabilidad Acumulada

0.8
0.6
0.4
0.2

15 20 25 30 35 40 45

Cálculo de probabilidades

Las probabilidas se asignan a partir del periodo de retorno Tr al cual se desea someter. Mayor información
en: Dr. Victor Miguel Ponce

Tr<-c(2,5,10,15,20,25,50,100,200,250,500,1000) # Periodos de retorno


p<-1-1/Tr;p

## [1] 0.5000000 0.8000000 0.9000000 0.9333333 0.9500000 0.9600000 0.9800000


## [8] 0.9900000 0.9950000 0.9960000 0.9980000 0.9990000

Cálculo de Cuantiles

Q<-qnorm(p, mu, sigma)


Rsult<-data.frame(Tr,p,Q);Rsult

## Tr p Q
## 1 2 0.5000000 29.10244
## 2 5 0.8000000 36.27924
## 3 10 0.9000000 40.03068
## 4 15 0.9333333 41.90273
## 5 20 0.9500000 43.12869
## 6 25 0.9600000 44.03116

5
## 7 50 0.9800000 46.61548
## 8 100 0.9900000 48.94003
## 9 200 0.9950000 51.06744
## 10 250 0.9960000 51.71757
## 11 500 0.9980000 53.64554
## 12 1000 0.9990000 55.45394

plot(Tr,Q, pch=23, col="#000099", bg="#FF6666", type="b", lty=1 ,


ylab = "Cuantil", xlab = "Periodo de retorno (años)",
main = "Cuantiles Vs Periodo de retorno" )
grid()

Cuantiles Vs Periodo de retorno


55
50
45
Cuantil

40
35
30

0 200 400 600 800 1000

Periodo de retorno (años)

Test para la distribución teórica

El test de prueba, se realiza mediante el test de Smirnov-Kolmogorov. Una forma de validar, es crear una
serie de datos con una distribución conocida y realizar la prueba de Smirnov Kolmogorov.

x2<-rbeta(1000, shape1=50, shape2=2, ncp = 0) # Distribución Beta


tsk<-ks.test(x2,"pnorm",mean(x2),sd(x2));tsk

##
## One-sample Kolmogorov-Smirnov test
##
## data: x2

6
## D = 0.091837, p-value = 9.448e-08
## alternative hypothesis: two-sided

# Ahora el test para beta


tsk<-ks.test(x2,"pbeta",shape1=50, shape2=2, ncp = 0);tsk

##
## One-sample Kolmogorov-Smirnov test
##
## data: x2
## D = 0.025208, p-value = 0.5488
## alternative hypothesis: two-sided

Por lo tanto, la pruebas para la serie x es:

tsk<-ks.test(x,"pnorm",mu,sigma);tsk # Smirnov Kolmogorov

## Warning in ks.test(x, "pnorm", mu, sigma): ties should not be present for
## the Kolmogorov-Smirnov test

##
## One-sample Kolmogorov-Smirnov test
##
## data: x
## D = 0.06752, p-value = 0.9921
## alternative hypothesis: two-sided

. . . comentarios?