library(itsmr) 
library(datasets)
library(forecast)
# Converting the data into a time series object:
deaths_ts = ts(deaths, start=c(1974, 1), frequency=12)

# fitting seasonal model with period of 12 and removing the seasonal component:

deaths_ds = decompose(deaths_ts, type="multiplicative")$random

# fitting a quadratic trend to the deseasonalized data:
trend_deaths = lm(deaths_ds ~ poly(time(deaths_ts), 2, raw=TRUE))

# Subtracting the estimated seasonal and trend components from the original data to obtain the estimated noise:
deaths_noise = deaths_ts - decompose(deaths_ts, type="multiplicative")$seasonal - predict(trend_deaths)
Warning: longer object length is not a multiple of shorter object length
acf(deaths_noise)

# Assuming 'deaths' is your time series data vector

# Step 1: Convert the data into a time series object
deaths_ts <- ts(deaths, start=c(1974, 1), frequency=12)

# Step 2: Perform a multiplicative seasonal decomposition
deaths_decomp <- decompose(deaths_ts, type="multiplicative")

# Step 3: Fit a quadratic trend to the deseasonalized data
# Deseasonalize by dividing the time series by the seasonal component
deaths_deseasonalized <- deaths_ts / deaths_decomp$seasonal
# Create a time variable for the trend model
time_var <- c(1:length(deaths_deseasonalized))
# Fit the trend model
trend_model <- lm(deaths_deseasonalized ~ time_var + I(time_var^2))

# Step 4: Subtract the estimated seasonal and trend components from the original data
trend_values <- predict(trend_model)
# Recompose to get the trend with seasonality
seasonal_trend <- trend_values * deaths_decomp$seasonal
# Calculate the noise
deaths_noise <- deaths_ts - seasonal_trend

# Step 5: Plot the ACF of the noise
acf(deaths_noise)

NA
NA

Testing for randomness: Box.test(deaths_noise, lag=20, type=“Ljung-Box”) # ## Box-Ljung test ## ## data: deaths_noise ## X-squared = 202.11, df = 20, p-value < 2.2e-16 # Forecasting the data using a default ARIMA model:

deaths_forecast = forecast(deaths_ts, h=24)

# Using the plot() function to create a plot of the original data, and then add the forecasts using lines().

plot(deaths_ts, xlim=c(1974, 1981), ylim=c(3000, 12000), main="Monthly Deaths", xlab="Year", ylab="Number of Deaths")
lines(deaths_forecast$mean, col="blue")
lines(deaths_forecast$upper[,2], col="red", lty=2)
lines(deaths_forecast$lower[,2], col="red", lty=2)

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Cmd+Option+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Cmd+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

