Sei sulla pagina 1di 9

UNIVERSIDAD NACIONAL DE COLOMBIA.

Facultad de Minas Sede Medelln

Especializacin En El Aprovechamiento De Recursos Hidrulicos.

Tpicos Avanzados En Procesos Y Manejo De Zonas Costeras.

________________________________________________________________________

PRACTICA 2
INTRODUCCIN AL ANLISIS ESTADSTICO DEL OLEAJE

POR: Edgar Andrs Lpez Garca


PROFESOR: Andrs Fernando Osorio
EJERCICIO 2.

En el fichero oleaje.dat estn disponibles los registros de oleaje de una localizacin concreta
cada 3 horas. La informacin incluye ao, mes, da y hora de cada registro y la altura de ola
en metros. Se admite que la distribucin de oleaje en rgimen medio sigue una distribucin
logartmica normal, y que los mximos anuales de altura de ola de la serie son una variable
aleatoria que se distribuye segn una Gumbel de mximos. Se pide:

1. Dibuja los histogramas de altura de ola para cada uno de los meses del ao.
2. Dibuja el grfico boxplot para analizar de forma conjunta los oleajes de rgimen medio
de cada uno de los meses. Comenta los resultados haciendo referencia a si hay
estacionalidad, como evolucionan los valores medios y varianzas a lo largo del ao, y si
las distribuciones tienen coeficientes de asimetra positivos o negativos y por qu.
Consultar el comando boxplot() de Matlab o el comando PERCETIL en Excel.
3. Realiza un ajuste en papel probabilstico (con ayuda de Excel o Matlab) de las series
mensuales para las distribuciones Normal y LogNormal. Explique paso a paso el
procedimiento realizado, anexe las grficas y discuta los resultados obtenidos de manera
comparativa.
SERIE DE TIEMPO:

- Datos de oleaje desde 1960 hasta 1980.


- Altura mxima = 10.46 m
- Altura mnima = 0.24 m
- Ciertos puntos del ao presentan estacionalidad.
HISTOGRAMAS:
Intervalo = 0.5 m, desde 0.0 hasta 12, 24 rangos.

PROMEDIO = 1.62 m
DESVIACIN ESTNDAR= 0.92
CURTOSIS= 7.42
ASIMETRA= 1.75
Asimetra = Es positiva, sesgo hacia la izquierda, oleajes menores a la media (1.61), de baja altura.
Curtosis = Es positiva, ms apuntada y con colas menos anchas que la normal. leptocrtica,
AJUSTE NORMALIZADO:
ALTURAS = Log (ALTURAS)

* Los datos se ajustan a la distribucin normal.

PROMEDIO = 0.346113475246
DESVIACIN ESTNDAR= 0.512812450205
CURTOSIS= 2.79654714586
ASIMETRA= 0.25024008726
Asimetra = Es cercana a cero (0), datos sin sesgo.
Curtosis = Cercana a 3, Mesocurtica.
AGRUPACIN DE DATOS MENSUALES:

- Estacionalidad durante los meses 11 (noviembre) y 3 (marzo)


BOX-PLOT DE DATOS:

- La grafica muestra una estacionalidad durante los meses 11 (noviembre) y 3 (marzo)


- En promedio los datos de altura de oleaje estn por encima de 1 metro (Percentil 25
de todos los meses).
- Los datos debajo del percentil 25 no estn tan afectados comparados con los datos
sobre el percentil 75, es decir es influenciado por eventos extremos asociados tal
vez a lluvias.
- En general durante todo el ao se presenta el mismo estado de oleaje, y se afecta
puntualmente por eventos extremos durante los meses de noviembre y marzo
CDIGO PYTHON

