Bevezetés
A globális egészségügyi válságokkal és a fertőző betegségek állandóan jelenlévő fenyegetésével szemben a pontos járvány-előrejelzési (gyakran epicasting-nak nevezett) modellek felbecsülhetetlen értékű eszközzé váltak a közegészségügyi tisztviselők, a döntéshozók és a közösségek számára világszerte. A megbízható előrejelzések iránti növekvő igény kielégítése érdekében az előrejelzési irodalom jelentősen fejlődött az elmúlt években. A hagyományos előrejelzési modellek gyakran egyszerűsített feltevésekre és lineáris kapcsolatokra támaszkodnak, és nem képesek megragadni a valós adatokban rejlő bonyolult mintákat és bizonytalanságokat.
Ebben a blogbejegyzésben elmélyülünk az epicasting birodalmában, és bemutatunk egy nem szokványos epicastert, amely kifejezetten Ensemble Wavelet Neural Network (EWNet) néven ismert, és amelyet a pontos, hosszú távú előrejelzésre szabtak. A wavelet dekompozíció matematikai megfogalmazásának és a fejlett neurális hálózatok erejének kihasználásával az EWNet keretrendszer javíthatja képességünket a járványok terjedésének, súlyosságának és pályájának előrejelzésére, felbecsülhetetlen értékű betekintést nyújtva a proaktív döntéshozatalhoz és a közegészségügyi beavatkozásokhoz. . Az EWNet keretrendszer lényegében egy ensemble neurális hálózati architektúra, amely az adott idősort több szintre bontja a maximális átfedési diszkrét wavelet transzformáció segítségével, és az így létrejövő dekomponált sorozatokat lokális autoregresszív neurális hálózatok segítségével modellezi.
Ebben a cikkben egy kódrészletre összpontosítunk, amely bemutatja az EWNet modell értékelését egy visszatartási adatkészleten. Az egyes kódszegmensek átfogó lebontásával, célszerű magyarázatokkal és példákkal kísérve, az a célunk, hogy az olvasók rendelkezzenek a szükséges ismeretekkel ahhoz, hogy sikeresen használják az EWNetet egyéni epicasting használati eseteikben.
A szükséges könyvtár és adatkészlet importálása
A feltárás megkezdéséhez importáljuk a szükséges könyvtárakat, és betöltjük az adatkészletet. Ebben a részben importálunk readr csomagot az adatok betöltéséhez, epicasting csomagot az EWNet modell megvalósításához, Metrics csomagot a teljesítmény értékeléséhez, és a forecast és ggplot2csomagok a modell kimenetének megjelenítéséhez. Ezek a könyvtárak képezik elemzésünk alapját, lehetővé téve számunkra az adatok kezelését, a modellek betanítását, a teljesítmény értékelését és az eredmények megjelenítését. Ezután betöltjük az adatkészletet a Readr read_csv függvényével, és lekérjük az indiai Ahmedábádban jelentett dengue-láz előfordulási eseteinek heti számát CSV-formátumban egy távoli helyről. A readr használatával az adatokat egy kényelmes DataFrame struktúrában kapjuk meg a további feldolgozáshoz.
# Loading the required packages library(readr) library(epicasting) library(Metrics) library(forecast) library(ggplot2) # Importing the dataset path <- "https://raw.githubusercontent.com/mad-stat/XEWNet/main/Dataset/Ahmedabad_data_weekly.csv" data <- read_csv(path) head(data, 3) # A tibble: 3 × 4 Year Week Cases Rainfall <dbl> <dbl> <dbl> <dbl> 1 2005 1 0 0 2 2005 2 4 0 3 2005 3 0 0
Az ebben a tanulmányban vizsgált adatkészlet négy oszlopból áll, amelyekben az Év és a hét az időbélyeg, az Esetek a bejelentett dengue-láz fertőzések számát jelöli, és em>csapadék, amely a vizsgált területen lehullott csapadék mennyiségét jelzi. Itt az elsődleges érdeklődésre számot tartó változónk a dengue-láz esetek száma, a csapadék pedig exogén változóként használható a betegség előfordulásának előrejelzésére.
A képzési adatkészlet létrehozása
Az EWNet modell illesztése előtt létrehozunk egy képzési adatkészletet úgy, hogy eltávolítjuk az utolsó 13 hetet az eredeti adatkészletből. Ez a folyamat biztosítja, hogy rendelkezünk egy visszatartási adatkészlettel a mód teljesítményének értékeléséhez. A kódrészlet ezen szegmensében bemutatjuk, hogyan használható az alhalmaz függvény az adatkeret utolsó 13 sorának eldobására, ami a betanítási adatkészletet eredményezi. Az alhalmaz függvényhez idősor objektumra van szükség, ezért a ts függvényt használjuk az adatkeret idősor objektummá alakítására. A képzési adathalmaz végét megvizsgálva ellenőrizhetjük, hogy az utolsó 13 hetet nem tartalmazza, előzetesen kiértékelve.
# Preparing train and test data h <- 13 # length of forecast horizon train <- subset(ts(data), end = length(data$Cases)-h) test <- tail(data, h) tail(train, 3) Time Series: Start = 409 End = 411 Frequency = 1 Year Week Cases Rainfall 409 2012 38 18 0.211449 410 2012 39 36 7.613400 411 2012 40 49 0.000000
A modell illesztése
Az elkészített betanítási adatkészlettel immár illeszthetjük az EWNet modellt. A modellképzés elindításához az alapkeretet az ewnet függvény használatával illesztjük a ts = train argumentumokkal, amelyek a betanítási adatokat jelölik, és az NForecast = h argumentumokkal. a kívánt előrejelzési horizont.
# Fitting the basic EWNet model model <- ewnet(ts = train, NForecast = h) model $Parameters [1] 6 4 $Forecast [1] 43.04796 31.66029 36.41120 39.52922 29.20209 27.46914 28.25899 24.77522 25.63985 [10] 25.11552 20.56561 16.32655 14.44759
Ez a kódrészlet egy sor kimenetet eredményez, nevezetesen paramétereket, amelyek jelzik az autoregresszív neurális hálózat bemeneti és rejtett rétegében lévő csomópontok számát, valamint a kívánt horizonthoz generált előrejelzést. .
Az EWNet architektúra alapvető megvalósítása tovább módosítható további argumentumok beépítésével (ezek opcionálisak), az alábbiak szerint:
- Hullámszintek — jelzik a wavelet-bontás szintjeinek számát (alapértelmezett = floor(log(length(train))))
- MaxARParam — a helyi neurális hálózatok bemeneti rétegében található csomópontok számát jelöli, amelyek keresztellenőrzéssel választhatók ki.
- PI — létrehozza az előrejelzési intervallumot, ha IGAZ értékre van állítva.
- xreg_train — exogén változót épít be az EWNet modell képzésébe.
- xreg_test – az exogén változó értékei, amelyeket az előrejelzési fázisban kell használni.
- ret_fit – logikai operátor, ha IGAZ-ra van állítva, az EWNet modell által a betanítási szegmenshez generált előrejelzési értékeket adja vissza.
Az alább megadott kódrészletben az EWNet keretrendszert valósítjuk meg a fent említett argumentumokkal. A csapadék adatok exogén változóként kerülnek felhasználásra, és ennek megfelelően jön létre a végső előrejelzés
# Fitting modified EWNet model rain <- ts(data$Rainfall) train_rain <- subset(rain, end = length(rain) - h) test_rain <- head(train_rain, h) model_2 <- ewnet(ts = train, NForecast = h, Waveletlevels = floor(log(length(ts))), MaxARParam = 9, PI = TRUE, xreg_train = train_rain, xreg_test = test_rain, ret_fit = TRUE)
Figyelembe vesszük a csapadék adatokat, és az alhalmaz függvényt használjuk a vonatadatok kronológiai egyeztetésére. A Rainfall jövőbeli értékeinek megadásához figyelembe vesszük a train_rain változó első tizenhárom megfigyelését, hogy mintán kívüli előrejelzéseket hozzunk létre a dengue-láz eseteire.
A modell értékelése
Modellünk előrejelzéseinek pontosságának felmérésére a négyzetes hiba (RMSE) értékét alkalmazzuk értékelési mérőszámként. Ebben a részben összehasonlítjuk a modellünk által generált előrejelzett értékeket az eredeti adatkészlet utolsó 13 hetének tényleges értékeivel. Ezen értékek kinyerésével kiszámítjuk a ͏RMSE-t a rmse függvény segítségével a Metrics csomagból. Az „RMSE” a becsült és a tényleges értékek közötti négyzetes hibák átlagos nagyságát méri, értékes betekintést nyújtva a modell teljesítményébe. Az RMSE kinyomtatása lehetővé teszi, hogy felmérjük az idősoros előrejelzési modellünk hatékonyságát.
# Calculate RMSE between expected and predicted values rmse(test, model_2$Forecast) [1] 5.997646
Az eredmények vizualizálása
Az utolsó részben az autoplot funkció segítségével vizualizáljuk az EWNet-modellhez biztosított betanítási adatokat, valamint az elmúlt 13 hét várható vetületi értékeit, hogy jobban megértsük modellünk teljesítményét. Először létrehozunk egy adatkeretet, amely tárolja az időbélyegeket, a tényleges tesztértékeket és az előrejelzett értékeket, majd a ggplot függvény segítségével létrehozunk egy vonaldiagramot, amely bemutatja az előrejelzett értékeket és a tényleges értékek szóródiagramját. ugyanaz a figura. Ez a vizuális ábrázolás lehetővé teszi számunkra, hogy felmérjük, hogy a megjósolt értékek mennyire igazodnak az alapigazsághoz. A címkék hozzáadásával a diagram intuitív eszközzé válik az idősoros előrejelzési modellünk pontosságának és hatékonyságának értékeléséhez.
# Visualizing the training data theme_set( theme_classic() + theme(legend.position = "right") ) autoplot(train) + labs( title = "Ahmedabad Dengue Training ", x = "Time (weeks)", y = "Cases")
# Visualizing expected and predicted values final_output <- data.frame("Time" = 412:424) final_output["EWNet_Forecast"] <- model_2$Forecast final_output["Actual_Values"] <- test ggplot(final_output, aes(x = Time)) + # Create default ggplot2 line plot geom_line(aes(y = EWNet_Forecast), size = 1.5, color = 'blue')+ geom_point(aes(y = Actual_Values), size = 3, color = 'red') + labs( title = "Ahmedabad Dengue Forecast Horizon", x = "Time (weeks)", y = "Cases")
Következtetés
Ebben a blogban az EWNet modell részletes megvalósítását és értékelését vizsgáltuk meg egy mintán kívüli adatkészleten. A kódrészletek mindegyike betekintést nyújtott a kód különböző aspektusaiba, a csomagok importálásától és az adatkészlet betöltésétől a modell meghatározásáig, jövőbeli előrejelzések generálásáig, teljesítményének értékeléséig és az eredmények megjelenítéséig. Az EWNet nem stacionárius, nemlineáris és szezonális idősorok kezelésére vonatkozó képességeinek kihasználásával pontos előrejelzéseket kaphatunk a kívánt horizontokra vonatkozóan.
Az idősorelemzés és az előrejelzés olyan hatékony technikák, amelyek lehetővé teszik a tájékozott döntéshozatalt és a proaktív tervezést. A kódrészlet bontása révén az olvasók átfogó megértést nyertek arról, hogyan használhatják fel az EWNet-et saját idősoraikra és előrejelzési feladataikra. Így ezeket a fogalmakat sajátos tartományukra és adatkészleteikre adaptálva és alkalmazva az olvasók magabiztosan tehetnek pontos előrejelzéseket, és jelentős betekintést nyerhetnek.
Ha eddig sikerült, köszönöm, hogy elolvastad a blogomat! Az ebben a blogban használt kódokat a GitHubon is megtekintheti. Ha többet szeretne megtudni az EWNet modell műszaki jellemzőiről, böngéssze át a következő hivatkozásokat.
- "A folyóirat verziója"
- "Arxiv verzió"
- "R csomag"
- "Linkedin bejegyzés"
- "Github link"
Lépjen kapcsolatba velem, és ossza meg visszajelzését a Linkedin, GitHub és e-mail oldalakon.