LS0tCnRpdGxlOiAiUiBOb3RlYm9va19Qcml5YSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCmBgYHtyfQpsaWJyYXJ5KGl0c21yKSAKbGlicmFyeShkYXRhc2V0cykKbGlicmFyeShmb3JlY2FzdCkKYGBgCmBgYHtyfQojIENvbnZlcnRpbmcgdGhlIGRhdGEgaW50byBhIHRpbWUgc2VyaWVzIG9iamVjdDoKZGVhdGhzX3RzID0gdHMoZGVhdGhzLCBzdGFydD1jKDE5NzQsIDEpLCBmcmVxdWVuY3k9MTIpCgojIGZpdHRpbmcgc2Vhc29uYWwgbW9kZWwgd2l0aCBwZXJpb2Qgb2YgMTIgYW5kIHJlbW92aW5nIHRoZSBzZWFzb25hbCBjb21wb25lbnQ6CgpkZWF0aHNfZHMgPSBkZWNvbXBvc2UoZGVhdGhzX3RzLCB0eXBlPSJtdWx0aXBsaWNhdGl2ZSIpJHJhbmRvbQoKIyBmaXR0aW5nIGEgcXVhZHJhdGljIHRyZW5kIHRvIHRoZSBkZXNlYXNvbmFsaXplZCBkYXRhOgp0cmVuZF9kZWF0aHMgPSBsbShkZWF0aHNfZHMgfiBwb2x5KHRpbWUoZGVhdGhzX3RzKSwgMiwgcmF3PVRSVUUpKQoKIyBTdWJ0cmFjdGluZyB0aGUgZXN0aW1hdGVkIHNlYXNvbmFsIGFuZCB0cmVuZCBjb21wb25lbnRzIGZyb20gdGhlIG9yaWdpbmFsIGRhdGEgdG8gb2J0YWluIHRoZSBlc3RpbWF0ZWQgbm9pc2U6CmRlYXRoc19ub2lzZSA9IGRlYXRoc190cyAtIGRlY29tcG9zZShkZWF0aHNfdHMsIHR5cGU9Im11bHRpcGxpY2F0aXZlIikkc2Vhc29uYWwgLSBwcmVkaWN0KHRyZW5kX2RlYXRocykKYWNmKGRlYXRoc19ub2lzZSkKYGBgCgpgYGB7cn0KIyBBc3N1bWluZyAnZGVhdGhzJyBpcyB5b3VyIHRpbWUgc2VyaWVzIGRhdGEgdmVjdG9yCgojIFN0ZXAgMTogQ29udmVydCB0aGUgZGF0YSBpbnRvIGEgdGltZSBzZXJpZXMgb2JqZWN0CmRlYXRoc190cyA8LSB0cyhkZWF0aHMsIHN0YXJ0PWMoMTk3NCwgMSksIGZyZXF1ZW5jeT0xMikKCiMgU3RlcCAyOiBQZXJmb3JtIGEgbXVsdGlwbGljYXRpdmUgc2Vhc29uYWwgZGVjb21wb3NpdGlvbgpkZWF0aHNfZGVjb21wIDwtIGRlY29tcG9zZShkZWF0aHNfdHMsIHR5cGU9Im11bHRpcGxpY2F0aXZlIikKCiMgU3RlcCAzOiBGaXQgYSBxdWFkcmF0aWMgdHJlbmQgdG8gdGhlIGRlc2Vhc29uYWxpemVkIGRhdGEKIyBEZXNlYXNvbmFsaXplIGJ5IGRpdmlkaW5nIHRoZSB0aW1lIHNlcmllcyBieSB0aGUgc2Vhc29uYWwgY29tcG9uZW50CmRlYXRoc19kZXNlYXNvbmFsaXplZCA8LSBkZWF0aHNfdHMgLyBkZWF0aHNfZGVjb21wJHNlYXNvbmFsCiMgQ3JlYXRlIGEgdGltZSB2YXJpYWJsZSBmb3IgdGhlIHRyZW5kIG1vZGVsCnRpbWVfdmFyIDwtIGMoMTpsZW5ndGgoZGVhdGhzX2Rlc2Vhc29uYWxpemVkKSkKIyBGaXQgdGhlIHRyZW5kIG1vZGVsCnRyZW5kX21vZGVsIDwtIGxtKGRlYXRoc19kZXNlYXNvbmFsaXplZCB+IHRpbWVfdmFyICsgSSh0aW1lX3Zhcl4yKSkKCiMgU3RlcCA0OiBTdWJ0cmFjdCB0aGUgZXN0aW1hdGVkIHNlYXNvbmFsIGFuZCB0cmVuZCBjb21wb25lbnRzIGZyb20gdGhlIG9yaWdpbmFsIGRhdGEKdHJlbmRfdmFsdWVzIDwtIHByZWRpY3QodHJlbmRfbW9kZWwpCiMgUmVjb21wb3NlIHRvIGdldCB0aGUgdHJlbmQgd2l0aCBzZWFzb25hbGl0eQpzZWFzb25hbF90cmVuZCA8LSB0cmVuZF92YWx1ZXMgKiBkZWF0aHNfZGVjb21wJHNlYXNvbmFsCiMgQ2FsY3VsYXRlIHRoZSBub2lzZQpkZWF0aHNfbm9pc2UgPC0gZGVhdGhzX3RzIC0gc2Vhc29uYWxfdHJlbmQKCiMgU3RlcCA1OiBQbG90IHRoZSBBQ0Ygb2YgdGhlIG5vaXNlCmFjZihkZWF0aHNfbm9pc2UpCgoKYGBgCgoKClRlc3RpbmcgZm9yIHJhbmRvbW5lc3M6CkJveC50ZXN0KGRlYXRoc19ub2lzZSwgbGFnPTIwLCB0eXBlPSJManVuZy1Cb3giKQojIAojIyAgQm94LUxqdW5nIHRlc3QKIyMgCiMjIGRhdGE6ICBkZWF0aHNfbm9pc2UKIyMgWC1zcXVhcmVkID0gMjAyLjExLCBkZiA9IDIwLCBwLXZhbHVlIDwgMi4yZS0xNgojIEZvcmVjYXN0aW5nIHRoZSBkYXRhIHVzaW5nIGEgZGVmYXVsdCBBUklNQSBtb2RlbDoKCmBgYHtyfQpkZWF0aHNfZm9yZWNhc3QgPSBmb3JlY2FzdChkZWF0aHNfdHMsIGg9MjQpCgojIFVzaW5nIHRoZSBwbG90KCkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgcGxvdCBvZiB0aGUgb3JpZ2luYWwgZGF0YSwgYW5kIHRoZW4gYWRkIHRoZSBmb3JlY2FzdHMgdXNpbmcgbGluZXMoKS4KCnBsb3QoZGVhdGhzX3RzLCB4bGltPWMoMTk3NCwgMTk4MSksIHlsaW09YygzMDAwLCAxMjAwMCksIG1haW49Ik1vbnRobHkgRGVhdGhzIiwgeGxhYj0iWWVhciIsIHlsYWI9Ik51bWJlciBvZiBEZWF0aHMiKQpsaW5lcyhkZWF0aHNfZm9yZWNhc3QkbWVhbiwgY29sPSJibHVlIikKbGluZXMoZGVhdGhzX2ZvcmVjYXN0JHVwcGVyWywyXSwgY29sPSJyZWQiLCBsdHk9MikKbGluZXMoZGVhdGhzX2ZvcmVjYXN0JGxvd2VyWywyXSwgY29sPSJyZWQiLCBsdHk9MikKYGBgCgoKCgoKQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkNtZCtPcHRpb24rSSouCgpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkNtZCtTaGlmdCtLKiB0byBwcmV2aWV3IHRoZSBIVE1MIGZpbGUpLiAKClRoZSBwcmV2aWV3IHNob3dzIHlvdSBhIHJlbmRlcmVkIEhUTUwgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGVkaXRvci4gQ29uc2VxdWVudGx5LCB1bmxpa2UgKktuaXQqLCAqUHJldmlldyogZG9lcyBub3QgcnVuIGFueSBSIGNvZGUgY2h1bmtzLiBJbnN0ZWFkLCB0aGUgb3V0cHV0IG9mIHRoZSBjaHVuayB3aGVuIGl0IHdhcyBsYXN0IHJ1biBpbiB0aGUgZWRpdG9yIGlzIGRpc3BsYXllZC4KCg==