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.