{"schemaVersion":2,"id":"forecast","title":"Univariate Time Series & Forecasting","totalStages":32,"modules":[{"id":"transformations","title":"1 · Targets, transformations, and stationarity","summary":"Define the forecasting target before choosing a model.","stageCount":6,"stages":[{"id":"forecast-transformations-guide","index":0,"moduleId":"transformations","moduleIndex":0,"type":"read","title":"Targets, transformations, and stationarity: research guide","skillIds":["forecast.series-transformations","forecast.univariate-stationarity"],"estimatedMinutes":7,"difficulty":"core","points":5},{"id":"forecast-transformations-lab","index":1,"moduleId":"transformations","moduleIndex":1,"type":"interactive","title":"Series transformations intuition lab","skillIds":["forecast.series-transformations"],"estimatedMinutes":6,"difficulty":"core","points":10},{"id":"forecast-transformations-worked","index":2,"moduleId":"transformations","moduleIndex":2,"type":"code","title":"Targets, transformations, and stationarity: worked Python model","skillIds":["forecast.series-transformations"],"estimatedMinutes":10,"difficulty":"core","points":10},{"id":"forecast-transformations-challenge","index":3,"moduleId":"transformations","moduleIndex":3,"type":"codechallenge","title":"Series transformations code challenge","skillIds":["forecast.series-transformations"],"estimatedMinutes":12,"difficulty":"core","points":20},{"id":"forecast-transformations-case","index":4,"moduleId":"transformations","moduleIndex":4,"type":"case","title":"Univariate stationarity: model decision","skillIds":["forecast.univariate-stationarity"],"estimatedMinutes":8,"difficulty":"core","points":15},{"id":"forecast-transformations-match","index":5,"moduleId":"transformations","moduleIndex":5,"type":"match","title":"Univariate stationarity: evidence map","skillIds":["forecast.univariate-stationarity"],"estimatedMinutes":7,"difficulty":"core","points":15}]},{"id":"correlation","title":"2 · ACF, PACF, and dependence","summary":"Read sample correlation patterns as evidence, not an automatic order selector.","stageCount":6,"stages":[{"id":"forecast-correlation-guide","index":6,"moduleId":"correlation","moduleIndex":0,"type":"read","title":"ACF, PACF, and dependence: research guide","skillIds":["forecast.univariate-stationarity","forecast.acf-pacf"],"estimatedMinutes":7,"difficulty":"core","points":5},{"id":"forecast-correlation-lab","index":7,"moduleId":"correlation","moduleIndex":1,"type":"interactive","title":"Univariate stationarity intuition lab","skillIds":["forecast.univariate-stationarity"],"estimatedMinutes":6,"difficulty":"core","points":10},{"id":"forecast-correlation-worked","index":8,"moduleId":"correlation","moduleIndex":2,"type":"code","title":"ACF, PACF, and dependence: worked Python model","skillIds":["forecast.univariate-stationarity"],"estimatedMinutes":10,"difficulty":"core","points":10},{"id":"forecast-correlation-challenge","index":9,"moduleId":"correlation","moduleIndex":3,"type":"codechallenge","title":"Univariate stationarity code challenge","skillIds":["forecast.univariate-stationarity"],"estimatedMinutes":12,"difficulty":"core","points":20},{"id":"forecast-correlation-case","index":10,"moduleId":"correlation","moduleIndex":4,"type":"case","title":"ACF and PACF diagnostics: model decision","skillIds":["forecast.acf-pacf"],"estimatedMinutes":8,"difficulty":"core","points":15},{"id":"forecast-correlation-match","index":11,"moduleId":"correlation","moduleIndex":5,"type":"match","title":"ACF and PACF diagnostics: evidence map","skillIds":["forecast.acf-pacf"],"estimatedMinutes":7,"difficulty":"core","points":15}]},{"id":"arma","title":"3 · ARMA dynamics","summary":"Combine persistent states with transitory innovations.","stageCount":6,"stages":[{"id":"forecast-arma-guide","index":12,"moduleId":"arma","moduleIndex":0,"type":"read","title":"ARMA dynamics: research guide","skillIds":["forecast.acf-pacf","forecast.arma"],"estimatedMinutes":7,"difficulty":"applied","points":5},{"id":"forecast-arma-lab","index":13,"moduleId":"arma","moduleIndex":1,"type":"interactive","title":"ACF and PACF diagnostics intuition lab","skillIds":["forecast.acf-pacf"],"estimatedMinutes":6,"difficulty":"applied","points":10},{"id":"forecast-arma-worked","index":14,"moduleId":"arma","moduleIndex":2,"type":"code","title":"ARMA dynamics: worked Python model","skillIds":["forecast.acf-pacf"],"estimatedMinutes":10,"difficulty":"applied","points":10},{"id":"forecast-arma-challenge","index":15,"moduleId":"arma","moduleIndex":3,"type":"codechallenge","title":"ACF and PACF diagnostics code challenge","skillIds":["forecast.acf-pacf"],"estimatedMinutes":12,"difficulty":"applied","points":20},{"id":"forecast-arma-case","index":16,"moduleId":"arma","moduleIndex":4,"type":"case","title":"ARMA dynamics: model decision","skillIds":["forecast.arma"],"estimatedMinutes":8,"difficulty":"applied","points":15},{"id":"forecast-arma-match","index":17,"moduleId":"arma","moduleIndex":5,"type":"match","title":"ARMA dynamics: evidence map","skillIds":["forecast.arma"],"estimatedMinutes":7,"difficulty":"applied","points":15}]},{"id":"arima","title":"4 · ARIMA and seasonal structure","summary":"Difference parsimoniously and model the remaining dynamics.","stageCount":7,"stages":[{"id":"forecast-arima-guide","index":18,"moduleId":"arima","moduleIndex":0,"type":"read","title":"ARIMA and seasonal structure: research guide","skillIds":["forecast.arma","forecast.arima"],"estimatedMinutes":7,"difficulty":"applied","points":5},{"id":"forecast-arima-lab","index":19,"moduleId":"arima","moduleIndex":1,"type":"interactive","title":"ARMA dynamics intuition lab","skillIds":["forecast.arma"],"estimatedMinutes":6,"difficulty":"applied","points":10},{"id":"forecast-arima-worked","index":20,"moduleId":"arima","moduleIndex":2,"type":"code","title":"ARIMA and seasonal structure: worked Python model","skillIds":["forecast.arma"],"estimatedMinutes":10,"difficulty":"applied","points":10},{"id":"forecast-arima-challenge","index":21,"moduleId":"arima","moduleIndex":3,"type":"codechallenge","title":"ARMA dynamics code challenge","skillIds":["forecast.arma"],"estimatedMinutes":12,"difficulty":"applied","points":20},{"id":"forecast-arima-case","index":22,"moduleId":"arima","moduleIndex":4,"type":"case","title":"ARIMA modeling: model decision","skillIds":["forecast.arima"],"estimatedMinutes":8,"difficulty":"applied","points":15},{"id":"forecast-arima-match","index":23,"moduleId":"arima","moduleIndex":5,"type":"match","title":"ARIMA modeling: evidence map","skillIds":["forecast.arima"],"estimatedMinutes":7,"difficulty":"applied","points":15},{"id":"forecast-arima-checkpoint","index":24,"moduleId":"arima","moduleIndex":6,"type":"quiz","title":"ARIMA and seasonal structure checkpoint","skillIds":["forecast.arma","forecast.arima"],"estimatedMinutes":6,"difficulty":"applied","points":15}]},{"id":"evaluation","title":"5 · Rolling-origin forecast evaluation","summary":"Judge forecasts using information that was genuinely available at each origin.","stageCount":7,"stages":[{"id":"forecast-evaluation-guide","index":25,"moduleId":"evaluation","moduleIndex":0,"type":"read","title":"Rolling-origin forecast evaluation: research guide","skillIds":["forecast.forecast-diagnostics","forecast.rolling-evaluation"],"estimatedMinutes":7,"difficulty":"advanced","points":5},{"id":"forecast-evaluation-lab","index":26,"moduleId":"evaluation","moduleIndex":1,"type":"interactive","title":"Forecast diagnostics intuition lab","skillIds":["forecast.forecast-diagnostics"],"estimatedMinutes":6,"difficulty":"advanced","points":10},{"id":"forecast-evaluation-worked","index":27,"moduleId":"evaluation","moduleIndex":2,"type":"code","title":"Rolling-origin forecast evaluation: worked Python model","skillIds":["forecast.forecast-diagnostics"],"estimatedMinutes":10,"difficulty":"advanced","points":10},{"id":"forecast-evaluation-challenge","index":28,"moduleId":"evaluation","moduleIndex":3,"type":"codechallenge","title":"Forecast diagnostics code challenge","skillIds":["forecast.forecast-diagnostics"],"estimatedMinutes":12,"difficulty":"advanced","points":20},{"id":"forecast-evaluation-case","index":29,"moduleId":"evaluation","moduleIndex":4,"type":"case","title":"Rolling forecast evaluation: model decision","skillIds":["forecast.rolling-evaluation"],"estimatedMinutes":8,"difficulty":"advanced","points":15},{"id":"forecast-evaluation-match","index":30,"moduleId":"evaluation","moduleIndex":5,"type":"match","title":"Rolling forecast evaluation: evidence map","skillIds":["forecast.rolling-evaluation"],"estimatedMinutes":7,"difficulty":"advanced","points":15},{"id":"forecast-evaluation-checkpoint","index":31,"moduleId":"evaluation","moduleIndex":6,"type":"quiz","title":"Rolling-origin forecast evaluation checkpoint","skillIds":["forecast.forecast-diagnostics","forecast.rolling-evaluation"],"estimatedMinutes":6,"difficulty":"advanced","points":15}]}]}