1. import datetime
2. import matplotlib.pyplot as plt
3. import numpy as np
4. import scipy.stats as sp
5. import pandas as pd
6. from scipy.stats import norm
7.
8.
9. Datos = np.genfromtxt ('./oleaje.dat', dtype = str)
10. Datos
11.
12. FECHAS = []
13. ALTURAS = []
14.
15. for i in range (len(Datos)):
16. FECHAS.append(datetime.datetime(int(Datos[i,0]), int(Datos [i,1]),int(Datos [i
,2]), int( Datos [i,3])))
17. ALTURAS.append(float (Datos[i,4]))
18.
19.
20. # SERIE DE ALTURA A LO LARGO DEL TIEMPO
21.
22.
23. plt.figure (figsize=[15,6])
24. plt.plot (FECHAS, ALTURAS, linestyle='-.', color='k', alpha=0.5)
25. plt.title(u'Altura de ola significante a lo largo del tiempo', fontsize =15)
26. plt.xlabel(u'FECHA')
27. plt.legend(handles=[L1], loc=4)
28. plt.grid(color = '0.5', linestyle ='--', linewidth=0.5)
29. plt.ylabel ('Hs [m]')
30. L1=plt.axhline(0.24, linestyle= '-.',color='c', label = u'Mn')
31. L2=plt.axhline(10.46, linestyle= '-.',color='r', label = u'Mx = 10.46')
32. plt.legend(handles=[L2], loc=2)
33. plt.savefig('ALTURA_TIEMPO.png')
34.
35.
36. # HISTOGRAMA
37.
38. plt.figure (figsize=[10,6])
39. bins = np.linspace(0, 12, 25)
40. plt.hist(ALTURAS,bins=bins, color = 'r',alpha=0.7, histtype='bar',ec='k')
41. plt.title(u'Histograma de altura de ola',fontsize = 20)
42. plt.xlabel(u'Hs [m]',fontsize = 15)
43. plt.grid(color = '0.5', linestyle ='--', linewidth=0.5)
44. plt.ylabel (u"$n. datos$", fontsize = 15)
45. plt.ticklabel_format(style='sci', axis='y')
46. plt.xticks(np.arange(0., 13., 1.0))
47. plt.savefig('HISTOGRAMA_TOTAL.png')
48.
49. # VARIABLES ESTADISTICAS
50.
51. print 'PROMEDIO =', np.mean(ALTURAS)
52. print 'DESVIACION_ESTANDAR=', np.std(ALTURAS)
53. print 'CURTOSIS=', sp.kurtosis (ALTURAS,axis=0,fisher=False,bias=True)
54. print 'ASIMETRIA=', sp.skew(ALTURAS)
55.
56.
57. # HISTOGRAMA NORMALIZADO
58.
59.
60. plt.figure (figsize=[10,6])
61. bins = np.linspace(-3, 3, 31)
62. plt.hist(np.log(ALTURAS),bins=bins, color = 'r',alpha=0.7, histtype='bar',ec='k')

63. plt.title(u'Histograma normalizado de la altura de ola',fontsize = 20)


64. plt.xlabel(u'Log (Hs) [m]',fontsize = 15)
65. plt.grid(color = '0.5', linestyle ='--', linewidth=0.5)
66. plt.ylabel (u"$n.datos$", fontsize = 15)
67. plt.ticklabel_format(style='sci', axis='y')
68. plt.xticks(np.arange(-2., 3., 1.))
69.
70. plt.savefig('HISTOGRAMA_NORMALIZADO.png')
71.
72. # VARIABLES ESTADISTICAS NORMALIZADAS
73.
74. print 'PROMEDIO =', np.mean(np.log(ALTURAS))
75. print 'DESVIACION_ESTANDAR=', np.std(np.log(ALTURAS))
76. print 'CURTOSIS=', sp.kurtosis (np.log(ALTURAS),axis=0,fisher=False,bias=True)
77. print 'ASIMETRIA=', sp.skew(np.log(ALTURAS))
78.
79.
80. # HISTOGRAMAS MENSUALES:
81.
82. Mensuales= pd.DataFrame(ALTURAS, index = FECHAS)
83. Mensuales
84.
85. for i in np.arange (1,13):
86.
87. plt.figure (figsize=[10,6])
88. plt.subplot (2,2,1)
89. bins = np.linspace(0, 12, 25)
90. plt.hist(Mensuales[Mensuales.index.month == i],bins=bins, color = 'b',alpha=0.
5, histtype='bar',ec='k')
91. plt.title('Mes:' + str(i),fontsize = 15)
92. plt.xlabel(u'Hs [m]',fontsize = 15)
93. plt.grid(color = '0.5', linestyle ='--', linewidth=0.5)
94. plt.ylabel (u"$n.datos$", fontsize = 15)
95. plt.ticklabel_format(style='sci', axis='y')
96. plt.xticks(np.arange(0., 13., 1.0))
97.
98.
99. # BOXPLOTS Mensuales.
100.
101. Boxplot = []
102.
103. for i in np.arange (1,13):
104. datos_graf = Mensuales[Mensuales.index.month == i]
105. Boxplot.append(datos_graf)
106.
107. plt.figure(figsize=(9, 6))
108. plt.boxplot(Boxplot, sym='.',flierprops={'alpha':0.8,'markeredgecolor':'b'
,'marker':'x'})
109. plt.title('Boxplot Altura de ola significante',fontsize = 12)
110. plt.ylabel ("$Hs [m]$", fontsize = 10)
111. plt.xlabel(u'$Mes$',fontsize = 10)
112. plt.grid(color = '0.5', linestyle ='--', linewidth=0.5)
113. plt.savefig('BOX_PLOT MENSUAL.png')

Potrebbero piacerti anche