Due to a slow evolution in time, drought is often a phenomenon whose consequences take a significant amount of time with respect to its inception to be perceived by the socio-economic sector. This feature allows for the mitigation of some of the impacts of drought, provided there is an effective monitoring system to provide information to decision makers. Effective monitoring of droughts can significantly help early warning systems.
In sub-Saharan Africa, effective rainfall monitoring contributes to the allocation of aid during periods of drought. An important aspect of drought monitoring and the development of an early warning system is the ability to effectively forecast future drought events. Forecasting future drought events in a region is very important for finding sustainable solutions to water management and risk assessment of drought occurrences.
Data driven stochastic models have traditionally been used for drought forecasting. Autoregressive integrated moving average models (ARIMA) have been the most widely used stochastic models for hydrologic drought forecasting. Stochastic models are linear models and are limited in their ability to forecast non-linear data.
To effectively forecast non-linear data, researchers in the last two decades have increasingly begun to utilize artificial neural networks (ANNs) to forecast hydrological data. ANNs have been used in a number of studies as a drought forecasting tool.
In this project, We use Feedforward Artificial Neural Network as model for SPI drought forecasting.
Input data in a excel file, which was collected from a station. This file has the following index :
Year Month Precipitation EDI NAO SOI
Year Month Precipitation SPI Index NAO SOI
seventy percent of data are used for training data and thirty percent for test data.
In this code, Simple ANN without hidden layer is used.
In this MATLAB code, best number of neurons in hidden layer is found in a loop.
In this code, haar wavelet transform is used with ANN.
One of the important parameters in wavelet is level. In this code, we find the best level for wavelet transform in a loop.