From 672ca9494e2e490e698b189fa587f3b2831e6c1e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:31:35 +0000 Subject: [PATCH 01/15] Initial plan From 1db6719c305bce2e1d60db1b12bca758faa27da3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:33:58 +0000 Subject: [PATCH 02/15] Convert man/CSEGriskfigure.Rd to Roxygen2 header in R/CSEGriskfigure.R Co-authored-by: eeholmes-uw <66437309+eeholmes-uw@users.noreply.github.com> Agent-Logs-Url: https://github.com/eeholmes-uw/MARSS/sessions/00fc5ffb-dcc6-47b6-9a7e-7528d933fc41 --- R/CSEGriskfigure.R | 49 +++++++++++++++++++++++++++++++++++++++ man/CSEGriskfigure.Rd | 53 ------------------------------------------- 2 files changed, 49 insertions(+), 53 deletions(-) delete mode 100644 man/CSEGriskfigure.Rd diff --git a/R/CSEGriskfigure.R b/R/CSEGriskfigure.R index e75a970e..41c8c4ce 100644 --- a/R/CSEGriskfigure.R +++ b/R/CSEGriskfigure.R @@ -1,3 +1,52 @@ +#' Plot Extinction Risk Metrics +#' +#' @description +#' Generates a six-panel plot of extinction risk metrics used in Population Viability Analysis (PVA). This is a function used by one of the vignettes in the [MARSS-package()]. +#' +#' @param data A data matrix with 2 columns; time in first column and counts in second column. Note time is down rows, which is different than the base [MARSS-package()] functions. +#' @param te Length of forecast period (positive integer) +#' @param absolutethresh Is extinction threshold an absolute number? (T/F) +#' @param threshold Extinction threshold either as an absolute number, if `absolutethresh=TRUE`, or as a fraction of current population count, if `absolutethresh=FALSE`. +#' @param datalogged Are the data already logged? (T/F) +#' @param silent Suppress printed output? (T/F) +#' @param return.model Return state-space model as [marssMLE()] object? (T/F) +#' @param CI.method Confidence interval method: "hessian", "parametric", "innovations", or "none". See [MARSSparamCIs()]. +#' @param CI.sim Number of simulations for bootstrap confidence intervals (positive integer). +#' +#' @details +#' Panel 1: Time-series plot of the data. +#' Panel 2: CDF of extinction risk. +#' Panel 3: PDF of time to reach threshold. +#' Panel 4: Probability of reaching different thresholds during forecast period. +#' Panel 5: Sample projections. +#' Panel 6: TMU plot (uncertainty as a function of the forecast). +#' +#' @return +#' If `return.model=TRUE`, an object of class [marssMLE()]. +#' +#' @references +#' Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science +#' Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type `RShowDoc("UserGuide",package="MARSS")` to open a copy. +#' +#' (theory behind the figure) Holmes, E. E., J. L. Sabo, S. V. Viscido, and W. F. Fagan. (2007) A statistical approach to quasi-extinction forecasting. Ecology Letters 10:1182-1198. +#' +#' (CDF and PDF calculations) Dennis, B., P. L. Munholland, and J. M. Scott. (1991) Estimation of growth and extinction parameters for endangered species. Ecological Monographs 61:115-143. +#' +#' (TMU figure) Ellner, S. P. and E. E. Holmes. (2008) Resolving the debate on when extinction risk is predictable. Ecology Letters 11:E1-E5. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA, and Steve Ellner, Cornell Univ. +#' +#' @seealso [MARSSboot()], [marssMLE()], [CSEGtmufigure()] +#' +#' @examples +#' d <- harborSeal[, 1:2] +#' kem <- CSEGriskfigure(d, datalogged = TRUE) +#' +#' @name CSEGriskfigure +#' @aliases CSEGriskfigure +#' @keywords experimental hplot +#' @export CSEGriskfigure <- function(data, te = 100, absolutethresh = FALSE, threshold = 0.1, datalogged = FALSE, silent = FALSE, return.model = FALSE, CI.method = "hessian", CI.sim = 1000) { if (!(CI.method %in% c("hessian", "parametric", "innovations", "none"))) { stop("Stopped in CSEGriskfigure(): Allowed values of 'CI.method' are \"none\", \"hessian\", \"parametric\", and \"innovations\".\n", call. = FALSE) diff --git a/man/CSEGriskfigure.Rd b/man/CSEGriskfigure.Rd deleted file mode 100644 index 4ddcfe1f..00000000 --- a/man/CSEGriskfigure.Rd +++ /dev/null @@ -1,53 +0,0 @@ -\name{CSEGriskfigure} -\alias{CSEGriskfigure} -\keyword{experimental} -\title{ Plot Extinction Risk Metrics } -\description{ - Generates a six-panel plot of extinction risk metrics used in Population Viability Analysis (PVA). This is a function used by one of the vignettes in the \code{\link{MARSS-package}}. -} -\usage{ -CSEGriskfigure(data, te = 100, absolutethresh = FALSE, threshold = 0.1, - datalogged = FALSE, silent = FALSE, return.model = FALSE, - CI.method = "hessian", CI.sim = 1000) -} -\arguments{ - \item{data}{ A data matrix with 2 columns; time in first column and counts in second column. Note time is down rows, which is different than the base \code{\link{MARSS-package}} functions.} - \item{te}{ Length of forecast period (positive integer) } - \item{absolutethresh}{ Is extinction threshold an absolute number? (T/F)} - \item{threshold}{ Extinction threshold either as an absolute number, if \code{absolutethresh=TRUE}, or as a fraction of current population count, if \code{absolutethresh=FALSE}. } - \item{datalogged}{ Are the data already logged? (T/F)} - \item{silent}{ Suppress printed output? (T/F) } - \item{return.model}{ Return state-space model as \code{\link{marssMLE}} object? (T/F)} - \item{CI.method}{ Confidence interval method: "hessian", "parametrc", "innovations", or "none". See \code{\link{MARSSparamCIs}}. } - \item{CI.sim}{ Number of simulations for bootstrap confidence intervals (positive integer). } -} -\details{ - Panel 1: Time-series plot of the data. - Panel 2: CDF of extinction risk. - Panel 3: PDF of time to reach threshold. - Panel 4: Probability of reaching different thresholds during forecast period. - Panel 5: Sample projections. - Panel 6: TMU plot (uncertainty as a function of the forecast). -} -\value{ - If \code{return.model=TRUE}, an object of class \code{\link{marssMLE}}. -} -\references{ -Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science -Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type \code{RShowDoc("UserGuide",package="MARSS")} to open a copy. - -(theory behind the figure) Holmes, E. E., J. L. Sabo, S. V. Viscido, and W. F. Fagan. (2007) A statistical approach to quasi-extinction forecasting. Ecology Letters 10:1182-1198. - -(CDF and PDF calculations) Dennis, B., P. L. Munholland, and J. M. Scott. (1991) Estimation of growth and extinction parameters for endangered species. Ecological Monographs 61:115-143. - -(TMU figure) Ellner, S. P. and E. E. Holmes. (2008) Resolving the debate on when extinction risk is predictable. Ecology Letters 11:E1-E5. - } -\author{ - Eli Holmes, NOAA, Seattle, USA, and Steve Ellner, Cornell Univ. -} -\seealso{ \code{\link{MARSSboot}}, \code{\link{marssMLE}}, \code{\link{CSEGtmufigure}} } -\examples{ -d <- harborSeal[, 1:2] -kem <- CSEGriskfigure(d, datalogged = TRUE) -} -\keyword{ hplot } From 919da2303dcb4aa3197e55c1525d5142d0fd0fb4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:53:21 +0000 Subject: [PATCH 03/15] Migrate CSEGriskfigure docs from hand-written .Rd to Roxygen2 Co-authored-by: eeholmes-uw <66437309+eeholmes-uw@users.noreply.github.com> Agent-Logs-Url: https://github.com/eeholmes-uw/MARSS/sessions/e5275a26-859f-4e7e-bcd5-f0f1a55a20eb --- R/CSEGriskfigure.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/R/CSEGriskfigure.R b/R/CSEGriskfigure.R index 41c8c4ce..5b038ca7 100644 --- a/R/CSEGriskfigure.R +++ b/R/CSEGriskfigure.R @@ -14,12 +14,12 @@ #' @param CI.sim Number of simulations for bootstrap confidence intervals (positive integer). #' #' @details -#' Panel 1: Time-series plot of the data. -#' Panel 2: CDF of extinction risk. -#' Panel 3: PDF of time to reach threshold. -#' Panel 4: Probability of reaching different thresholds during forecast period. -#' Panel 5: Sample projections. -#' Panel 6: TMU plot (uncertainty as a function of the forecast). +#' * Panel 1: Time-series plot of the data. +#' * Panel 2: CDF of extinction risk. +#' * Panel 3: PDF of time to reach threshold. +#' * Panel 4: Probability of reaching different thresholds during forecast period. +#' * Panel 5: Sample projections. +#' * Panel 6: TMU plot (uncertainty as a function of the forecast). #' #' @return #' If `return.model=TRUE`, an object of class [marssMLE()]. From 0e83792590d7717fae58405fe20d3799172ec60e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 00:01:07 +0000 Subject: [PATCH 04/15] Add GitHub Actions workflow: R CMD check + PDF manual + HTML docs artifacts Co-authored-by: eeholmes-uw <66437309+eeholmes-uw@users.noreply.github.com> Agent-Logs-Url: https://github.com/eeholmes-uw/MARSS/sessions/20e969b6-2399-4812-90f2-04bee8133b1f --- .github/workflows/check-and-docs.yaml | 102 ++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 .github/workflows/check-and-docs.yaml diff --git a/.github/workflows/check-and-docs.yaml b/.github/workflows/check-and-docs.yaml new file mode 100644 index 00000000..ff2ad335 --- /dev/null +++ b/.github/workflows/check-and-docs.yaml @@ -0,0 +1,102 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Runs R CMD check, builds the PDF manual, and builds a pkgdown HTML preview +# for the CSEGriskfigure documentation page. Artifacts are uploaded so they +# can be downloaded and inspected. +on: + push: + branches: [main, master, "copilot/**"] + pull_request: + branches: [main, master] + workflow_dispatch: + +name: check-and-docs + +jobs: + check-and-docs: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + _R_CHECK_FORCE_SUGGESTS_: false + _R_CHECK_CRAN_INCOMING_: false + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + extra-repositories: https://atsa-es.r-universe.dev + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: | + any::rcmdcheck + any::roxygen2 + any::pkgdown + local::. + needs: check + + # Regenerate man/*.Rd from the inline Roxygen2 headers + - name: Roxygenise + run: roxygen2::roxygenise() + shell: Rscript {0} + + # Run R CMD check (mirrors the r-lib check-r-package action) + - name: R CMD check + id: rcmdcheck + run: | + options(crayon.enabled = TRUE) + if (Sys.getenv("_R_CHECK_FORCE_SUGGESTS_", "") == "") Sys.setenv("_R_CHECK_FORCE_SUGGESTS_" = "false") + if (Sys.getenv("_R_CHECK_CRAN_INCOMING_", "") == "") Sys.setenv("_R_CHECK_CRAN_INCOMING_" = "false") + check_results <- rcmdcheck::rcmdcheck( + args = c("--no-manual", "--as-cran"), + build_args = "--no-manual", + error_on = "warning", + check_dir = "check" + ) + shell: Rscript {0} + + - name: Show testthat output + if: always() + run: | + find check -name 'testthat.Rout*' -exec cat '{}' \; || true + shell: bash + + # Build the PDF reference manual + - name: Build PDF manual + run: | + R CMD Rd2pdf --no-preview --output=MARSS-manual.pdf . + shell: bash + + # Build the full pkgdown site (HTML docs) + - name: Build pkgdown site + run: | + pkgdown::build_site(new_process = FALSE, install = FALSE) + shell: Rscript {0} + + # Upload the PDF manual as a downloadable artifact + - name: Upload PDF manual + if: always() + uses: actions/upload-artifact@v4 + with: + name: MARSS-pdf-manual + path: MARSS-manual.pdf + + # Upload the pkgdown HTML site as a downloadable artifact + - name: Upload HTML docs + if: always() + uses: actions/upload-artifact@v4 + with: + name: MARSS-html-docs + path: docs/ + + # Upload R CMD check results on failure + - name: Upload check results + if: failure() + uses: actions/upload-artifact@v4 + with: + name: check-results + path: check/ From 7cab275ecb34299fca38bd9f5d90e45699c39706 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 00:13:35 +0000 Subject: [PATCH 05/15] Remove GitHub Actions workflow; add HTML preview of CSEGriskfigure docs Co-authored-by: eeholmes-uw <66437309+eeholmes-uw@users.noreply.github.com> Agent-Logs-Url: https://github.com/eeholmes-uw/MARSS/sessions/8d74b81d-528d-4ae0-a4c3-83098a0c7deb --- .github/workflows/check-and-docs.yaml | 102 ------------------ CSEGriskfigure_preview.html | 150 ++++++++++++++++++++++++++ 2 files changed, 150 insertions(+), 102 deletions(-) delete mode 100644 .github/workflows/check-and-docs.yaml create mode 100644 CSEGriskfigure_preview.html diff --git a/.github/workflows/check-and-docs.yaml b/.github/workflows/check-and-docs.yaml deleted file mode 100644 index ff2ad335..00000000 --- a/.github/workflows/check-and-docs.yaml +++ /dev/null @@ -1,102 +0,0 @@ -# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples -# Runs R CMD check, builds the PDF manual, and builds a pkgdown HTML preview -# for the CSEGriskfigure documentation page. Artifacts are uploaded so they -# can be downloaded and inspected. -on: - push: - branches: [main, master, "copilot/**"] - pull_request: - branches: [main, master] - workflow_dispatch: - -name: check-and-docs - -jobs: - check-and-docs: - runs-on: ubuntu-latest - env: - GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - _R_CHECK_FORCE_SUGGESTS_: false - _R_CHECK_CRAN_INCOMING_: false - - steps: - - uses: actions/checkout@v4 - - - uses: r-lib/actions/setup-pandoc@v2 - - - uses: r-lib/actions/setup-r@v2 - with: - use-public-rspm: true - extra-repositories: https://atsa-es.r-universe.dev - - - uses: r-lib/actions/setup-r-dependencies@v2 - with: - extra-packages: | - any::rcmdcheck - any::roxygen2 - any::pkgdown - local::. - needs: check - - # Regenerate man/*.Rd from the inline Roxygen2 headers - - name: Roxygenise - run: roxygen2::roxygenise() - shell: Rscript {0} - - # Run R CMD check (mirrors the r-lib check-r-package action) - - name: R CMD check - id: rcmdcheck - run: | - options(crayon.enabled = TRUE) - if (Sys.getenv("_R_CHECK_FORCE_SUGGESTS_", "") == "") Sys.setenv("_R_CHECK_FORCE_SUGGESTS_" = "false") - if (Sys.getenv("_R_CHECK_CRAN_INCOMING_", "") == "") Sys.setenv("_R_CHECK_CRAN_INCOMING_" = "false") - check_results <- rcmdcheck::rcmdcheck( - args = c("--no-manual", "--as-cran"), - build_args = "--no-manual", - error_on = "warning", - check_dir = "check" - ) - shell: Rscript {0} - - - name: Show testthat output - if: always() - run: | - find check -name 'testthat.Rout*' -exec cat '{}' \; || true - shell: bash - - # Build the PDF reference manual - - name: Build PDF manual - run: | - R CMD Rd2pdf --no-preview --output=MARSS-manual.pdf . - shell: bash - - # Build the full pkgdown site (HTML docs) - - name: Build pkgdown site - run: | - pkgdown::build_site(new_process = FALSE, install = FALSE) - shell: Rscript {0} - - # Upload the PDF manual as a downloadable artifact - - name: Upload PDF manual - if: always() - uses: actions/upload-artifact@v4 - with: - name: MARSS-pdf-manual - path: MARSS-manual.pdf - - # Upload the pkgdown HTML site as a downloadable artifact - - name: Upload HTML docs - if: always() - uses: actions/upload-artifact@v4 - with: - name: MARSS-html-docs - path: docs/ - - # Upload R CMD check results on failure - - name: Upload check results - if: failure() - uses: actions/upload-artifact@v4 - with: - name: check-results - path: check/ diff --git a/CSEGriskfigure_preview.html b/CSEGriskfigure_preview.html new file mode 100644 index 00000000..ec6473e2 --- /dev/null +++ b/CSEGriskfigure_preview.html @@ -0,0 +1,150 @@ +R: Plot Extinction Risk Metrics + + + + + + +
+ +
CSEGriskfigureR Documentation
+ +

Plot Extinction Risk Metrics

+ +

Description

+ +

Generates a six-panel plot of extinction risk metrics used in Population Viability Analysis (PVA). This is a function used by one of the vignettes in the MARSS-package(). +

+ + +

Usage

+ +
CSEGriskfigure(
+  data,
+  te = 100,
+  absolutethresh = FALSE,
+  threshold = 0.1,
+  datalogged = FALSE,
+  silent = FALSE,
+  return.model = FALSE,
+  CI.method = "hessian",
+  CI.sim = 1000
+)
+
+ + +

Arguments

+ + + + + + + + + + + + + + + + + + + + +
data +

A data matrix with 2 columns; time in first column and counts in second column. Note time is down rows, which is different than the base MARSS-package() functions.

+
te +

Length of forecast period (positive integer)

+
absolutethresh +

Is extinction threshold an absolute number? (T/F)

+
threshold +

Extinction threshold either as an absolute number, if absolutethresh=TRUE, or as a fraction of current population count, if absolutethresh=FALSE.

+
datalogged +

Are the data already logged? (T/F)

+
silent +

Suppress printed output? (T/F)

+
return.model +

Return state-space model as marssMLE() object? (T/F)

+
CI.method +

Confidence interval method: "hessian", "parametric", "innovations", or "none". See MARSSparamCIs().

+
CI.sim +

Number of simulations for bootstrap confidence intervals (positive integer).

+
+ + +

Details

+ + + + + + +

Value

+ +

If return.model=TRUE, an object of class marssMLE(). +

+ + +

Author(s)

+ +

Eli Holmes, NOAA, Seattle, USA, and Steve Ellner, Cornell Univ. +

+ + +

References

+ +

Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science +Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type RShowDoc("UserGuide",package="MARSS") to open a copy. +

+

(theory behind the figure) Holmes, E. E., J. L. Sabo, S. V. Viscido, and W. F. Fagan. (2007) A statistical approach to quasi-extinction forecasting. Ecology Letters 10:1182-1198. +

+

(CDF and PDF calculations) Dennis, B., P. L. Munholland, and J. M. Scott. (1991) Estimation of growth and extinction parameters for endangered species. Ecological Monographs 61:115-143. +

+

(TMU figure) Ellner, S. P. and E. E. Holmes. (2008) Resolving the debate on when extinction risk is predictable. Ecology Letters 11:E1-E5. +

+ + +

See Also

+ +

MARSSboot(), marssMLE(), CSEGtmufigure() +

+ + +

Examples

+ +
d <- harborSeal[, 1:2]
+kem <- CSEGriskfigure(d, datalogged = TRUE)
+
+
+ + +
+ From d9c1cb95cc094c0bcfa9b07e15aef4f203646f8a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 00:21:10 +0000 Subject: [PATCH 06/15] Add PDF preview of CSEGriskfigure documentation Co-authored-by: eeholmes-uw <66437309+eeholmes-uw@users.noreply.github.com> Agent-Logs-Url: https://github.com/eeholmes-uw/MARSS/sessions/1e9bf6d3-ae43-49d7-806f-7796c254837f --- CSEGriskfigure_preview.pdf | Bin 0 -> 79742 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 CSEGriskfigure_preview.pdf diff --git a/CSEGriskfigure_preview.pdf b/CSEGriskfigure_preview.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1a338f472b6de739abb4fd8725aab981d29eff57 GIT binary patch literal 79742 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
#bB`x!U79H|ZW;n((p1)pV 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 literal 0 HcmV?d00001 From 7c48c350fce9a3fd614c3d51aea3cbb4350d1acb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 00:52:56 +0000 Subject: [PATCH 07/15] Batch 1: Convert CSEGtmufigure, MARSS, MARSSFisherI, MARSS_dfa, MARSS_marss, MARSS_marxss, MARSSaic, MARSSapplynames to Roxygen2 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- CSEGriskfigure_preview.html | 150 ---------------- CSEGriskfigure_preview.pdf | Bin 79742 -> 0 bytes R/CSEGtmufigure.R | 53 ++++++ R/MARSS.R | 337 ++++++++++++++++++++++++++++++++++++ R/MARSSFisherI.r | 122 +++++++++++++ R/MARSS_dfa.r | 125 +++++++++++++ R/MARSS_marss.R | 70 ++++++++ R/MARSS_marxss.R | 195 +++++++++++++++++++++ R/MARSSaic.R | 72 ++++++++ R/MARSSapplynames.R | 23 +++ Rplots.pdf | Bin 504346 -> 0 bytes man/CSEGtmufigure.Rd | 38 ---- man/MARSS.Rd | 198 --------------------- man/MARSSFisherI.Rd | 63 ------- man/MARSS_dfa.Rd | 83 --------- man/MARSS_marss.Rd | 51 ------ man/MARSS_marxss.Rd | 78 --------- man/MARSSaic.Rd | 54 ------ man/MARSSapplynames.Rd | 26 --- 19 files changed, 997 insertions(+), 741 deletions(-) delete mode 100644 CSEGriskfigure_preview.html delete mode 100644 CSEGriskfigure_preview.pdf delete mode 100644 Rplots.pdf delete mode 100644 man/CSEGtmufigure.Rd delete mode 100644 man/MARSS.Rd delete mode 100644 man/MARSSFisherI.Rd delete mode 100644 man/MARSS_dfa.Rd delete mode 100644 man/MARSS_marss.Rd delete mode 100644 man/MARSS_marxss.Rd delete mode 100644 man/MARSSaic.Rd delete mode 100644 man/MARSSapplynames.Rd diff --git a/CSEGriskfigure_preview.html b/CSEGriskfigure_preview.html deleted file mode 100644 index ec6473e2..00000000 --- a/CSEGriskfigure_preview.html +++ /dev/null @@ -1,150 +0,0 @@ -R: Plot Extinction Risk Metrics - - - - - - -
- -
CSEGriskfigureR Documentation
- -

Plot Extinction Risk Metrics

- -

Description

- -

Generates a six-panel plot of extinction risk metrics used in Population Viability Analysis (PVA). This is a function used by one of the vignettes in the MARSS-package(). -

- - -

Usage

- -
CSEGriskfigure(
-  data,
-  te = 100,
-  absolutethresh = FALSE,
-  threshold = 0.1,
-  datalogged = FALSE,
-  silent = FALSE,
-  return.model = FALSE,
-  CI.method = "hessian",
-  CI.sim = 1000
-)
-
- - -

Arguments

- - - - - - - - - - - - - - - - - - - - -
data -

A data matrix with 2 columns; time in first column and counts in second column. Note time is down rows, which is different than the base MARSS-package() functions.

-
te -

Length of forecast period (positive integer)

-
absolutethresh -

Is extinction threshold an absolute number? (T/F)

-
threshold -

Extinction threshold either as an absolute number, if absolutethresh=TRUE, or as a fraction of current population count, if absolutethresh=FALSE.

-
datalogged -

Are the data already logged? (T/F)

-
silent -

Suppress printed output? (T/F)

-
return.model -

Return state-space model as marssMLE() object? (T/F)

-
CI.method -

Confidence interval method: "hessian", "parametric", "innovations", or "none". See MARSSparamCIs().

-
CI.sim -

Number of simulations for bootstrap confidence intervals (positive integer).

-
- - -

Details

- - -
    -
  • Panel 1: Time-series plot of the data. -

    -
  • -
  • Panel 2: CDF of extinction risk. -

    -
  • -
  • Panel 3: PDF of time to reach threshold. -

    -
  • -
  • Panel 4: Probability of reaching different thresholds during forecast period. -

    -
  • -
  • Panel 5: Sample projections. -

    -
  • -
  • Panel 6: TMU plot (uncertainty as a function of the forecast). -

    -
- - - -

Value

- -

If return.model=TRUE, an object of class marssMLE(). -

- - -

Author(s)

- -

Eli Holmes, NOAA, Seattle, USA, and Steve Ellner, Cornell Univ. -

- - -

References

- -

Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science -Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type RShowDoc("UserGuide",package="MARSS") to open a copy. -

-

(theory behind the figure) Holmes, E. E., J. L. Sabo, S. V. Viscido, and W. F. Fagan. (2007) A statistical approach to quasi-extinction forecasting. Ecology Letters 10:1182-1198. -

-

(CDF and PDF calculations) Dennis, B., P. L. Munholland, and J. M. Scott. (1991) Estimation of growth and extinction parameters for endangered species. Ecological Monographs 61:115-143. -

-

(TMU figure) Ellner, S. P. and E. E. Holmes. (2008) Resolving the debate on when extinction risk is predictable. Ecology Letters 11:E1-E5. -

- - -

See Also

- -

MARSSboot(), marssMLE(), CSEGtmufigure() -

- - -

Examples

- -
d <- harborSeal[, 1:2]
-kem <- CSEGriskfigure(d, datalogged = TRUE)
-
-
- - -
- diff --git a/CSEGriskfigure_preview.pdf b/CSEGriskfigure_preview.pdf deleted file mode 100644 index 1a338f472b6de739abb4fd8725aab981d29eff57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79742 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
@U!U(e)Uo6e+qft8r^$VDtVle2JE`iBix
#bB`x!U79H|ZW;n((p1)pV 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 diff --git a/R/CSEGtmufigure.R b/R/CSEGtmufigure.R index 789c3055..8816eba9 100644 --- a/R/CSEGtmufigure.R +++ b/R/CSEGtmufigure.R @@ -1,3 +1,56 @@ +#' Plot Forecast Uncertainty +#' +#' @description +#' Plot the uncertainty in the probability of hitting a percent threshold +#' (quasi-extinction) for a single random walk trajectory. This is the +#' quasi-extinction probability used in Population Viability Analysis. The +#' uncertainty is shown as a function of the forecast, where the forecast is +#' defined in terms of the forecast length (number of time steps) and +#' forecasted decline (percentage). This is a function used by one of the +#' vignettes in the [MARSS-package]. +#' +#' @param N Time steps between the first and last population data point (positive integer) +#' @param u Per time-step decline (-0.1 means a 10\% decline per time step; 1 means a doubling per time step.) +#' @param s2p Process variance (Q). (a positive number) +#' @param make.legend Add a legend to the plot? (T/F) +#' +#' @details +#' This figure shows the region of high uncertainty in dark grey. In this +#' region, the minimum 95 percent confidence intervals on the probability of +#' quasi-extinction span 80 percent of the 0 to 1 probability. Green hashing +#' indicates where the 95 percent upper bound does not exceed 5\% probability +#' of quasi-extinction. The red hashing indicates, where the 95 percent lower +#' bound is above 95\% probability of quasi-extinction. The light grey lies +#' between these two certain/uncertain extremes. The extinction calculation is +#' based on Dennis et al. (1991). The minimum theoretical confidence interval +#' is based on Fieberg and Ellner (2000). This figure was developed in Ellner +#' and Holmes (2008). +#' +#' Examples using this figure are shown in the +#' [User Guide](https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf) +#' in the PVA chapter. +#' +#' @references +#' Dennis, B., P. L. Munholland, and J. M. Scott. (1991) Estimation of growth +#' and extinction parameters for endangered species. Ecological Monographs +#' 61:115-143. +#' +#' Fieberg, J. and Ellner, S.P. (2000) When is it meaningful to estimate an +#' extinction probability? Ecology, 81, 2040-2047. +#' +#' Ellner, S. P. and E. E. Holmes. (2008) Resolving the debate on when +#' extinction risk is predictable. Ecology Letters 11:E1-E5. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA, and Steve Ellner, Cornell Univ. +#' +#' @seealso [CSEGriskfigure()] +#' +#' @examples +#' CSEGtmufigure(N = 20, u = -0.1, s2p = 0.01) +#' +#' @keywords experimental hplot +#' @export # This is a figure of the theoretical minimum uncertainty regions # sensu Ellner and Holmes figure 1 # Code written by Steven Ellner and Eli Holmes diff --git a/R/MARSS.R b/R/MARSS.R index cc6175d1..ecde528e 100644 --- a/R/MARSS.R +++ b/R/MARSS.R @@ -1,3 +1,340 @@ +#' Fit a MARSS Model via Maximum-Likelihood Estimation +#' +#' @description +#' This is the main function for fitting multivariate autoregressive +#' state-space (MARSS) models with linear constraints. Scroll down to the +#' bottom to see some short examples. To open a guide to show you how to get +#' started quickly, type `RShowDoc("Quick_Start",package="MARSS")`. To open +#' the MARSS User Guide from the command line, type +#' `RShowDoc("UserGuide",package="MARSS")`. To get an overview of the package +#' and all its main functions and how to get output (parameter estimates, +#' fitted values, residuals, Kalman filter or smoother output, or plots), go +#' to [MARSS-package]. If `MARSS()` is throwing errors or warnings that you +#' don't understand, try the Troubleshooting section of the user guide or type +#' [MARSSinfo()] at the command line. +#' +#' The default MARSS model form is "marxss", which is Multivariate +#' Auto-Regressive(1) eXogenous inputs State-Space model: +#' \deqn{\mathbf{x}_{t} = \mathbf{B}_t \mathbf{x}_{t-1} + \mathbf{u}_t + \mathbf{C}_t \mathbf{c}_t + \mathbf{G}_t \mathbf{w}_t, \textrm{ where } \mathbf{W}_t \sim \textrm{MVN}(0,\mathbf{Q}_t)}{x(t) = B(t) x(t-1) + u(t) + C(t) c(t) + G(t) w(t), where W(t) ~ MVN(0,Q(t))} +#' \deqn{\mathbf{y}_t = \mathbf{Z}_t \mathbf{x}_t + \mathbf{a}_t + \mathbf{D}_t \mathbf{d}_t + \mathbf{H}_t \mathbf{v}_t, \textrm{ where } \mathbf{V}_t \sim \textrm{MVN}(0,\mathbf{R}_t)}{y(t) = Z(t) x(t) + a(t) + D(t) d(t) + H(t) v(t), where V(t) ~ MVN(0,R(t))} +#' \deqn{\mathbf{X}_1 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) \textrm{ or } \mathbf{X}_0 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) }{X(1) ~ MVN(x0, V0) or X(0) ~ MVN(x0, V0) } +#' The parameters are everything except \eqn{\mathbf{x}}{x}, \eqn{\mathbf{y}}{y}, +#' \eqn{\mathbf{v}}{v}, \eqn{\mathbf{w}}{w}, \eqn{\mathbf{c}}{c} and +#' \eqn{\mathbf{d}}{d}. \eqn{\mathbf{y}}{y} are data (missing values allowed). +#' \eqn{\mathbf{c}}{c} and \eqn{\mathbf{d}}{d} are inputs (no missing values +#' allowed). All parameters (except \eqn{\mathbf{x0}}{x0} and +#' \eqn{\mathbf{V0}}{V0}) can be time-varying but by default, all are +#' time-constant (and the MARSS equation is generally written without the +#' \eqn{t} subscripts on the parameter matrices). All parameters can be zero, +#' including the variance matrices. +#' +#' The parameter matrices can have fixed values and linear constraints. This +#' is an example of a 3x3 matrix with linear constraints. All matrix elements +#' can be written as a linear function of \eqn{a}, \eqn{b}, and \eqn{c}: +#' \deqn{\left[\begin{array}{c c c} a+2b & 1 & a\\ 1+3a+b & 0 & b \\ 0 & -2 & c\end{array}\right]}{[a+2b 1 a \n 1+3a+b 0 b \n 0 -2 c ]} +#' +#' Values such as \eqn{a b} or \eqn{a^2} or \eqn{log(a)} are not linear constraints. +#' +#' @param y A n x T matrix of n time series over T time steps. Only y is +#' required for the function. A ts object (univariate or multivariate) can +#' be used and this will be converted to a matrix with time in the columns. +#' @param inits A list with the same form as the list outputted by `coef(fit)` +#' that specifies initial values for the parameters. See also [MARSS.marxss()]. +#' @param model Model specification using a list of parameter matrix text +#' shortcuts or matrices. See Details and [MARSS.marxss()] for the default +#' form. Or better yet open the Quick Start Guide +#' `RShowDoc("Quick_Start",package="MARSS")`. +#' @param miss.value Deprecated. Denote missing values by NAs in your data. +#' @param method Estimation method. MARSS provides an EM algorithm +#' (`method="kem"`) (see [MARSSkem()]) and the BFGS algorithm +#' (`method="BFGS"`) (see [MARSSoptim()]). +#' @param form The equation form used in the `MARSS()` call. The default is +#' "marxss". See [MARSS.marxss()] or [MARSS.dfa()]. +#' @param fit TRUE/FALSE Whether to fit the model to the data. If FALSE, a +#' [marssMLE] object with only the model is returned. +#' @param silent Setting to TRUE(1) suppresses printing of full error messages, +#' warnings, progress bars and convergence information. Setting to FALSE(0) +#' produces error output. Setting silent=2 will produce more verbose error +#' messages and progress information. +#' @param fun.kf What Kalman filter function to use. MARSS has two: +#' [MARSSkfas()] which is based on the Kalman filter in the +#' [KFAS](https://cran.r-project.org/package=KFAS) package based on Koopman +#' and Durbin and [MARSSkfss()] which is a native R implementation of the +#' Kalman filter and smoother in Shumway and Stoffer. The KFAS filter is +#' much faster. [MARSSkfas()] modifies the input and output in order to +#' output the lag-one covariance smoother needed for the EM algorithm (per +#' page 321 in Shumway and Stoffer (2000). +#' @param control Estimation options for the maximization algorithm. The +#' typically used control options for method="kem" are below but see +#' [marssMLE] for the full list of control options. Note many of these are +#' not allowed if method="BFGS"; see [MARSSoptim()] for the allowed control +#' options for this method. +#' +#' * `minit` The minimum number of iterations to do in the maximization +#' routine (if needed by method). If `method="kem"`, this is an easy way +#' to up the iterations and see how your estimates are converging. +#' (positive integer) +#' * `maxit` Maximum number of iterations to be used in the maximization +#' routine (if needed by method) (positive integer). +#' * `min.iter.conv.test` Minimum iterations to run before testing +#' convergence via the slope of the log parameter versus log iterations. +#' * `conv.test.deltaT=9` Number of iterations to use for the testing +#' convergence via the slope of the log parameter versus log iterations. +#' * `conv.test.slope.tol` The slope of the log parameter versus log +#' iteration to use as the cut-off for convergence. The default is 0.5 +#' which is a bit high. For final analyses, this should be set lower. If +#' you want to only use abstol as your convergence test, then set to +#' something very large, for example `conv.test.slope.tol=1000`. Type +#' `MARSSinfo(11)` to see some comments on when you might want to do this. +#' * `abstol` The logLik.(iter-1)-logLik.(iter) convergence tolerance for +#' the maximization routine. To meet convergence both the abstol and slope +#' tests must be passed. +#' * `allow.degen` Whether to try setting \eqn{\mathbf{Q}}{Q} or +#' \eqn{\mathbf{R}}{R} elements to zero if they appear to be going to zero. +#' * `trace` An integer specifying the level of information recorded and +#' error-checking run during the algorithms. `trace=0` specifies basic +#' error-checking and brief error-messages; `trace>0` will print full +#' error messages. In addition if trace>0, the Kalman filter output will +#' be added to the outputted [marssMLE] object. Additional information +#' recorded depends on the method of maximization. For the EM algorithm, a +#' record of each parameter estimate for each EM iteration will be added. +#' See [optim()] for trace output details for the BFGS method. +#' `trace=-1` will turn off most internal error-checking and most error +#' messages. The internal error checks are time expensive so this can speed +#' up model fitting. This is particularly useful for bootstrapping and +#' simulation studies. It is also useful if you get an error saying that +#' `MARSS()` stops in [MARSSkfss()] due to a `chol()` call. `MARSSkfss()` +#' uses matrix inversions and for some models these are unstable (high +#' condition value). `MARSSkfss()` is used for error-checks and does not +#' need to be called normally. +#' * `safe` Setting `safe=TRUE` runs the Kalman smoother after each +#' parameter update rather than running the smoother only once after +#' updating all parameters. The latter is faster but is not a strictly +#' correct EM algorithm. In most cases, `safe=FALSE` (default) will not +#' change the fits. If this setting does cause problems, you will know +#' because you will see an error regarding the log-likelihood dropping and +#' it will direct you to set `safe=TRUE`. +#' @param ... Optional arguments passed to function specified by form. +#' +#' @details +#' The `model` argument specifies the structure of your model. There is a +#' one-to-one correspondence between how you would write your model in matrix +#' form on the whiteboard and how you specify the model for `MARSS()`. Many +#' different types of multivariate time-series models can be converted to the +#' MARSS form. See the +#' [User Guide](https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf) +#' and [Quick Start Guide](https://cran.r-project.org/package=MARSS/vignettes/Quick_Start.html) +#' for examples. +#' +#' The MARSS package has two forms for standard users: marxss and dfa. +#' +#' * [MARSS.marxss()] This is the default form. This is a MARSS model with +#' (optional) inputs \eqn{\mathbf{c}_t}{c(t)} or \eqn{\mathbf{d}_t}{d(t)}. +#' Most users will want this help page. +#' * [MARSS.dfa()] This is a model form to allow easier specification of +#' models for Dynamic Factor Analysis. The \eqn{\mathbf{Z}}{Z} parameters +#' has a specific form and the \eqn{\mathbf{Q}}{Q} is set at i.i.d +#' (diagonal) with variance of 1. +#' +#' Those looking to modify or understand the base code, should look at +#' [MARSS.marss()] and `MARSS.vectorized()`. These describe the forms used by +#' the base functions. The EM algorithm uses the MARSS model written in +#' vectorized form. This form is what allows linear constraints. +#' +#' The likelihood surface for MARSS models can be multimodal or with strong +#' ridges. It is recommended that for final analyses the estimates are checked +#' by using a Monte Carlo initial conditions search; see the chapter on initial +#' conditions searches in the User Guide. This requires more computation time, +#' but reduces the chance of the algorithm terminating at a local maximum and +#' not reaching the true MLEs. Also it is wise to check the EM results against +#' the BFGS results (if possible) if there are strong ridges in the likelihood. +#' Such ridges seems to slow down the EM algorithm considerably and can cause +#' the algorithm to report convergence far from the maximum-likelihood values. +#' EM steps up the likelihood and the convergence test is based on the rate of +#' change of the log-likelihood in each step. Once on a strong ridge, the +#' steps can slow dramatically. You can force the algorithm to keep working by +#' setting `minit`. BFGS seems less hindered by the ridges but can be +#' prodigiously slow for some multivariate problems. BFGS tends to work better +#' if you give it good initial conditions (see Examples below for how to do +#' this). +#' +#' If you are working with models with time-varying parameters, it is important +#' to notice the time-index for the parameters in the process equation (the +#' \eqn{\mathbf{x}}{x} equation). In some formulations (e.g. in +#' [KFAS::KFAS]), the process equation is +#' \eqn{\mathbf{x}_t=\mathbf{B}_{t-1}\mathbf{x}_{t-1}+\mathbf{w}_{t-1}}{x(t)=B(t-1)x(t-1)+w(t-1)} +#' so \eqn{\mathbf{B}_{t-1}}{B(t-1)} goes with \eqn{\mathbf{x}_t}{x(t)} not +#' \eqn{\mathbf{B}_t}{B(t)}. Thus one needs to be careful to line up the time +#' indices when passing in time-varying parameters to `MARSS()`. See the User +#' Guide for examples. +#' +#' @return +#' An object of class [marssMLE]. The structure of this object is discussed +#' below, but if you want to know how to get specific output (like residuals, +#' coefficients, smoothed states, confidence intervals, etc), see +#' [print.marssMLE()], [tidy.marssMLE()], [MARSSresiduals()] and +#' [plot.marssMLE()]. +#' +#' The outputted [marssMLE] object has the following components: +#' +#' * `model` MARSS model specification. It is a [marssMODEL] object in the +#' form specified by the user in the `MARSS()` call. This is used by print +#' functions so that the user sees the expected form. +#' * `marss` The [marssMODEL] object in marss form. This form is needed for +#' all the internal algorithms, thus is a required part of a [marssMLE] +#' object. +#' * `call` All the information passed in in the `MARSS()` call. +#' * `start` List with specifying initial values that were used for each +#' parameter matrix. +#' * `control` A list of estimation options, as specified by arguments +#' `control`. +#' * `method` Estimation method. +#' +#' If `fit=TRUE`, the following are also added to the [marssMLE] object. +#' If `fit=FALSE`, a [marssMLE] object ready for fitting via the specified +#' `method` is returned. +#' +#' * `par` A list of estimated parameter values in marss form. Use +#' [print.marssMLE()], [tidy.marssMLE()] or [coef.marssMLE()] for outputting +#' the model estimates in the `MARSS()` call (e.g. the default "marxss" form). +#' * `states` The expected value of \eqn{\mathbf{X}}{X} conditioned on all +#' the data, i.e. smoothed states. +#' * `states.se` The standard errors of the expected value of +#' \eqn{\mathbf{X}}{X}. +#' * `ytT` The expected value of \eqn{\mathbf{Y}}{Y} conditioned on all the +#' data. Note this is just \eqn{y} for those \eqn{y} that are not missing. +#' * `ytT.se` The standard errors of the expected value of +#' \eqn{\mathbf{Y}}{Y}. Note this is 0 for any non-missing \eqn{y}. +#' * `numIter` Number of iterations required for convergence. +#' * `convergence` Convergence status. 0 means converged successfully, 3 +#' means all parameters were fixed (so model did not need to be fit) and -1 +#' means call was made with `fit=FALSE` and parameters were not fixed (thus +#' no `$par` element and Kalman filter/smoother cannot be run). Anything +#' else is a warning or error. 2 means the [marssMLE] object has an error; +#' the object is returned so you can debug it. The other numbers are errors +#' during fitting. The error code depends on the fitting method. See +#' [MARSSkem()] and [MARSSoptim()]. +#' * `logLik` Log-likelihood. +#' * `AIC` Akaike's Information Criterion. +#' * `AICc` Sample size corrected AIC. +#' +#' If `control$trace` is set to 1 or greater, the following are also added to +#' the [marssMLE] object. +#' +#' * `kf` A list containing Kalman filter/smoother output from [MARSSkf()]. +#' This is not normally added to a [marssMLE] object since it is verbose, +#' but can be added using [MARSSkf()]. +#' * `Ey` A list containing output from [MARSShatyt()]. This isn't normally +#' added to a [marssMLE] object since it is verbose, but can be computed +#' using [MARSShatyt()]. +#' +#' @references +#' The MARSS User Guide: Holmes, E. E., E. J. Ward, and M. D. Scheuerell +#' (2012) Analysis of multivariate time-series using the MARSS package. NOAA +#' Fisheries, Northwest Fisheries Science Center, 2725 Montlake Blvd E., +#' Seattle, WA 98112. Type `RShowDoc("UserGuide",package="MARSS")` to open a +#' copy. +#' +#' Holmes, E. E. (2012). Derivation of the EM algorithm for constrained and +#' unconstrained multivariate autoregressive state-space (MARSS) models. +#' Technical Report. arXiv:1302.3919 [stat.ME] +#' +#' Holmes, E. E., E. J. Ward and K. Wills. (2012) MARSS: Multivariate +#' autoregressive state-space models for analyzing time-series data. R Journal +#' 4: 11-19. +#' +#' @author +#' Eli Holmes, Eric Ward and Kellie Wills, NOAA, Seattle, USA. +#' +#' @seealso +#' [marssMLE], [MARSSkem()], [MARSSoptim()], [MARSSkf()], [MARSS-package], +#' [print.marssMLE()], [plot.marssMLE()], [print.marssMODEL()], +#' [MARSS.marxss()], [MARSS.dfa()], [fitted.marssMLE()], +#' [residuals.marssMLE()], [MARSSresiduals()], [predict.marssMLE()], +#' [tsSmooth.marssMLE()], [tidy.marssMLE()], [coef.marssMLE()] +#' +#' @examples +#' dat <- t(harborSealWA) +#' dat <- dat[2:4, ] # remove the year row +#' # fit a model with 1 hidden state and 3 observation time series +#' kemfit <- MARSS(dat, model = list( +#' Z = matrix(1, 3, 1), +#' R = "diagonal and equal" +#' )) +#' kemfit$model # This gives a description of the model +#' print(kemfit$model) # same as kemfit$model +#' summary(kemfit$model) # This shows the model structure +#' +#' # add CIs to a marssMLE object +#' # default uses an estimated Hessian matrix +#' kem.with.hess.CIs <- MARSSparamCIs(kemfit) +#' kem.with.hess.CIs +#' +#' # fit a model with 3 hidden states (default) +#' kemfit <- MARSS(dat, silent = TRUE) # suppress printing +#' kemfit +#' +#' # Fit the above model with BFGS using a short EM fit as initial conditions +#' kemfit <- MARSS(dat, control=list(minit=5, maxit=5)) +#' bffit <- MARSS(dat, method="BFGS", inits=kemfit) +#' +#' # fit a model with 3 correlated hidden states +#' # with one variance and one covariance +#' # maxit set low to speed up example, but more iters are needed for convergence +#' kemfit <- MARSS(dat, model = list(Q = "equalvarcov"), control = list(maxit = 50)) +#' # use Q="unconstrained" to allow different variances and covariances +#' +#' # fit a model with 3 independent hidden states +#' # where each observation time series is independent +#' # the hidden trajectories 2-3 share their U parameter +#' kemfit <- MARSS(dat, model = list(U = matrix(c("N", "S", "S"), 3, 1))) +#' +#' # same model, but with fixed independent observation errors +#' # and the 3rd x processes are forced to have a U=0 +#' # Notice how a list matrix is used to combine fixed and estimated elements +#' # all parameters can be specified in this way using list matrices +#' kemfit <- MARSS(dat, model = list(U = matrix(list("N", "N", 0), 3, 1), R = diag(0.01, 3))) +#' +#' # fit a model with 2 hidden states (north and south) +#' # where observation time series 1-2 are north and 3 is south +#' # Make the hidden state process independent with same process var +#' # Make the observation errors different but independent +#' # Make the growth parameters (U) the same +#' # Create a Z matrix as a design matrix that assigns the "N" state to the first 2 rows of dat +#' # and the "S" state to the 3rd row of data +#' Z <- matrix(c(1, 1, 0, 0, 0, 1), 3, 2) +#' # You can use factor is a shortcut making the above design matrix for Z +#' # Z <- factor(c("N","N","S")) +#' # name the state vectors +#' colnames(Z) <- c("N", "S") +#' kemfit <- MARSS(dat, model = list( +#' Z = Z, +#' Q = "diagonal and equal", R = "diagonal and unequal", U = "equal" +#' )) +#' +#' # print the model followed by the marssMLE object +#' kemfit$model +#' +#' \dontrun{ +#' # simulate some new data from our fitted model +#' sim.data <- MARSSsimulate(kemfit, nsim = 10, tSteps = 10) +#' +#' # Compute bootstrap AIC for the model; this takes a long, long time +#' kemfit.with.AICb <- MARSSaic(kemfit, output = "AICbp") +#' kemfit.with.AICb +#' } +#' +#' \dontrun{ +#' # Many more short examples can be found in the +#' # Quick Examples chapter in the User Guide +#' RShowDoc("UserGuide", package = "MARSS") +#' +#' # You can find the R scripts from the chapters by +#' # going to the index page +#' RShowDoc("index", package = "MARSS") +#' } +#' +#' @export MARSS <- function(y, model = NULL, inits = NULL, diff --git a/R/MARSSFisherI.r b/R/MARSSFisherI.r index 8326bca5..ada66ca0 100644 --- a/R/MARSSFisherI.r +++ b/R/MARSSFisherI.r @@ -11,6 +11,128 @@ # Ho, Shumway and Ombao (2006) The state-space approach to modeling dynamic processes in Models for Intensive Longitudinal Data # page 157 suggest that this derivative is hard to compute. ####################################################################################################### + +#' Observed Fisher Information Matrix at the MLE +#' +#' @description +#' Returns the observed Fisher Information matrix for a [marssMLE] object (a +#' fitted MARSS model) via either the analytical algorithm of Harvey (1989) or +#' a numerical estimate. +#' +#' The observed Fisher Information is the negative of the second-order partial +#' derivatives of the log-likelihood function evaluated at the MLE. The +#' derivatives being with respect to the parameters. The Hessian matrix is the +#' second-order partial derivatives of a scalar-valued function. Thus the +#' observed Fisher Information matrix is the Hessian of the negative +#' log-likelihood function evaluated at the MLE (or equivalently the negative +#' of the Hessian of the log-likelihood function). The inverse of the observed +#' Fisher Information matrix is an estimate of the asymptotic +#' variance-covariance matrix for the estimated parameters. Use +#' [MARSShessian()] (which calls `MARSSFisherI()`) to return the parameter +#' variance-covariance matrix computed from the observed Fisher Information +#' matrix. +#' +#' Note for the numerically estimated Hessian, we pass in the negative +#' log-likelihood function to a minimization function. As a result, the +#' numerical functions return the Hessian of the negative log-likelihood +#' function (which is the observed Fisher Information matrix). +#' +#' @param MLEobj An object of class [marssMLE]. This object must have a `$par` +#' element containing MLE parameter estimates from e.g. [MARSSkem()]. +#' @param method The method to use for computing the observed Fisher +#' Information matrix. Options are `"Harvey1989"` to use the Harvey (1989) +#' recursion, which is an analytical solution, `"fdHess"` or `"optim"` +#' which are two numerical methods. Although `"optim"` can be passed to the +#' function, `"fdHess"` is used for all numerical estimates used in the +#' MARSS package. +#' +#' @details +#' Method `'fdHess'` uses [nlme::fdHess()] to numerically estimate the +#' Hessian of the negative log-likelihood function at the MLEs. Method +#' `'optim'` uses [optim()] with `hessian=TRUE` and `list(maxit=0)` to ensure +#' that the Hessian is computed at the values in the `par` element of the MLE +#' object. The `par` element of the [marssMLE] object is the MLE. +#' +#' Method `'Harvey1989'` (the default) uses the recursion in Harvey (1989) to +#' compute the observed Fisher Information of a MARSS model analytically. See +#' Holmes (2016c) for a discussion of the Harvey (1989) algorithm and see +#' Holmes (2017) on how to implement the algorithm for MARSS models with +#' linear constraints (the type of MARSS models that the MARSS R package +#' addresses). +#' +#' There has been research on computing the observed Fisher Information matrix +#' from the derivatives used by EM algorithms (discussed in Holmes (2016a, +#' 2016b)), for example Louis (1982). Unfortunately, the EM algorithm used in +#' the MARSS package is for time series data and the temporal correlation must +#' be dealt with, e.g. Duan & Fulop (2011). Oakes (1999) has an approach that +#' only involves derivatives of +#' \eqn{\textrm{E}[LL(\Theta)|\mathbf{y},\Theta']}{E(LL(Theta)|data, Theta')} +#' but one of the derivatives will be the derivative of the +#' \eqn{\textrm{E}[\mathbf{X}|\mathbf{y},\Theta']}{E(X|data, Theta')} with +#' respect to \eqn{\Theta'}{Theta'}. It is not clear how to do that +#' derivative. Moon-Ho, Shumway and Ombao (2006) suggest (page 157) that this +#' derivative is hard to compute. +#' +#' @return +#' Returns the observed Fisher Information matrix. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSharveyobsFI()], [MARSShessian.numerical], [MARSSparamCIs], +#' [marssMLE] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[2:4, ] +#' MLEobj <- MARSS(dat, model=list(Z=matrix(1,3,1), R="diagonal and equal")) +#' MARSSFisherI(MLEobj) +#' MARSSFisherI(MLEobj, method="fdHess") +#' +#' @references +#' Harvey, A. C. (1989) Section 3.4.5 (Information matrix) in Forecasting, +#' structural time series models and the Kalman filter. Cambridge University +#' Press, Cambridge, UK. +#' +#' See also J. E. Cavanaugh and R. H. Shumway (1996) On computing the +#' expected Fisher information matrix for state-space model parameters. +#' Statistics & Probability Letters 26: 347-355. This paper discusses the +#' Harvey (1989) recursion (and proposes an alternative). +#' +#' Holmes, E. E. 2016a. Notes on computing the Fisher Information matrix for +#' MARSS models. Part I Background. Technical Report. +#' https://doi.org/10.13140/RG.2.2.27306.11204/1 +#' [Notes](https://eeholmes.github.io/posts/2016-5-18-FI-recursion-1/) +#' +#' Holmes, E. E. 2016b. Notes on computing the Fisher Information matrix for +#' MARSS models. Part II Louis 1982. Technical Report. +#' https://doi.org/10.13140/RG.2.2.35694.72000 +#' [Notes](https://eeholmes.github.io/posts/2016-5-19-FI-recursion-2/) +#' +#' Holmes, E. E. 2016c. Notes on computing the Fisher Information matrix for +#' MARSS models. Part III Overview of Harvey 1989. +#' +#' +#' Holmes, E. E. 2017. Notes on computing the Fisher Information matrix for +#' MARSS models. Part IV Implementing the Recursion in Harvey 1989. +#' +#' +#' Duan, J. C. and A. Fulop. (2011) A stable estimator of the information +#' matrix under EM for dependent data. Statistics and Computing 21: 83-91. +#' +#' Louis, T. A. 1982. Finding the observed information matrix when using the +#' EM algorithm. Journal of the Royal Statistical Society. Series B +#' (Methodological). 44: 226-233. +#' +#' Oakes, D. 1999. Direct calculation of the information matrix via the EM +#' algorithm. Journal of the Royal Statistical Society. Series B +#' (Methodological). 61: 479-482. +#' +#' Moon-Ho, R. H., R. H. Shumway, and Ombao 2006. The state-space approach to +#' modeling dynamic processes. Chapter 7 in Models for Intensive Longitudinal +#' Data. Oxford University Press. +#' +#' @export MARSSFisherI <- function(MLEobj, method = c("Harvey1989", "fdHess", "optim")) { # optim is here for debugging. fdHess is the numerical method used for users method <- match.arg(method) diff --git a/R/MARSS_dfa.r b/R/MARSS_dfa.r index 39776a8d..18c0db13 100644 --- a/R/MARSS_dfa.r +++ b/R/MARSS_dfa.r @@ -12,6 +12,131 @@ # predict.marssMLE, coef.marssMLE, MARSSinits.marssMLE # print_dfa, residuals_dfa, predict_dfa, coef_dfa, MARSSinits_dfa ################################################################################### + +#' Multivariate Dynamic Factor Analysis +#' +#' @description +#' The Dynamic Factor Analysis model in MARSS is specified via +#' `form="dfa"` in a [MARSS()] function call. This is a MARSS(1) model of +#' the form: +#' \deqn{\mathbf{x}_{t} = \mathbf{x}_{t-1} + \mathbf{w}_t, \textrm{ where } \mathbf{W}_t \sim \textrm{MVN}(0,\mathbf{I})}{x(t) = x(t-1) + w(t), where W(t) ~ MVN(0,I)} +#' \deqn{\mathbf{y}_t = \mathbf{Z}_t \mathbf{x}_t + \mathbf{D}_t \mathbf{d}_t + \mathbf{v}_t, \textrm{ where } \mathbf{V}_t \sim \textrm{MVN}(0,\mathbf{R}_t)}{y(t) = Z(t) x(t) + D(t) d(t) + v(t), where V(t) ~ MVN(0,R(t))} +#' \deqn{\mathbf{X}_1 \sim \textrm{MVN}(\mathbf{x0}, 5\mathbf{I})}{X(1) ~ MVN(x0, 5I) } +#' Note, by default \eqn{\mathbf{x}_1}{x(1)} is treated as a diffuse prior. +#' +#' Passing in `form="dfa"` to [MARSS()] invokes a helper function to create +#' that model and creates the \eqn{\mathbf{Z}}{Z} matrix for the user. +#' \eqn{\mathbf{Q}}{Q} is by definition identity, \eqn{\mathbf{x}_0}{x0} is +#' zero and \eqn{\mathbf{V_0}}{V0} is diagonal with large variance (5). +#' \eqn{\mathbf{u}}{U} is zero, \eqn{\mathbf{a}}{A} is zero, and covariates +#' only enter the \eqn{\mathbf{y}}{Y} equation. Because \eqn{\mathbf{u}}{U} +#' and \eqn{\mathbf{a}}{A} are 0, the data should have mean 0 (demeaned) +#' otherwise one is likely to be creating a structurally inadequate model +#' (i.e. the model implies that the data have mean = 0, yet data do not have +#' mean = 0). +#' +#' @section Usage: +#' ``` +#' MARSS(y, +#' inits = NULL, +#' model = NULL, +#' miss.value = as.numeric(NA), +#' method = "kem", +#' form = "dfa", +#' fit = TRUE, +#' silent = FALSE, +#' control = NULL, +#' fun.kf = "MARSSkfas", +#' demean = TRUE, +#' z.score = TRUE) +#' ``` +#' +#' @param MARSS.call A list of arguments from a [MARSS()] call with +#' `form="dfa"`. +#' +#' @details +#' Some arguments are common to all forms: "y" (data), "inits", "control", +#' "method", "form", "fit", "silent", "fun.kf". See [MARSS()] for information +#' on these arguments. +#' +#' In addition, `form="dfa"` has some special arguments that can be passed in: +#' +#' * `demean` Logical. Default is TRUE, which means the data will be demeaned. +#' * `z.score` Logical. Default is TRUE, which means the data will be +#' z-scored (demeaned and variance standardized to 1). +#' * `covariates` Covariates (\eqn{d}) for the \eqn{y} equation. No missing +#' values allowed and must be a matrix with the same number of time steps as +#' the data. An unconstrained \eqn{D} matrix will be estimated. +#' +#' The `model` argument of the [MARSS()] call is constrained in terms of what +#' parameters can be changed and how they can be changed. An additional +#' element, `m`, can be passed into the `model` argument that specifies the +#' number of hidden state variables. It is not necessary for the user to +#' specify `Z` as the helper function will create a `Z` appropriate for a DFA +#' model. +#' +#' The `model` argument is a list. The following details what list elements +#' can be passed in: +#' +#' * `B` "Identity". The standard (and default) DFA model has B="identity". +#' However it can be "identity", "diagonal and equal", "diagonal and +#' unequal" or a time-varying fixed or estimated diagonal matrix. +#' * `U` "Zero". Cannot be changed or passed in via model argument. +#' * `Q` "Identity". The standard (and default) DFA model has Q="identity". +#' However, it can be "identity", "diagonal and equal", "diagonal and +#' unequal" or a time-varying fixed or estimated diagonal matrix. +#' * `Z` Can be passed in as a (list) matrix if the user does not want a +#' default DFA `Z` matrix. There are many equivalent ways to construct a +#' DFA `Z` matrix. The default is Zuur et al.'s form (see User Guide). +#' * `A` Default="zero". Can be "unequal", "zero" or a matrix. +#' * `R` Default="diagonal and equal". Can be set to "identity", "zero", +#' "unconstrained", "diagonal and unequal", "diagonal and equal", +#' "equalvarcov", or a (list) matrix to specify general forms. +#' * `x0` Default="zero". Can be "unconstrained", "unequal", "zero", or a +#' (list) matrix. +#' * `V0` Default=diagonal matrix with 5 on the diagonal. Can be "identity", +#' "zero", or a matrix. +#' * `tinitx` Default=0. Can be 0 or 1. Tells MARSS whether x0 is at t=0 or +#' t=1. +#' * `m` Default=1. Can be 1 to n (the number of y time-series). Must be +#' integer. +#' +#' See the +#' [User Guide](https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf) +#' chapter on Dynamic Factor Analysis for examples of using `form="dfa"`. +#' +#' @return +#' An object of class [marssMLE]. See [print.marssMLE()] for a discussion of +#' the various output available for [marssMLE] objects (coefficients, +#' residuals, Kalman filter and smoother output, imputed values for missing +#' data, etc.). See [MARSSsimulate()] for simulating from [marssMLE] objects. +#' [MARSSboot()] for bootstrapping, [MARSSaic()] for calculation of various +#' AIC related model selection metrics, and [MARSSparamCIs()] for calculation +#' of confidence intervals and bias. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSS()], [MARSS.marxss()] +#' +#' @references +#' The MARSS User Guide: Holmes, E. E., E. J. Ward, and M. D. Scheuerell +#' (2012) Analysis of multivariate time-series using the MARSS package. NOAA +#' Fisheries, Northwest Fisheries Science Center, 2725 Montlake Blvd E., +#' Seattle, WA 98112. Type `RShowDoc("UserGuide",package="MARSS")` to open a +#' copy. +#' +#' @examples +#' \dontrun{ +#' dat <- t(harborSealWA[,-1]) +#' # DFA with 3 states; used BFGS because it fits much faster for this model +#' fit <- MARSS(dat, model = list(m=3), form="dfa", method="BFGS") +#' +#' # See the Dynamic Factor Analysis chapter in the User Guide +#' RShowDoc("UserGuide", package = "MARSS") +#' } +#' +#' @export MARSS.dfa <- function(MARSS.call) { # MARSS(data, model=list(), covariates=NULL, z.score=TRUE, demean=TRUE, control=list()) # model.defaults =list(A="zero", R="diagonal and equal", D="zero", x0="zero", V0=diag(5,1), tinitx=0, diffuse=FALSE, m=1) diff --git a/R/MARSS_marss.R b/R/MARSS_marss.R index 8a5dfa46..eaec48a6 100644 --- a/R/MARSS_marss.R +++ b/R/MARSS_marss.R @@ -13,6 +13,76 @@ # is.marssMODEL_marss ################################################################################### + +#' Multivariate AR-1 State-space Model +#' +#' @description +#' The form of MARSS models for users is "marxss", the MARSS models with +#' inputs. See [MARSS.marxss()]. In the internal algorithms (e.g. +#' [MARSSkem()]), the "marss" form is used and the +#' \eqn{\mathbf{D}\mathbf{d}_t}{Dd(t)} are incorporated into the +#' \eqn{\mathbf{a}_t}{a(t)} matrix and \eqn{\mathbf{C}\mathbf{c}_t}{Cc(t)} +#' are incorporated into the \eqn{\mathbf{u}_t}{u(t)}. The +#' \eqn{\mathbf{a}}{a} and \eqn{\mathbf{u}}{u} matrices then become +#' time-varying if the model includes \eqn{\mathbf{d}_t}{d(t)} and +#' \eqn{\mathbf{c}_t}{c(t)}. +#' +#' This is a MARSS(1) model of the marss form: +#' \deqn{\mathbf{x}_{t} = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u}_t + \mathbf{G} \mathbf{w}_t, \textrm{ where } \mathbf{W}_t \sim \textrm{MVN}(0,\mathbf{Q})}{x(t) = B x(t-1) + u(t) + G w(t), where W(t) ~ MVN(0,Q)} +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a}_t + \mathbf{H} \mathbf{v}_t, \textrm{ where } \mathbf{V}_t \sim \textrm{MVN}(0,\mathbf{R})}{y(t) = Z x(t) + a(t) + H v(t), where V(t) ~ MVN(0,R)} +#' \deqn{\mathbf{X}_1 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) \textrm{ or } \mathbf{X}_0 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) }{X(1) ~ MVN(x0, V0) or X(0) ~ MVN(x0, V0) } +#' Note, by default \eqn{\mathbf{V0}}{V0} is a matrix of all zeros and thus +#' \eqn{\mathbf{x}_1}{x(1)} or \eqn{\mathbf{x}_0}{x(0)} is treated as an +#' estimated parameter not a diffuse prior. To remove clutter, the rest of +#' the parameters are shown as time-constant (no \eqn{t} subscript) but all +#' parameters can be time-varying. +#' +#' Note, "marss" is a model form. A model form is defined by a collection of +#' form functions discussed in [marssMODEL]. These functions are not exported +#' to the user, but are called by [MARSS()] using the argument `form`. These +#' internal functions convert the users model list into the vec form of a +#' MARSS model and do extensive error-checking. +#' +#' @section Usage: +#' ``` +#' MARSS(y, +#' inits = NULL, +#' model = NULL, +#' miss.value = as.numeric(NA), +#' method = "kem", +#' form = "marxss", +#' fit = TRUE, +#' silent = FALSE, +#' control = NULL, +#' fun.kf = "MARSSkfas", +#' ...) +#' ``` +#' +#' @param MARSS.call A list of arguments from a [MARSS()] call with +#' `form="marss"`. +#' +#' @details +#' See the help page for the [MARSS.marxss()] form for details. +#' +#' @return +#' An object of class [marssMLE]. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [marssMODEL], [MARSS.marxss()] +#' +#' @examples +#' \dontrun{ +#' # See the MARSS man page for examples +#' ?MARSS +#' +#' # and the Quick Examples chapter in the User Guide +#' RShowDoc("UserGuide", package = "MARSS") +#' } +#' +#' @keywords appendix +#' @export MARSS.marss <- function(MARSS.call) { # load need package globals common.allowed.in.MARSS.call <- get("common.allowed.in.MARSS.call", envir = pkg_globals) diff --git a/R/MARSS_marxss.R b/R/MARSS_marxss.R index b9fde11a..37fe5347 100644 --- a/R/MARSS_marxss.R +++ b/R/MARSS_marxss.R @@ -27,6 +27,201 @@ # Part 3 Do the conversion of marxss object to marss object ################################################################################### + +#' Multivariate AR-1 State-space Model with Inputs +#' +#' @description +#' The argument `form="marxss"` in a [MARSS()] function call specifies a +#' MAR-1 model with eXogenous variables model. This is a MARSS(1) model of +#' the form: +#' \deqn{\mathbf{x}_{t} = \mathbf{B}_t \mathbf{x}_{t-1} + \mathbf{u}_t + \mathbf{C}_t \mathbf{c}_t + \mathbf{G}_t \mathbf{w}_t, \textrm{ where } \mathbf{W}_t \sim \textrm{MVN}(0,\mathbf{Q}_t)}{x(t) = B(t) x(t-1) + u(t) + C(t) c(t) + G(t) w(t), where W(t) ~ MVN(0,Q(t))} +#' \deqn{\mathbf{y}_t = \mathbf{Z}_t \mathbf{x}_t + \mathbf{a}_t + \mathbf{D}_t \mathbf{d}_t + \mathbf{H}_t \mathbf{v}_t, \textrm{ where } \mathbf{V}_t \sim \textrm{MVN}(0,\mathbf{R}_t)}{y(t) = Z(t) x(t) + a(t) + D(t) d(t) + H(t) v(t), where V(t) ~ MVN(0,R(t))} +#' \deqn{\mathbf{X}_1 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) \textrm{ or } \mathbf{X}_0 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) }{X(1) ~ MVN(x0, V0) or X(0) ~ MVN(x0, V0) } +#' Note, by default \eqn{\mathbf{V0}}{V0} is a matrix of all zeros and thus +#' \eqn{\mathbf{x}_1}{x(1)} or \eqn{\mathbf{x}_0}{x(0)} is treated as an +#' estimated parameter not a diffuse prior. +#' +#' Note, "marxss" is a model form. A model form is defined by a collection of +#' form functions discussed in [marssMODEL]. These functions are not exported +#' to the user, but are called by [MARSS()] using the argument `form`. +#' +#' @section Usage: +#' ``` +#' MARSS(y, +#' inits = NULL, +#' model = NULL, +#' miss.value = as.numeric(NA), +#' method = "kem", +#' form = "marxss", +#' fit = TRUE, +#' silent = FALSE, +#' control = NULL, +#' fun.kf = "MARSSkfas", +#' ...) +#' ``` +#' +#' @param MARSS.call A list of arguments from a [MARSS()] call with +#' `form="marxss"`. +#' +#' @details +#' The allowed arguments when `form="marxss"` are 1) the arguments common to +#' all forms: "y" (data), "inits", "control", "method", "form", "fit", +#' "silent", "fun.kf" (see [MARSS()] for information on these arguments) and +#' 2) the argument "model" which is a list describing the MARXSS model (the +#' model list is described below). See the +#' [Quick Start Guide](https://cran.r-project.org/package=MARSS/vignettes/Quick_Start.html) +#' or the +#' [User Guide](https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf) +#' for examples. +#' +#' The argument `model` must be a list. The elements in the list specify the +#' structure for the \eqn{\mathbf{B}}{B}, \eqn{\mathbf{u}}{u}, +#' \eqn{\mathbf{C}}{C}, \eqn{\mathbf{c}}{c}, \eqn{\mathbf{Q}}{Q}, +#' \eqn{\mathbf{Z}}{Z}, \eqn{\mathbf{a}}{a}, \eqn{\mathbf{D}}{D}, +#' \eqn{\mathbf{d}}{d}, \eqn{\mathbf{R}}{R}, \eqn{\mathbf{x}_0}{x0}, and +#' \eqn{\mathbf{V}_0}{V0} in the MARXSS model (above). The list elements can +#' have the following values: +#' +#' * `Z` Default="identity". A text string, "identity","unconstrained", +#' "diagonal and unequal", "diagonal and equal", "equalvarcov", or +#' "onestate", or a length n vector of factors specifying which of the m +#' hidden state time series correspond to which of the n observation time +#' series. May be specified as a n x m list matrix for general specification +#' of both fixed and shared elements within the matrix. May also be +#' specified as a numeric n x m matrix to use a custom fixed +#' \eqn{\mathbf{Z}}{Z}. "onestate" gives a n x 1 matrix of 1s. +#' "identity","unconstrained", "diagonal and unequal", "diagonal and equal", +#' and "equalvarcov" all specify n x n matrices. +#' * `B` Default="identity". A text string, "identity", "unconstrained", +#' "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". Can +#' also be specified as a list matrix for general specification of both fixed +#' and shared elements within the matrix. May also be specified as a numeric +#' m x m matrix to use custom fixed \eqn{\mathbf{B}}{B}, but in this case +#' all the eigenvalues of \eqn{\mathbf{B}}{B} must fall in the unit circle. +#' * `U`, `x0` Default="unconstrained". A text string, "unconstrained", +#' "equal", "unequal" or "zero". May be specified as a m x 1 list matrix +#' for general specification of both fixed and shared elements within the +#' matrix. May also be specified as a numeric m x 1 matrix to use a custom +#' fixed \eqn{\mathbf{u}}{u} or \eqn{\mathbf{x}_0}{x(0)}. Notice that `U` +#' is capitalized in the `model` argument and output lists. +#' * `A` Default="scaling". A text string, "scaling","unconstrained", "equal", +#' "unequal" or "zero". May be specified as a n x 1 list matrix for general +#' specification of both fixed and shared elements within the matrix. May +#' also be specified as a numeric n x 1 matrix to use a custom fixed +#' \eqn{\mathbf{a}}{a}. Care must be taken when specifying `A` so that the +#' model is not under-constrained and unsolvable. The default, "scaling", +#' only applies to \eqn{\mathbf{Z}}{Z} matrices that are design matrices +#' (only 1s and 0s and all rows sum to 1). When a column in +#' \eqn{\mathbf{Z}}{Z} has multiple 1s, the first row in the +#' \eqn{\mathbf{a}}{a} matrix associated with those \eqn{\mathbf{Z}}{Z} +#' rows is 0 and the other associated \eqn{\mathbf{a}}{a} rows have an +#' estimated value. This is used to treat \eqn{\mathbf{a}}{a} as an +#' intercept where one intercept for each \eqn{\mathbf{x}}{x} (hidden +#' state) is fixed at 0 and any other intercepts associated with that +#' \eqn{\mathbf{x}}{x} have an estimated intercept. This ensures a solvable +#' model when \eqn{\mathbf{Z}}{Z} is a design matrix. Note in the model +#' argument and output, `A` is capitalized. +#' * `Q` Default="diagonal and unequal". A text string, "identity", +#' "unconstrained", "diagonal and unequal", "diagonal and equal", +#' "equalvarcov", "zero". May be specified as a list matrix for general +#' specification of both fixed and shared elements within the matrix. May +#' also be specified as a numeric g x g matrix to use a custom fixed matrix. +#' Default value of g is m, so \eqn{\mathbf{Q}}{Q} is a m x m matrix. g is +#' the number of columns in \eqn{\mathbf{G}}{G} (below). +#' * `R` Default="diagonal and equal". A text string, "identity", +#' "unconstrained", "diagonal and unequal", "diagonal and equal", +#' "equalvarcov", "zero". May be specified as a list matrix for general +#' specification of both fixed and shared elements within the matrix. May +#' also be specified as a numeric h x h matrix to use a custom fixed matrix. +#' Default value of h is n, so \eqn{\mathbf{R}}{R} is a n x n matrix. h is +#' the number of columns in \eqn{\mathbf{H}}{H} (below). +#' * `V0` Default="zero". A text string, "identity", "unconstrained", +#' "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". May +#' be specified as a list matrix for general specification of both fixed and +#' shared elements within the matrix. May also be specified as a numeric m x +#' m matrix to use a custom fixed matrix. +#' * `D` and `C` Default="zero". A text string, "identity", "unconstrained", +#' "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". Can +#' be specified as a list matrix for general specification of both fixed and +#' shared elements within the matrix. May also be specified as a numeric +#' matrix to use custom fixed values. Must have n rows +#' (\eqn{\mathbf{D}}{D}) or m rows (\eqn{\mathbf{C}}{C}). +#' * `d` and `c` Default="zero". Numeric matrix. No missing values allowed. +#' Must have 1 column or the same number of columns as the data, +#' \eqn{\mathbf{y}}{y}. The numbers of rows in \eqn{\mathbf{d}}{d} must be +#' the same as number of columns in \eqn{\mathbf{D}}{D}; similarly for +#' \eqn{\mathbf{c}}{c} and \eqn{\mathbf{C}}{C}. +#' * `G` and `H` Default="identity". A text string, "identity". Can be +#' specified as a numeric matrix or array for time-varying cases. Must have +#' m rows and g columns (\eqn{\mathbf{G}}{G}) or n rows and h columns +#' (\eqn{\mathbf{H}}{H}). g is the dim of \eqn{\mathbf{Q}}{Q} and h is the +#' dim of \eqn{\mathbf{R}}{R}. +#' * `tinitx` Default=0. Whether the initial state is specified at t=0 +#' (default) or t=1. +#' +#' All parameters except \eqn{\mathbf{x}_0}{x0} and \eqn{\mathbf{V}_0}{V0} +#' may be time-varying. If time-varying, then text shortcuts cannot be used. +#' Enter as an array with the 3rd dimension being time. Time dimension must be +#' 1 or equal to the number of time-steps in the data. See Quick Start guide +#' (`RShowDoc("Quick_Start",package="MARSS")`) or the User Guide +#' (`RShowDoc("UserGuide",package="MARSS")`) for examples. +#' +#' Valid model structures for `method="BFGS"` are the same as for +#' `method="kem"`. See [MARSSoptim()] for the allowed options for this method. +#' +#' The default estimation method, `method="kem"`, is the EM algorithm +#' described in the MARSS User Guide. The default settings for the control and +#' inits arguments are set via `MARSS:::alldefaults$kem` in +#' `MARSSsettings.R`. The defaults for the model argument are set in +#' `MARSS_marxss.R`. For this method, they are: +#' +#' * inits = list(B=1, U=0, Q=0.05, Z=1, A=0, R=0.05, x0=-99, V0=0.05, +#' G=0, H=0, L=0, C=0, D=0, c=0, d=0) +#' * model = list(Z="identity", A="scaling", R="diagonal and equal", +#' B="identity", U="unconstrained", Q="diagonal and unequal", +#' x0="unconstrained", V0="zero", C="zero", D="zero", +#' c=matrix(0,0,1), d=matrix(0,0,1), tinitx=0, diffuse=FALSE) +#' * control=list(minit=15, maxit=500, abstol=0.001, trace=0, sparse=FALSE, +#' safe=FALSE, allow.degen=TRUE, min.degen.iter=50, degen.lim=1.0e-04, +#' min.iter.conv.test=15, conv.test.deltaT=9, conv.test.slope.tol=0.5, +#' demean.states=FALSE). You can read about these in [MARSS()]. If you want +#' to speed up your fits, you can turn off most of the model checking using +#' `trace=-1`. +#' * fun.kf = "MARSSkfas". This sets the Kalman filter function to use. +#' `MARSSkfas()` is generally more stable as it uses Durban & Koopman's +#' algorithm. But it may dramatically slow down when the data set is large +#' (more than 10 rows of data). Try the classic Kalman filter algorithm to +#' see if it runs faster by setting `fun.kf="MARSSkfss"`. You can read about +#' the two algorithms in [MARSSkf()]. +#' +#' For `method="BFGS"`, type `MARSS:::alldefaults$BFGS` to see the defaults. +#' +#' @return +#' An object of class [marssMLE]. See [print.marssMLE()] for a discussion of +#' the various output available for [marssMLE] objects (coefficients, +#' residuals, Kalman filter and smoother output, imputed values for missing +#' data, etc.). See [MARSSsimulate()] for simulating from [marssMLE] objects. +#' [MARSSboot()] for bootstrapping, [MARSSaic()] for calculation of various +#' AIC related model selection metrics, and [MARSSparamCIs()] for calculation +#' of confidence intervals and bias. See [plot.marssMLE()] for some default +#' plots of a model fit. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [marssMODEL], [MARSS.dfa()] +#' +#' @examples +#' \dontrun{ +#' # See the MARSS man page for examples +#' ?MARSS +#' +#' # and the Quick Examples chapter in the User Guide +#' RShowDoc("UserGuide", package = "MARSS") +#' } +#' +#' @keywords appendix +#' @export MARSS.marxss <- function(MARSS.call) { # load needed package globals common.allowed.in.MARSS.call <- get("common.allowed.in.MARSS.call", envir = pkg_globals) diff --git a/R/MARSSaic.R b/R/MARSSaic.R index e3076418..adffb5eb 100644 --- a/R/MARSSaic.R +++ b/R/MARSSaic.R @@ -4,6 +4,78 @@ # elements in output arg # samp.size, num.params ####################################################################################################### + +#' AIC for MARSS Models +#' +#' @description +#' Calculates AIC, AICc, a parametric bootstrap AIC (AICbp) and a +#' non-parametric bootstrap AIC (AICbb). If you simply want the AIC value for +#' a [marssMLE] object, you can use `AIC(fit)`. +#' +#' @param MLEobj An object of class [marssMLE]. This object must have a `$par` +#' element containing MLE parameter estimates from e.g. `MARSSkem()`. +#' @param output A vector containing one or more of the following: "AIC", +#' "AICc", "AICbp", "AICbb", "AICi", "boot.params". See Details. +#' @param Options A list containing: +#' * `nboot` Number of bootstraps (positive integer) +#' * `return.logL.star` Return the log-likelihoods for each bootstrap? (T/F) +#' * `silent` Suppress printing of the progress bar during AIC bootstraps? +#' (T/F) +#' +#' @details +#' When sample size is small, Akaike's Information Criterion (AIC) +#' under-penalizes more complex models. The most commonly used small sample +#' size corrector is AICc, which uses a penalty term of +#' \eqn{K n/(n-K-1)}, where \eqn{K} is the number of estimated parameters. +#' However, for time series models, AICc still under-penalizes complex models; +#' this is especially true for MARSS models. +#' +#' Two small-sample estimators specific for MARSS models have been developed. +#' Cavanaugh and Shumway (1997) developed a variant of bootstrapped AIC using +#' Stoffer and Wall's (1991) bootstrap algorithm ("AICbb"). Holmes and Ward +#' (2010) developed a variant on AICb ("AICbp") using a parametric bootstrap. +#' The parametric bootstrap permits AICb calculation when there are missing +#' values in the data, which Cavanaugh and Shumway's algorithm does not allow. +#' More recently, Bengtsson and Cavanaugh (2006) developed another +#' small-sample AIC estimator, AICi, based on fitting candidate models to +#' multivariate white noise. +#' +#' When the `output` argument passed in includes both `"AICbp"` and +#' `"boot.params"`, the bootstrapped parameters from `"AICbp"` will be added +#' to `MLEobj`. +#' +#' @return +#' Returns the [marssMLE] object that was passed in with additional AIC +#' components added on top as specified in the 'output' argument. +#' +#' @references +#' Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of +#' multivariate time-series using the MARSS package. NOAA Fisheries, Northwest +#' Fisheries Science Center, 2725 Montlake Blvd E., Seattle, WA 98112. Type +#' `RShowDoc("UserGuide",package="MARSS")` to open a copy. +#' +#' Bengtsson, T., and J. E. Cavanaugh. 2006. An improved Akaike information +#' criterion for state-space model selection. Computational Statistics & Data +#' Analysis 50:2635-2654. +#' +#' Cavanaugh, J. E., and R. H. Shumway. 1997. A bootstrap variant of AIC for +#' state-space model selection. Statistica Sinica 7:473-496. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSboot()] +#' +#' @examples +#' dat <- t(harborSealWA) +#' dat <- dat[2:3, ] +#' kem <- MARSS(dat, model = list( +#' Z = matrix(1, 2, 1), +#' R = "diagonal and equal" +#' )) +#' kemAIC <- MARSSaic(kem, output = c("AIC", "AICc")) +#' +#' @export MARSSaic <- function(MLEobj, output = c("AIC", "AICc"), Options = list( nboot = 1000, return.logL.star = FALSE, silent = FALSE diff --git a/R/MARSSapplynames.R b/R/MARSSapplynames.R index 15425359..49cb7bca 100644 --- a/R/MARSSapplynames.R +++ b/R/MARSSapplynames.R @@ -1,3 +1,26 @@ +#' Names for marssMLE Object Components +#' +#' @description +#' Puts names on the par, start, par.se, init components of [marssMLE] +#' objects. This is a utility function in the **MARSS** package and is not +#' exported. +#' +#' @param MLEobj An object of class [marssMLE]. +#' +#' @details +#' The X.names and Y.names are attributes of [marssMODEL] objects (which +#' would be in `$marss` and `$model` in the [marssMLE] object). These names +#' are applied to the par elements in the [marssMLE] object. +#' +#' @return +#' The object passed in, with row and column names on matrices as specified. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [marssMLE], [marssMODEL] +#' +#' @keywords internal MARSSapplynames <- function(MLEobj) { ## Helper function to put names on the elements in a marssMLE object if (!inherits(MLEobj, "marssMLE")) { diff --git a/Rplots.pdf b/Rplots.pdf deleted file mode 100644 index b237141804cb9da7fbad07d94d35eb2b54cfb20a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504346 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%0A~ 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

DB9HEqtb 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

WDHy2Mw)zC<36s91-ZIfz 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

+5! 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

  • d-(N9rAvb!5S(^r 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

    +vkc~rV%+R61nZ9VKXtz>oRx^GmddODY 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 l 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 z

    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 will print full error messages. In addition if trace>0, the Kalman filter output will be added to the outputted \code{marssMLE} object. Additional information recorded depends on the method of maximization. For the EM algorithm, a record of each parameter estimate for each EM iteration will be added. See \code{\link{optim}} for trace output details for the BFGS method. \code{trace=-1} will turn off most internal error-checking and most error messages. The internal error checks are time expensive so this can speed up model fitting. This is particularly useful for bootstrapping and simulation studies. It is also useful if you get an error saying that \code{MARSS()} stops in \code{\link{MARSSkfss}()} due to a \code{chol()} call. \code{MARSSkfss()} uses matrix inversions and for some models these are unstable (high condition value). \code{MARSSkfss()} is used for error-checks and does not need to be called normally. } - \item{\code{safe}}{ Setting \code{safe=TRUE} runs the Kalman smoother after each parameter update rather than running the smoother only once after updated all parameters. The latter is faster but is not a strictly correct EM algorithm. In most cases, \code{safe=FALSE} (default) will not change the fits. If this setting does cause problems, you will know because you will see an error regarding the log-likelihood dropping and it will direct you to set \code{safe=TRUE}. } - } } - \item{...}{ Optional arguments passed to function specified by form. } -} -\details{ -The \code{model} argument specifies the structure of your model. There is a one-to-one correspondence between how you would write your model in matrix form on the whiteboard and how you specify the model for \code{MARSS()}. Many different types of multivariate time-series models can be converted to the MARSS form. See the \href{https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf}{User Guide} and \href{https://cran.r-project.org/package=MARSS/vignettes/Quick_Start.html}{Quick Start Guide} for examples. - -The MARSS package has two forms for standard users: marxss and dfa. -\describe{ -\item{\code{\link{MARSS.marxss}}}{This is the default form. This is a MARSS model with (optional) inputs \eqn{\mathbf{c}_t}{c(t)} or \eqn{\mathbf{d}_t}{d(t)}. Most users will want this help page.} -\item{\code{\link{MARSS.dfa}}}{This is a model form to allow easier specification of models for Dynamic Factor Analysis. The \eqn{\mathbf{Z}}{Z} parameters has a specific form and the \eqn{\mathbf{Q}}{Q} is set at i.i.d (diagonal) with variance of 1.} -} -Those looking to modify or understand the base code, should look at \code{\link{MARSS.marss}} and -\code{\link{MARSS.vectorized}}. These describe the forms used by the base functions. The EM algorithm uses the MARSS model written in vectorized form. This form is what allows linear constraints. - -The likelihood surface for MARSS models can be multimodal or with strong ridges. It is recommended that for final analyses the estimates are checked by using a Monte Carlo initial conditions search; see the chapter on initial conditions searches in the User Guide. This requires more computation time, but reduces the chance of the algorithm terminating at a local maximum and not reaching the true MLEs. Also it is wise to check the EM results against the BFGS results (if possible) if there are strong ridges in the likelihood. Such ridges seems to slow down the EM algorithm considerably and can cause the algorithm to report convergence far from the maximum-likelihood values. EM steps up the likelihood and the convergence test is based on the rate of change of the log-likelihood in each step. Once on a strong ridge, the steps can slow dramatically. You can force the algorithm to keep working by setting \code{minit}. BFGS seems less hindered by the ridges but can be prodigiously slow for some multivariate problems. BFGS tends to work better if you give it good initial conditions (see Examples below for how to do this). - -If you are working with models with time-varying parameters, it is important to notice the time-index for the parameters in the process equation (the \eqn{\mathbf{x}}{x} equation). In some formulations (e.g. in \code{\link[KFAS]{KFAS}}), the process equation is \eqn{\mathbf{x}_t=\mathbf{B}_{t-1}\mathbf{x}_{t-1}+\mathbf{w}_{t-1}}{x(t)=B(t-1)x(t-1)+w(t-1)} so \eqn{\mathbf{B}_{t-1}}{B(t-1)} goes with \eqn{\mathbf{x}_t}{x(t)} not \eqn{\mathbf{B}_t}{B(t)}. Thus one needs to be careful to line up the time indices when passing in time-varying parameters to \code{MARSS()}. See the User Guide for examples. -} - -\value{ - An object of class \code{\link{marssMLE}}. The structure of this object is discussed below, but if you want to know how to get specific output (like residuals, coefficients, smoothed states, confidence intervals, etc), see \code{\link{print.marssMLE}()}, \code{\link{tidy.marssMLE}()}, \code{\link{MARSSresiduals}()} and \code{\link{plot.marssMLE}()}. - - The outputted \code{\link{marssMLE}} object has the following components: - \item{model}{ MARSS model specification. It is a \code{\link{marssMODEL}} object in the form specified by the user in the \code{MARSS()} call. This is used by print functions so that the user sees the expected form.} - \item{marss}{ The \code{\link{marssMODEL}} object in marss form. This form is needed for all the internal algorithms, thus is a required part of a \code{\link{marssMLE}} object.} - \item{call}{ All the information passed in in the \code{MARSS()} call. } - \item{start}{ List with specifying initial values that were used for each parameter matrix. } - \item{control}{ A list of estimation options, as specified by arguments \code{control}. } - \item{method}{ Estimation method. } - If \code{fit=TRUE}, the following are also added to the \code{\link{marssMLE}} object. - If \code{fit=FALSE}, a \code{\link{marssMLE}} object ready for fitting via the specified \code{method} is returned. - \item{par}{ A list of estimated parameter values in marss form. Use \code{\link[=print.marssMLE]{print}()}, \code{\link[=tidy.marssMLE]{tidy}()} or \code{\link[=coef.marssMLE]{coef}()} for outputing the model estimates in the \code{MARSS()} call (e.g. the default "marxss" form).} - \item{states}{ The expected value of \eqn{\mathbf{X}}{X} conditioned on all the data, i.e. smoothed states. } - \item{states.se}{ The standard errors of the expected value of \eqn{\mathbf{X}}{X}. } - \item{ytT}{ The expected value of \eqn{\mathbf{Y}}{Y} conditioned on all the data. Note this is just \eqn{y} for those \eqn{y} that are not missing. } - \item{ytT.se}{ The standard errors of the expected value of \eqn{\mathbf{Y}}{Y}. Note this is 0 for any non-missing \eqn{y}.} - \item{numIter}{ Number of iterations required for convergence. } - \item{convergence}{ Convergence status. 0 means converged successfully, 3 means all parameters were fixed (so model did not need to be fit) and -1 means call was made with \code{fit=FALSE} and parameters were not fixed (thus no \code{$par} element and Kalman filter/smoother cannot be run). Anything else is a warning or error. 2 means the \code{\link{marssMLE}} object has an error; the object is returned so you can debug it. The other numbers are errors during fitting. The error code depends on the fitting method. See \code{\link{MARSSkem}} and \code{\link{MARSSoptim}}. } - \item{logLik}{ Log-likelihood. } - \item{AIC}{ Akaike's Information Criterion. } - \item{AICc}{ Sample size corrected AIC. } -If \code{control$trace} is set to 1 or greater, the following are also added to the \code{\link{marssMLE}} object. - \item{kf}{ A list containing Kalman filter/smoother output from \code{\link{MARSSkf}()}. This is not normally added to a \code{\link{marssMLE}} object since it is verbose, but can be added using \code{\link{MARSSkf}()}.} - \item{Ey}{ A list containing output from \code{\link{MARSShatyt}}. This isn't normally added to a \code{\link{marssMLE}} object since it is verbose, but can be computed using \code{\link{MARSShatyt}()}.} -} -\references{ -The MARSS User Guide: Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science -Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type \code{RShowDoc("UserGuide",package="MARSS")} to open a copy. - -Holmes, E. E. (2012). Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models. Technical Report. arXiv:1302.3919 [stat.ME] - -Holmes, E. E., E. J. Ward and K. Wills. (2012) MARSS: Multivariate autoregressive state-space models for analyzing time-series data. R Journal 4: 11-19. -} -\author{ - Eli Holmes, Eric Ward and Kellie Wills, NOAA, Seattle, USA. -} -\seealso{ -\code{\link{marssMLE}}, \code{\link{MARSSkem}()}, \code{\link{MARSSoptim}()}, \code{\link{MARSSkf}()}, \code{\link{MARSS-package}}, \code{\link{print.marssMLE}()}, \code{\link{plot.marssMLE}()}, \code{\link{print.marssMODEL}()}, \code{\link{MARSS.marxss}()}, \code{\link{MARSS.dfa}()}, \code{\link[=fitted.marssMLE]{fitted}()}, \code{\link[=residuals.marssMLE]{residuals}()}, \code{\link{MARSSresiduals}()}, \code{\link[=predict.marssMLE]{predict}()}, \code{\link[=tsSmooth.marssMLE]{tsSmooth}()}, -\code{\link[=tidy.marssMLE]{tidy}()}, \code{\link[=coef.marssMLE]{coef}()} -} -\examples{ -dat <- t(harborSealWA) -dat <- dat[2:4, ] # remove the year row -# fit a model with 1 hidden state and 3 observation time series -kemfit <- MARSS(dat, model = list( - Z = matrix(1, 3, 1), - R = "diagonal and equal" -)) -kemfit$model # This gives a description of the model -print(kemfit$model) # same as kemfit$model -summary(kemfit$model) # This shows the model structure - -# add CIs to a marssMLE object -# default uses an estimated Hessian matrix -kem.with.hess.CIs <- MARSSparamCIs(kemfit) -kem.with.hess.CIs - -# fit a model with 3 hidden states (default) -kemfit <- MARSS(dat, silent = TRUE) # suppress printing -kemfit - -# Fit the above model with BFGS using a short EM fit as initial conditions -kemfit <- MARSS(dat, control=list(minit=5, maxit=5)) -bffit <- MARSS(dat, method="BFGS", inits=kemfit) - -# fit a model with 3 correlated hidden states -# with one variance and one covariance -# maxit set low to speed up example, but more iters are needed for convergence -kemfit <- MARSS(dat, model = list(Q = "equalvarcov"), control = list(maxit = 50)) -# use Q="unconstrained" to allow different variances and covariances - -# fit a model with 3 independent hidden states -# where each observation time series is independent -# the hidden trajectories 2-3 share their U parameter -kemfit <- MARSS(dat, model = list(U = matrix(c("N", "S", "S"), 3, 1))) - -# same model, but with fixed independent observation errors -# and the 3rd x processes are forced to have a U=0 -# Notice how a list matrix is used to combine fixed and estimated elements -# all parameters can be specified in this way using list matrices -kemfit <- MARSS(dat, model = list(U = matrix(list("N", "N", 0), 3, 1), R = diag(0.01, 3))) - -# fit a model with 2 hidden states (north and south) -# where observation time series 1-2 are north and 3 is south -# Make the hidden state process independent with same process var -# Make the observation errors different but independent -# Make the growth parameters (U) the same -# Create a Z matrix as a design matrix that assigns the "N" state to the first 2 rows of dat -# and the "S" state to the 3rd row of data -Z <- matrix(c(1, 1, 0, 0, 0, 1), 3, 2) -# You can use factor is a shortcut making the above design matrix for Z -# Z <- factor(c("N","N","S")) -# name the state vectors -colnames(Z) <- c("N", "S") -kemfit <- MARSS(dat, model = list( - Z = Z, - Q = "diagonal and equal", R = "diagonal and unequal", U = "equal" -)) - -# print the model followed by the marssMLE object -kemfit$model - -\dontrun{ -# simulate some new data from our fitted model -sim.data <- MARSSsimulate(kemfit, nsim = 10, tSteps = 10) - -# Compute bootstrap AIC for the model; this takes a long, long time -kemfit.with.AICb <- MARSSaic(kemfit, output = "AICbp") -kemfit.with.AICb -} - -\dontrun{ -# Many more short examples can be found in the -# Quick Examples chapter in the User Guide -RShowDoc("UserGuide", package = "MARSS") - -# You can find the R scripts from the chapters by -# going to the index page -RShowDoc("index", package = "MARSS") -} - -} - diff --git a/man/MARSSFisherI.Rd b/man/MARSSFisherI.Rd deleted file mode 100644 index a66dbac5..00000000 --- a/man/MARSSFisherI.Rd +++ /dev/null @@ -1,63 +0,0 @@ -\name{MARSSFisherI} -\alias{MARSSFisherI} - -\title{ Observed Fisher Information Matrix at the MLE } -\description{ -Returns the observed Fisher Information matrix for a \code{\link{marssMLE}} object (a fitted MARSS model) via either the analytical algorithm of Harvey (1989) or a numerical estimate. - -The observed Fisher Information is the negative of the second-order partial derivatives of the log-likelihood function evaluated at the MLE. The derivatives being with respect to the parameters. The Hessian matrix is the second-order partial derivatives of a scalar-valued function. Thus the observed Fisher Information matrix is the Hessian of the negative log-likelihood function evaluated at the MLE (or equivalently the negative of the Hessian of the log-likelihood function). The inverse of the observed Fisher Information matrix is an estimate of the asymptotic variance-covariance matrix for the estimated parameters. Use \code{\link{MARSShessian}()} (which calls \code{MARSSFisherI()}) to return the parameter variance-covariance matrix computed from the observed Fisher Information matrix. - -Note for the numerically estimated Hessian, we pass in the negative log-likelihood function to a minimization function. As a result, the numerical functions return the Hessian of the negative log-likelihood function (which is the observed Fisher Information matrix). -} -\usage{ -MARSSFisherI(MLEobj, method = c("Harvey1989", "fdHess", "optim")) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. - This object must have a \code{$par} element containing MLE parameter estimates from e.g. \code{\link{MARSSkem}()}. } - \item{method}{ The method to use for computing the observed Fisher Information matrix. Options are \code{"Harvey1989"} to use the Harvey (1989) recursion, which is an analytical solution, \code{"fdHess"} or \code{"optim"} which are two numerical methods. Although 'optim' can be passed to the function, 'fdHess' is used for all numerical estimates used in the MARSS package.} - } -\details{ - Method 'fdHess' uses \code{\link{fdHess}()} from package \code{\link{nlme}} to numerically estimate the Hessian of the negative log-likelihood function at the MLEs. Method 'optim' uses \code{\link{optim}()} with \code{hessian=TRUE} and \code{list(maxit=0)} to ensure that the Hessian is computed at the values in the \code{par} element of the MLE object. The \code{par} element of the \code{\link{marssMLE}} object is the MLE. - -Method 'Harvey1989' (the default) uses the recursion in Harvey (1989) to compute the observed Fisher Information of a MARSS model analytically. See Holmes (2016c) for a discussion of the Harvey (1989) algorithm and see Holmes (2017) on how to implement the algorithm for MARSS models with linear constraints (the type of MARSS models that the MARSS R package addresses). - -There has been research on computing the observed Fisher Information matrix from the derivatives used by EM algorithms (discussed in Holmes (2016a, 2016b)), for example Louis (1982). Unfortunately, the EM algorithm used in the MARSS package is for time series data and the temporal correlation must be dealt with, e.g. Duan & Fulop (2011). Oakes (1999) has an approach that only involves derivatives of \eqn{\textrm{E}[LL(\Theta)|\mathbf{y},\Theta']}{E(LL(Theta)|data, Theta')} but one of the derivatives will be the derivative of the \eqn{\textrm{E}[\mathbf{X}|\mathbf{y},\Theta']}{E(X|data, Theta')} with respect to \eqn{\Theta'}{Theta'}. It is not clear how to do that derivative. Moon-Ho, Shumway and Ombao (2006) suggest (page 157) that this derivative is hard to compute. - -} -\value{ - Returns the observed Fisher Information matrix. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{MARSSharveyobsFI}()}, \code{\link{MARSShessian.numerical}}, \code{\link{MARSSparamCIs}}, \code{\link{marssMLE}} } -\examples{ -dat <- t(harborSeal) -dat <- dat[2:4, ] -MLEobj <- MARSS(dat, model=list(Z=matrix(1,3,1), R="diagonal and equal")) -MARSSFisherI(MLEobj) -MARSSFisherI(MLEobj, method="fdHess") - -} -\references{ -Harvey, A. C. (1989) Section 3.4.5 (Information matrix) in Forecasting, structural time series models and the Kalman filter. Cambridge University Press, Cambridge, UK. - -See also J. E. Cavanaugh and R. H. Shumway (1996) On computing the expected Fisher information matrix for state-space model parameters. Statistics & Probability Letters 26: 347-355. This paper discusses the Harvey (1989) recursion (and proposes an alternative). - -Holmes, E. E. 2016a. Notes on computing the Fisher Information matrix for MARSS models. Part I Background. Technical Report. https://doi.org/10.13140/RG.2.2.27306.11204/1 \href{https://eeholmes.github.io/posts/2016-5-18-FI-recursion-1/}{Notes} - -Holmes, E. E. 2016b. Notes on computing the Fisher Information matrix for MARSS models. Part II Louis 1982. Technical Report. https://doi.org/10.13140/RG.2.2.35694.72000 \href{https://eeholmes.github.io/posts/2016-5-19-FI-recursion-2/}{Notes} - -Holmes, E. E. 2016c. Notes on computing the Fisher Information matrix for MARSS models. Part III Overview of Harvey 1989. https://eeholmes.github.io/posts/2016-6-16-FI-recursion-3/ - -Holmes, E. E. 2017. Notes on computing the Fisher Information matrix for MARSS models. Part IV Implementing the Recursion in Harvey 1989. https://eeholmes.github.io/posts/2017-5-31-FI-recursion-4/ - -Duan, J. C. and A. Fulop. (2011) A stable estimator of the information matrix under EM for dependent data. Statistics and Computing 21: 83-91 - -Louis, T. A. 1982. Finding the observed information matrix when using the EM algorithm. Journal of the Royal Statistical Society. Series B (Methodological). 44: 226-233. - -Oakes, D. 1999. Direct calculation of the information matrix via the EM algorithm. Journal of the Royal Statistical Society. Series B (Methodological). 61: 479-482. - -Moon-Ho, R. H., R. H. Shumway, and Ombao 2006. The state-space approach to modeling dynamic processes. Chapter 7 in Models for Intensive Longitudinal Data. Oxford University Press. -} diff --git a/man/MARSS_dfa.Rd b/man/MARSS_dfa.Rd deleted file mode 100644 index e92c71f6..00000000 --- a/man/MARSS_dfa.Rd +++ /dev/null @@ -1,83 +0,0 @@ -\name{MARSS.dfa} -\alias{MARSS.dfa} - -\title{ Multivariate Dynamic Factor Analysis } - -\description{ -The Dynamic Factor Analysis model in MARSS is -The argument \code{form="marxss"} in a \code{\link{MARSS}()} function call specifies a MAR-1 model with eXogenous variables model. This is a MARSS(1) model of the form: -\deqn{\mathbf{x}_{t} = \mathbf{x}_{t-1} + \mathbf{w}_t, \textrm{ where } \mathbf{W}_t \sim \textrm{MVN}(0,\mathbf{I})}{x(t) = x(t-1) + w(t), where W(t) ~ MVN(0,I)} -\deqn{\mathbf{y}_t = \mathbf{Z}_t \mathbf{x}_t + \mathbf{D}_t \mathbf{d}_t + \mathbf{v}_t, \textrm{ where } \mathbf{V}_t \sim \textrm{MVN}(0,\mathbf{R}_t)}{y(t) = Z(t) x(t) + D(t) d(t) + v(t), where V(t) ~ MVN(0,R(t))} -\deqn{\mathbf{X}_1 \sim \textrm{MVN}(\mathbf{x0}, 5\mathbf{I})}{X(1) ~ MVN(x0, 5I) } -Note, by default \eqn{\mathbf{x}_1}{x(1)} is treated as a diffuse prior. - -Passing in \code{form="dfa"} to \code{\link{MARSS}()} invokes a helper function to create that model and creates the \eqn{\mathbf{Z}}{Z} matrix for the user. \eqn{\mathbf{Q}}{Q} is by definition identity, \eqn{\mathbf{x}_0}{x0} is zero and \eqn{\mathbf{V_0}}{V0} is diagonal with large variance (5). \eqn{\mathbf{u}}{U} is zero, \eqn{\mathbf{a}}{A} is zero, and covariates only enter the \eqn{\mathbf{y}}{Y} equation. Because \eqn{\mathbf{u}}{U} and \eqn{\mathbf{a}}{A} are 0, the data should have mean 0 (demeaned) otherwise one is likely to be creating a structurally inadequate model (i.e. the model implies that the data have mean = 0, yet data do not have mean = 0 ). -} -\section{Usage}{ -\code{MARSS(y, - inits = NULL, - model = NULL, - miss.value = as.numeric(NA), - method = "kem", - form = "dfa", - fit = TRUE, - silent = FALSE, - control = NULL, - fun.kf = "MARSSkfas", - demean = TRUE, - z.score = TRUE)} -} - -\arguments{ -Some arguments are common to all forms: "y" (data), "inits", "control", "method", "form", "fit", "silent", "fun.kf". See \code{\link{MARSS}} for information on these arguments. - -In addition to these, form="dfa" has some special arguments that can be passed in: -\itemize{ - \item \code{demean} Logical. Default is TRUE, which means the data will be demeaned. - \item \code{z.score} Logical. Default is TRUE, which means the data will be z-scored (demeaned and variance standardized to 1). - \item \code{covariates} Covariates (\eqn{d}) for the \eqn{y} equation. No missing values allowed and must be a matrix with the same number of time steps as the data. An unconstrained \eqn{D} matrix will estimated. - } - -The \code{model} argument of the \code{\link{MARSS}()} call is constrained in terms of what parameters can be changed and how they can be changed. See details below. An additional element, \code{m}, can be passed into the \code{model} argument that specifies the number of hidden state variables. It is not necessarily for the user to specify \code{Z} as the helper function will create a \code{Z} appropriate for a DFA model. -} -\details{ -The \code{model} argument is a list. The following details what list elements can be passed in: - \itemize{ - \item \code{B} "Identity". The standard (and default) DFA model has B="identity". However it can be "identity", "diagonal and equal", "diagonal and unequal" or a time-varying fixed or estimated diagonal matrix. - \item \code{U} "Zero". Cannot be changed or passed in via model argument. - \item \code{Q} "Identity". The standard (and default) DFA model has Q="identity". However, it can be "identity", "diagonal and equal", "diagonal and unequal" or a time-varying fixed or estimated diagonal matrix. - \item \code{Z} Can be passed in as a (list) matrix if the user does not want a default DFA \code{Z} matrix. There are many equivalent ways to construct a DFA \code{Z} matrix. The default is Zuur et al.'s form (see User Guide). - \item \code{A} Default="zero". Can be "unequal", "zero" or a matrix. - \item \code{R} Default="diagonal and equal". Can be set to "identity", "zero", "unconstrained", "diagonal and unequal", "diagonal and equal", "equalvarcov", or a (list) matrix to specify general forms. - \item \code{x0} Default="zero". Can be "unconstrained", "unequal", "zero", or a (list) matrix. - \item \code{V0} Default=diagonal matrix with 5 on the diagonal. Can be "identity", "zero", or a matrix. - \item \code{tinitx} Default=0. Can be 0 or 1. Tells MARSS whether x0 is at t=0 or t=1. - \item \code{m} Default=1. Can be 1 to n (the number of y time-series). Must be integer. - } - -See the \href{https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf}{User Guide} chapter on Dynamic Factor Analysis for examples of of using \code{form="dfa"}. -} -\value{ -A object of class \code{\link{marssMLE}}. See \code{\link[=print.marssMLE]{print}()} for a discussion of the various output available for \code{\link{marssMLE}} objects (coefficients, residuals, Kalman filter and smoother output, imputed values for missing data, etc.). See \code{\link{MARSSsimulate}()} for simulating from \code{\link{marssMLE}} objects. \code{\link{MARSSboot}()} for bootstrapping, \code{\link{MARSSaic}()} for calculation of various AIC related model selection metrics, and \code{\link{MARSSparamCIs}()} for calculation of confidence intervals and bias. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. - } - -\seealso{ \code{\link{MARSS}()}, \code{\link{MARSS.marxss}()} } - -\references{ -The MARSS User Guide: Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science -Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type \code{RShowDoc("UserGuide",package="MARSS")} to open a copy. -} -\examples{ -\dontrun{ -dat <- t(harborSealWA[,-1]) -# DFA with 3 states; used BFGS because it fits much faster for this model -fit <- MARSS(dat, model = list(m=3), form="dfa", method="BFGS") - -# See the Dynamic Factor Analysis chapter in the User Guide -RShowDoc("UserGuide", package = "MARSS") -} -} - diff --git a/man/MARSS_marss.Rd b/man/MARSS_marss.Rd deleted file mode 100644 index 73cbe693..00000000 --- a/man/MARSS_marss.Rd +++ /dev/null @@ -1,51 +0,0 @@ -\name{MARSS.marss} -\alias{MARSS.marss} -\keyword{appendix} - - -\title{ Multivariate AR-1 State-space Model } -\description{ -The form of MARSS models for users is "marxss", the MARSS models with inputs. See \code{\link{MARSS.marxss}}. In the internal algorithms (e.g. \code{\link{MARSSkem}}), the "marss" form is used and the \eqn{\mathbf{D}\mathbf{d}_t}{Dd(t)} are incorporated into the \eqn{\mathbf{a}_t}{a(t)} matrix and \eqn{\mathbf{C}\mathbf{c}_t}{Cc(t)} are incorporated into the \eqn{\mathbf{u}_t}{u(t)}. The \eqn{\mathbf{a}}{a} and \eqn{\mathbf{u}}{u} matrices then become time-varying if the model includes \eqn{\mathbf{d}_t}{d(t)} and \eqn{\mathbf{c}_t}{c(t)}. - -This is a MARSS(1) model of the marss form: -\deqn{\mathbf{x}_{t} = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u}_t + \mathbf{G} \mathbf{w}_t, \textrm{ where } \mathbf{W}_t \sim \textrm{MVN}(0,\mathbf{Q})}{x(t) = B x(t-1) + u(t) + G w(t), where W(t) ~ MVN(0,Q)} -\deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a}_t + \mathbf{H} \mathbf{v}_t, \textrm{ where } \mathbf{V}_t \sim \textrm{MVN}(0,\mathbf{R})}{y(t) = Z x(t) + a(t) + H v(t), where V(t) ~ MVN(0,R)} -\deqn{\mathbf{X}_1 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) \textrm{ or } \mathbf{X}_0 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) }{X(1) ~ MVN(x0, V0) or X(0) ~ MVN(x0, V0) }Note, by default \eqn{\mathbf{V0}}{V0} is a matrix of all zeros and thus \eqn{\mathbf{x}_1}{x(1)} or \eqn{\mathbf{x}_0}{x(0)} is treated as an estimated parameter not a diffuse prior. To remove clutter, the rest of the parameters are shown as time-constant (no \eqn{t} subscript) but all parameters can be time-varying. - - -Note, "marss" is a model form. A model form is defined by a collection of form functions discussed in \code{\link{marssMODEL}}. These functions are not exported to the user, but are called by \code{\link{MARSS}()} using the argument \code{form}. These internal functions convert the users model list into the vec form of a MARSS model and do extensive error-checking. -} -\section{Usage}{ -\code{MARSS(y, - inits = NULL, - model = NULL, - miss.value = as.numeric(NA), - method = "kem", - form = "marxss", - fit = TRUE, - silent = FALSE, - control = NULL, - fun.kf = "MARSSkfas", - ...)} -} - -\details{ -See the help page for the \code{\link{MARSS.marxss}} form for details. -} -\value{ -A object of class \code{\link{marssMLE}}. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. - - } -\seealso{ \code{\link{marssMODEL}}, \code{\link{MARSS.marxss}()} } -\examples{ -\dontrun{ -# See the MARSS man page for examples -?MARSS - -# and the Quick Examples chapter in the User Guide -RShowDoc("UserGuide", package = "MARSS") -} -} diff --git a/man/MARSS_marxss.Rd b/man/MARSS_marxss.Rd deleted file mode 100644 index 7b3c616e..00000000 --- a/man/MARSS_marxss.Rd +++ /dev/null @@ -1,78 +0,0 @@ -\name{MARSS.marxss} -\alias{MARSS.marxss} -\keyword{appendix} - -\title{ Multivariate AR-1 State-space Model with Inputs } -\description{ -The argument \code{form="marxss"} in a \code{\link{MARSS}()} function call specifies a MAR-1 model with eXogenous variables model. This is a MARSS(1) model of the form: -\deqn{\mathbf{x}_{t} = \mathbf{B}_t \mathbf{x}_{t-1} + \mathbf{u}_t + \mathbf{C}_t \mathbf{c}_t + \mathbf{G}_t \mathbf{w}_t, \textrm{ where } \mathbf{W}_t \sim \textrm{MVN}(0,\mathbf{Q}_t)}{x(t) = B(t) x(t-1) + u(t) + C(t) c(t) + G(t) w(t), where W(t) ~ MVN(0,Q(t))} -\deqn{\mathbf{y}_t = \mathbf{Z}_t \mathbf{x}_t + \mathbf{a}_t + \mathbf{D}_t \mathbf{d}_t + \mathbf{H}_t \mathbf{v}_t, \textrm{ where } \mathbf{V}_t \sim \textrm{MVN}(0,\mathbf{R}_t)}{y(t) = Z(t) x(t) + a(t) + D(t) d(t) + H(t) v(t), where V(t) ~ MVN(0,R(t))} -\deqn{\mathbf{X}_1 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) \textrm{ or } \mathbf{X}_0 \sim \textrm{MVN}(\mathbf{x0}, \mathbf{V0}) }{X(1) ~ MVN(x0, V0) or X(0) ~ MVN(x0, V0) } -Note, by default \eqn{\mathbf{V0}}{V0} is a matrix of all zeros and thus \eqn{\mathbf{x}_1}{x(1)} or \eqn{\mathbf{x}_0}{x(0)} is treated as an estimated parameter not a diffuse prior. - -Note, "marxss" is a model form. A model form is defined by a collection of form functions discussed in \code{\link{marssMODEL}}. These functions are not exported to the user, but are called by \code{\link{MARSS}()} using the argument \code{form}. -} -\section{Usage}{ -\code{MARSS(y, - inits = NULL, - model = NULL, - miss.value = as.numeric(NA), - method = "kem", - form = "marxss", - fit = TRUE, - silent = FALSE, - control = NULL, - fun.kf = "MARSSkfas", - ...)} -} - -\details{ -The allowed arguments when \code{form="marxss"} are 1) the arguments common to all forms: "y" (data), "inits", "control", "method", "form", "fit", "silent", "fun.kf" (see \code{\link{MARSS}} for information on these arguments) and 2) the argument "model" which is a list describing the MARXSS model (the model list is described below). -See the \href{https://cran.r-project.org/package=MARSS/vignettes/Quick_Start.html}{Quick Start Guide} guide or the \href{https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf}{User Guide} for examples. - -The argument \code{model} must be a list. The elements in the list specify the structure for the \eqn{\mathbf{B}}{B}, \eqn{\mathbf{u}}{u}, \eqn{\mathbf{C}}{C}, \eqn{\mathbf{c}}{c}, \eqn{\mathbf{Q}}{Q}, \eqn{\mathbf{Z}}{Z}, \eqn{\mathbf{a}}{a}, \eqn{\mathbf{D}}{D}, \eqn{\mathbf{d}}{d}, \eqn{\mathbf{R}}{R}, \eqn{\mathbf{x}_0}{x0}, and \eqn{\mathbf{V}_0}{V0} in the MARXSS model (above). The list elements can have the following values: -\describe{ - \item{\code{Z}}{Default="identity". A text string, "identity","unconstrained", "diagonal and unequal", "diagonal and equal", "equalvarcov", or "onestate", or a length n vector of factors specifying which of the m hidden state time series correspond to which of the n observation time series. May be specified as a n x m list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric n x m matrix to use a custom fixed \eqn{\mathbf{Z}}{Z}. "onestate" gives a n x 1 matrix of 1s. "identity","unconstrained", "diagonal and unequal", "diagonal and equal", and "equalvarcov" all specify n x n matrices.} - \item{\code{B}}{Default="identity". A text string, "identity", "unconstrained", "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". Can also be specified as a list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric m x m matrix to use custom fixed \eqn{\mathbf{B}}{B}, but in this case all the eigenvalues of \eqn{\mathbf{B}}{B} must fall in the unit circle.} - \item{\code{U}, \code{x0}}{Default="unconstrained". A text string, "unconstrained", "equal", "unequal" or "zero". May be specified as a m x 1 list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric m x 1 matrix to use a custom fixed \eqn{\mathbf{u}}{u} or \eqn{\mathbf{x}_0}{x(0)}. Notice that \code{U} is capitalized in the \code{model} argument and output lists.} - \item{\code{A}}{Default="scaling". A text string, "scaling","unconstrained", "equal", "unequal" or "zero". May be specified as a n x 1 list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric n x 1 matrix to use a custom fixed \eqn{\mathbf{a}}{a}. Care must be taken when specifying \code{A} so that the model is not under-constrained and unsolvable model. The default, "scaling", only applies to \eqn{\mathbf{Z}}{Z} matrices that are design matrices (only 1s and 0s and all rows sum to 1). When a column in \eqn{\mathbf{Z}}{Z} has multiple 1s, the first row in the \eqn{\mathbf{a}}{a} matrix associated with those \eqn{\mathbf{Z}}{Z} rows is 0 and the other associated \eqn{\mathbf{a}}{a} rows have an estimated value. This is used to treat \eqn{\mathbf{a}}{a} as an intercept where one intercept for each \eqn{\mathbf{x}}{x} (hidden state) is fixed at 0 and any other intercepts associated with that \eqn{\mathbf{x}}{x} have an estimated intercept. This ensures a solvable model when \eqn{\mathbf{Z}}{Z} is a design matrix. Note in the model argument and output, \code{A} is capitalized.} - \item{\code{Q}}{Default="diagonal and unequal". A text string, "identity", "unconstrained", "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". May be specified as a list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric g x g matrix to use a custom fixed matrix. Default value of g is m, so \eqn{\mathbf{Q}}{Q} is a m x m matrix. g is the number of columns in \eqn{\mathbf{G}}{G} (below).} - \item{\code{R}}{Default="diagonal and equal". A text string, "identity", "unconstrained", "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". May be specified as a list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric h x h matrix to use a custom fixed matrix. Default value of h is n, so \eqn{\mathbf{R}}{R} is a n x n matrix. h is the num of columns in \eqn{\mathbf{H}}{H} (below).} - \item{\code{V0}}{Default="zero". A text string, "identity", "unconstrained", "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". May be specified as a list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric m x m matrix to use a custom fixed matrix.} - \item{\code{D} and \code{C}}{Default="zero". A text string, "identity", "unconstrained", "diagonal and unequal", "diagonal and equal", "equalvarcov", "zero". Can be specified as a list matrix for general specification of both fixed and shared elements within the matrix. May also be specified as a numeric matrix to use custom fixed values. Must have n rows (\eqn{\mathbf{D}}{D}) or m rows (\eqn{\mathbf{C}}{C}).} - \item{\code{d} and \code{c}}{Default="zero". Numeric matrix. No missing values allowed. Must have 1 column or the same number of columns as the data, \eqn{\mathbf{y}}{y}. The numbers of rows in \eqn{\mathbf{d}}{d} must be the same as number of columns in \eqn{\mathbf{D}}{D}; similarly for \eqn{\mathbf{c}}{c} and \eqn{\mathbf{C}}{C}.} - \item{\code{G} and \code{H}}{Default="identity". A text string, "identity". Can be specified as a numeric matrix or array for time-varying cases. Must have m rows and g columns (\eqn{\mathbf{G}}{G}) or n rows and h columns (\eqn{\mathbf{H}}{H}). g is the dim of \eqn{\mathbf{Q}}{Q} and h is the dim of \eqn{\mathbf{R}}{R}.} - \item{\code{tinitx}}{Default=0. Whether the initial state is specified at t=0 (default) or t=1.} - } -All parameters except \eqn{\mathbf{x}_0}{x0} and \eqn{\mathbf{V}_0}{V0} may be time-varying. If time-varying, then text shortcuts cannot be used. Enter as an array with the 3rd dimension being time. Time dimension must be 1 or equal to the number of time-steps in the data. See Quick Start guide (\code{RShowDoc("Quick_Start",package="MARSS")}) or the User Guide (\code{RShowDoc("UserGuide",package="MARSS")}) for examples.Valid model structures for \code{method="BFGS"} are the same as for \code{method="kem"}. See \code{\link{MARSSoptim}()} for the allowed options for this method. - - The default estimation method, \code{method="kem"}, is the EM algorithm described in the MARSS User Guide. The default settings for the control and inits arguments are set via \code{MARSS:::alldefaults$kem} in \code{MARSSsettings.R}. The defaults for the model argument are set in \code{MARSS_marxss.R} For this method, they are: -\itemize{ - \item{inits = list(B=1, U=0, Q=0.05, Z=1, A=0, R=0.05, x0=-99, V0=0.05, G=0, H=0, L=0, C=0, D=0, c=0, d=0)} - \item{model = list(Z="identity", A="scaling", R="diagonal and equal", B="identity", U="unconstrained", Q="diagonal and unequal", x0="unconstrained", V0="zero", C="zero",D="zero",c=matrix(0,0,1), d=matrix(0,0,1), tinitx=0, diffuse=FALSE)} - \item{control=list(minit=15, maxit=500, abstol=0.001, trace=0, sparse=FALSE, - safe=FALSE, allow.degen=TRUE, min.degen.iter=50, degen.lim=1.0e-04, - min.iter.conv.test=15, conv.test.deltaT=9, conv.test.slope.tol= 0.5, demean.states=FALSE) You can read about these in \code{\link{MARSS}()}. If you want to speed up your fits, you can turn off most of the model checking using \code{trace=-1}. } - \item{fun.kf = "MARSSkfas"; This sets the Kalman filter function to use. \code{MARSSkfas()} is generally more stable as it uses Durban & Koopman's algorithm. But it may dramatically slow down when the data set is large (more than 10 rows of data). Try the classic Kalman filter algorithm to see if it runs faster by setting \code{fun.kf="MARSSkfss"}. You can read about the two algorithms in \code{\link{MARSSkf}}.} - } -For \code{method="BFGS"}, type \code{MARSS:::alldefaults$BFGS} to see the defaults. - - -} -\value{ -A object of class \code{\link{marssMLE}}. See \code{\link{print.marssMLE}} for a discussion of the various output available for \code{\link{marssMLE}} objects (coefficients, residuals, Kalman filter and smoother output, imputed values for missing data, etc.). See \code{\link{MARSSsimulate}} for simulating from \code{\link{marssMLE}} objects. \code{\link{MARSSboot}} for bootstrapping, \code{\link{MARSSaic}} for calculation of various AIC related model selection metrics, and \code{\link{MARSSparamCIs}} for calculation of confidence intervals and bias. See \code{\link{plot.marssMLE}} for some default plots of a model fit. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. - - } -\seealso{ \code{\link{marssMODEL}}, \code{\link{MARSS.dfa}()} } -\examples{ -\dontrun{ -#See the MARSS man page for examples -?MARSS - -#and the Quick Examples chapter in the User Guide -RShowDoc("UserGuide",package="MARSS") -} -} diff --git a/man/MARSSaic.Rd b/man/MARSSaic.Rd deleted file mode 100644 index 4e8ad803..00000000 --- a/man/MARSSaic.Rd +++ /dev/null @@ -1,54 +0,0 @@ -\name{MARSSaic} -\alias{MARSSaic} -\title{ AIC for MARSS Models } -\description{ - Calculates AIC, AICc, a parametric bootstrap AIC (AICbp) and a non-parametric bootstrap AIC (AICbb). If you simply want the AIC value for a \code{\link{marssMLE}} object, you can use \code{AIC(fit)}. -} -\usage{ -MARSSaic(MLEobj, output = c("AIC", "AICc"), - Options = list(nboot = 1000, return.logL.star = FALSE, - silent = FALSE)) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. This object must have a \code{$par} element containing MLE parameter estimates from e.g. \code{MARSSkem()}. } - \item{output}{ A vector containing one or more of the following: "AIC", "AICc", "AICbp", "AICbb", "AICi", "boot.params". See Details.} - \item{Options}{ A list containing: - \itemize{ - \item \code{nboot} Number of bootstraps (positive integer) - \item \code{return.logL.star} Return the log-likelihoods for each bootstrap? (T/F) - \item \code{silent} Suppress printing of the progress bar during AIC bootstraps? (T/F) - } - } -} -\details{ - When sample size is small, Akaike's Information Criterion (AIC) under-penalizes more complex models. The most commonly used small sample size corrector is AICc, which uses a penalty term of \eqn{K n/(n-K-1)}, where \eqn{K} is the number of estimated parameters. However, for time series models, AICc still under-penalizes complex models; this is especially true for MARSS models. - -Two small-sample estimators specific for MARSS models have been developed. Cavanaugh and Shumway (1997) developed a variant of bootstrapped AIC using Stoffer and Wall's (1991) bootstrap algorithm ("AICbb"). Holmes and Ward (2010) developed a variant on AICb ("AICbp") using a parametric bootstrap. The parametric bootstrap permits AICb calculation when there are missing values in the data, which Cavanaugh and Shumway's algorithm does not allow. More recently, Bengtsson and Cavanaugh (2006) developed another small-sample AIC estimator, AICi, based on fitting candidate models to multivariate white noise. - -When the \code{output} argument passed in includes both \code{"AICbp"} and \code{"boot.params"}, the bootstrapped parameters from \code{"AICbp"} will be added to \code{MLEobj}. -} -\value{ - Returns the \code{\link{marssMLE}} object that was passed in with additional AIC components added on top as specified in the 'output' argument. -} -\references{ -Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science -Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type \code{RShowDoc("UserGuide",package="MARSS")} to open a copy. - -Bengtsson, T., and J. E. Cavanaugh. 2006. An improved Akaike information criterion for state-space model selection. Computational Statistics & Data Analysis 50:2635-2654. - -Cavanaugh, J. E., and R. H. Shumway. 1997. A bootstrap variant of AIC for state-space model selection. Statistica Sinica 7:473-496. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{MARSSboot}()} } -\examples{ -dat <- t(harborSealWA) -dat <- dat[2:3, ] -kem <- MARSS(dat, model = list( - Z = matrix(1, 2, 1), - R = "diagonal and equal" -)) -kemAIC <- MARSSaic(kem, output = c("AIC", "AICc")) -} - diff --git a/man/MARSSapplynames.Rd b/man/MARSSapplynames.Rd deleted file mode 100644 index 6599329d..00000000 --- a/man/MARSSapplynames.Rd +++ /dev/null @@ -1,26 +0,0 @@ -\name{MARSSapplynames} -\alias{MARSSapplynames} -\keyword{internal} - -\title{ Names for marssMLE Object Components } -\description{ -Puts names on the par, start, par.se, init components of \code{\link{marssMLE}} objects. This is a utility function in the \code{\link{MARSS-package}} and is not exported. -} -\usage{ -MARSSapplynames(MLEobj) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. } -} -\details{ -The X.names and Y.names are attributes of \code{\link{marssMODEL}} objects (which would be in \code{$marss} and \code{$model} in the \code{\link{marssMLE}} object). These names are applied to the par elements in the \code{\link{marssMLE}} object. -} -\value{ - The object passed in, with row and column names on matrices as specified. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{marssMLE}}, \code{\link{marssMODEL}} } - - From 03a0a8e999ffd4976292d3f5c94df64bb2505edf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:00:38 +0000 Subject: [PATCH 08/15] Batch 2: Convert MARSSboot, MARSSharveyobsFI, MARSShatyt, MARSShessian, MARSShessian_numerical, MARSSinfo, MARSSinits, MARSSkem, MARSSkemcheck to Roxygen2 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- R/MARSSboot.R | 63 ++++++++++++++++++++++ R/MARSSharveyobsFI.R | 36 +++++++++++++ R/MARSShatyt.r | 44 ++++++++++++++++ R/MARSShessian.R | 44 ++++++++++++++++ R/MARSShessian_numerical.R | 25 +++++++++ R/MARSSinfo.R | 17 ++++++ R/MARSSinits.R | 32 +++++++++++ R/MARSSkem.r | 84 +++++++++++++++++++++++++++++ R/MARSSkemcheck.r | 15 ++++++ man/MARSSboot.Rd | 76 --------------------------- man/MARSSharveyobsFI.Rd | 42 --------------- man/MARSShatyt.Rd | 52 ------------------ man/MARSShessian.Rd | 53 ------------------- man/MARSShessian_numerical.Rd | 31 ----------- man/MARSSinfo.Rd | 23 -------- man/MARSSinits.Rd | 41 --------------- man/MARSSkem.Rd | 99 ----------------------------------- man/MARSSkemcheck.Rd | 22 -------- 18 files changed, 360 insertions(+), 439 deletions(-) delete mode 100644 man/MARSSboot.Rd delete mode 100644 man/MARSSharveyobsFI.Rd delete mode 100644 man/MARSShatyt.Rd delete mode 100644 man/MARSShessian.Rd delete mode 100644 man/MARSShessian_numerical.Rd delete mode 100644 man/MARSSinfo.Rd delete mode 100644 man/MARSSinits.Rd delete mode 100644 man/MARSSkem.Rd delete mode 100644 man/MARSSkemcheck.Rd diff --git a/R/MARSSboot.R b/R/MARSSboot.R index bfcc8fc4..23aefae0 100644 --- a/R/MARSSboot.R +++ b/R/MARSSboot.R @@ -4,6 +4,69 @@ # This is an MLE function and uses marssMLE objects # return(list(boot.params=boot.params, boot.data=boot.data, model=MLEobj, nboot=nboot, output=output, sim=sim, param.gen=param.gen, control=control)) ####################################################################################################### +#' Bootstrap MARSS Parameter Estimates +#' +#' @description +#' Creates bootstrap parameter estimates and simulated (or bootstrapped) data (if appropriate). This is a base function in the [MARSS-package]. +#' +#' @param MLEobj An object of class [marssMLE]. Must have a `$par` element containing MLE parameter estimates. +#' @param nboot Number of bootstraps to perform. +#' @param output Output to be returned: "data", "parameters" or "all". +#' @param sim Type of bootstrap: "parametric" or "innovations". See Details. +#' @param param.gen Parameter generation method: "hessian" or "MLE". +#' @param control The options in `MLEobj$control` are used by default. If supplied here, must contain all of the following: +#' * `max.iter`: Maximum number of EM iterations. +#' * `tol`: Optional tolerance for log-likelihood change. If log-likelihood decreases less than this amount relative to the previous iteration, the EM algorithm exits. +#' * `allow.degen`: Whether to try setting \eqn{\mathbf{Q}}{Q} or \eqn{\mathbf{R}}{R} elements to zero if they appear to be going to zero. +#' @param silent Suppresses printing of progress bar. +#' +#' @details +#' Approximate confidence intervals (CIs) on the model parameters can be calculated by the observed Fisher Information matrix (the Hessian of the negative log-likelihood function). The Hessian CIs (`param.gen="hessian"`) are based on the asymptotic normality of ML estimates under a large-sample approximation. CIs that are not based on asymptotic theory can be calculated using parametric and non-parametric bootstrapping (`param.gen="MLE"`). In this case, parameter estimates are generated by the ML estimates from each bootstrapped data set. The MLE method (kem or BFGS) is determined by `MLEobj$method`. +#' +#' Stoffer and Wall (1991) present an algorithm for generating CIs via a non-parametric bootstrap for state-space models (`sim = "innovations"`). The basic idea is that the Kalman filter can be used to generate estimates of the residuals of the model fit. These residuals are then standardized and resampled and used to generate bootstrapped data using the MARSS model and its maximum-likelihood parameter estimates. One of the limitations of the Stoffer and Wall algorithm is that it cannot be used when there are missing data, unless all data at time \eqn{t} are missing. An alternative approach is a parametric bootstrap (`sim = "parametric"`), in which the ML parameter estimates are used to produce bootstrapped data directly from the state-space model. +#' +#' @return +#' A list with the following components: +#' * `boot.params`: Matrix (number of params x nboot) of parameter estimates from the bootstrap. +#' * `boot.data`: Array (n x t x nboot) of simulated (or bootstrapped) data (if requested and appropriate). +#' * `marss`: The [marssMODEL] object (form="marss") that was passed in via `MLEobj$marss`. +#' * `nboot`: Number of bootstraps performed. +#' * `output`: Type of output returned. +#' * `sim`: Type of bootstrap. +#' * `param.gen`: Parameter generation method: "hessian" or "KalmanEM". +#' +#' @references +#' Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type `RShowDoc("UserGuide",package="MARSS")` to open a copy. +#' +#' Stoffer, D. S., and K. D. Wall. 1991. Bootstrapping state-space models: Gaussian maximum likelihood estimation and the Kalman filter. Journal of the American Statistical Association 86:1024-1033. +#' +#' Cavanaugh, J. E., and R. H. Shumway. 1997. A bootstrap variant of AIC for state-space model selection. Statistica Sinica 7:473-496. +#' +#' @author +#' Eli Holmes and Eric Ward, NOAA, Seattle, USA. +#' +#' @seealso +#' [marssMLE], [marssMODEL], [MARSSaic()], [MARSShessian()], [MARSSFisherI()] +#' +#' @examples +#' # nboot is set low in these examples in order to run quickly +#' # normally nboot would be >1000 at least +#' dat <- t(kestrel) +#' dat <- dat[2:3, ] +#' # maxit set low to speed up the example +#' kem <- MARSS(dat, +#' model = list(U = "equal", Q = diag(.01, 2)), +#' control = list(maxit = 50) +#' ) +#' # bootstrap parameters from a Hessian matrix +#' hess.list <- MARSSboot(kem, param.gen = "hessian", nboot = 4) +#' +#' # from resampling the innovations (no missing values allowed) +#' boot.innov.list <- MARSSboot(kem, output = "all", sim = "innovations", nboot = 4) +#' +#' # bootstrapped parameter estimates +#' hess.list$boot.params +#' @export MARSSboot <- function(MLEobj, nboot = 1000, output = "parameters", sim = "parametric", param.gen = "MLE", control = NULL, silent = FALSE) { diff --git a/R/MARSSharveyobsFI.R b/R/MARSSharveyobsFI.R index 1eb39600..adad64c6 100644 --- a/R/MARSSharveyobsFI.R +++ b/R/MARSSharveyobsFI.R @@ -4,6 +4,42 @@ # With modification for missing values # Reference Holmes, E. E. (2014). Computation of standardized residuals for (MARSS) models. Technical Report. arXiv:1411.0045 [stat.ME] #################################################################################### +#' Hessian Matrix via the Harvey (1989) Recursion +#' +#' @description +#' Calculates the observed Fisher Information analytically via the recursion by Harvey (1989) as adapted by Holmes (2017) for MARSS models with linear constraints. This is the same as the Hessian of the negative log-likelihood function at the MLEs. This is a utility function in the [MARSS-package] and is not exported. Use [MARSShessian()] to access. +#' +#' @param MLEobj An object of class [marssMLE]. This object must have a `$par` element containing MLE parameter estimates from e.g. [MARSSkem]. +#' +#' @return +#' The observed Fisher Information matrix computed via equation 3.4.69 in Harvey (1989). The differentials in the equation are computed in the recursion in equations 3.4.73a to 3.4.74b. See Holmes (2016c) for a discussion of the Harvey (1989) algorithm and Holmes (2017) for the specific implementation of the algorithm for MARSS models with linear constraints. +#' +#' Harvey (1989) discusses missing observations in section 3.4.7. However, the `MARSSharveyobsFI()` function implements the approach of Shumway and Stoffer (2006) in section 6.4 for the missing values. See Holmes (2012) for a full discussion of the missing values modifications. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSShessian()], [MARSSparamCIs()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[c(2, 11), ] +#' fit <- MARSS(dat) +#' MARSS:::MARSSharveyobsFI(fit) +#' +#' @references +#' R. H. Shumway and D. S. Stoffer (2006). Section 6.4 (Missing Data Modifications) in Time series analysis and its applications. Springer-Verlag, New York. +#' +#' Harvey, A. C. (1989) Section 3.4.5 (Information matrix) in Forecasting, structural time series models and the Kalman filter. Cambridge University Press, Cambridge, UK. +#' +#' See also J. E. Cavanaugh and R. H. Shumway (1996) On computing the expected Fisher information matrix for state-space model parameters. Statistics & Probability Letters 26: 347-355. This paper discusses the Harvey (1989) recursion (and proposes an alternative). +#' +#' Holmes, E. E. (2012). Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models. Technical Report. arXiv:1302.3919 [stat.ME] +#' +#' Holmes, E. E. 2016c. Notes on computing the Fisher Information matrix for MARSS models. Part III Overview of Harvey 1989. +#' +#' Holmes, E. E. 2017. Notes on computing the Fisher Information matrix for MARSS models. Part IV Implementing the Recursion in Harvey 1989. +#' @export MARSSharveyobsFI <- function(MLEobj) { paramvector <- MARSSvectorizeparam(MLEobj) par.names <- names(paramvector) diff --git a/R/MARSShatyt.r b/R/MARSShatyt.r index 0a006256..688de6a8 100644 --- a/R/MARSShatyt.r +++ b/R/MARSShatyt.r @@ -2,6 +2,50 @@ # MARSShatyt function # Expectations involving hatyt ####################################################################################################### +#' Compute Expected Value of Y, YY, and YX +#' +#' @description +#' Computes the expected value of random variables involving \eqn{\mathbf{Y}}{Y}. Users can use [tsSmooth.marssMLE] or `print( MLEobj, what="Ey")` to access this output. See [print.marssMLE]. +#' +#' @param MLEobj A [marssMLE] object with the `par` element of estimated parameters, `model` element with the model description and data. +#' @param only.kem If TRUE, return only `ytT`, `OtT`, `yxtT`, and `yxttpT` (values conditioned on the data from \eqn{1:T}) needed for the EM algorithm. If `only.kem=FALSE`, then also return values conditioned on data from 1 to \eqn{t-1} (`Ott1` and `ytt1`) and 1 to \eqn{t} (`Ott` and `ytt`), `yxtt1T` (\eqn{\textrm{var}[\mathbf{Y}_t, \mathbf{X}_{t-1}|\mathbf{y}_{1:T}]}{var[Y(t),X(t-1)|1:T]}), var.ytT (\eqn{\textrm{var}[\mathbf{Y}_t|\mathbf{y}_{1:T}]}{var[Y(t)|1:T]}), and var.EytT (\eqn{\textrm{var}_X[E_{Y|x}[\mathbf{Y}_t|\mathbf{y}_{1:T},\mathbf{x}_t]]}{var_X[E_{Y|x}[Y(t)|1:T,x(t)]]}). +#' +#' @details +#' For state space models, `MARSShatyt()` computes the expectations involving \eqn{\mathbf{Y}}{Y}. If \eqn{\mathbf{Y}}{Y} is completely observed, this entails simply replacing \eqn{\mathbf{Y}}{Y} with the observed \eqn{\mathbf{y}}{y}. When \eqn{\mathbf{Y}}{Y} is only partially observed, the expectation involves the conditional expectation of a multivariate normal. +#' +#' @return +#' A list with the following components (n is the number of state processes). Following the notation in Holmes (2012), \eqn{\mathbf{y}(1)}{y(1)} is the observed data (for \eqn{t=1:T}) while \eqn{\mathbf{y}(2)}{y(2)} is the unobserved data. \eqn{\mathbf{y}(1,1:t-1)}{y(1,1:t-1)} is the observed data from time 1 to \eqn{t-1}. +#' * `ytT`: E[Y(t) | Y(1,1:T)=y(1,1:T)] (n x T matrix). +#' * `ytt1`: E[Y(t) | Y(1,1:t-1)=y(1,1:t-1)] (n x T matrix). +#' * `ytt`: E[Y(t) | Y(1,1:t)=y(1,1:t)] (n x T matrix). +#' * `OtT`: E[Y(t) t(Y(t)) | Y(1,1:T)=y(1,1:T)] (n x n x T array). +#' * `var.ytT`: var[Y(t) | Y(1,1:T)=y(1,1:T)] (n x n x T array). +#' * `var.EytT`: var_X[E_Y[Y(t) | Y(1,1:T)=y(1,1:T), X(t)=x(t)]] (n x n x T array). +#' * `Ott1`: E[Y(t) t(Y(t)) | Y(1,1:t-1)=y(1,1:t-1)] (n x n x T array). +#' * `var.ytt1`: var[Y(t) | Y(1,1:t-1)=y(1,1:t-1)] (n x n x T array). +#' * `var.Eytt1`: var_X[E_Y[Y(t) | Y(1,1:t-1)=y(1,1:t-1), X(t)=x(t)]] (n x n x T array). +#' * `Ott`: E[Y(t) t(Y(t)) | Y(1,1:t)=y(1,1:t)] (n x n x T array). +#' * `yxtT`: E[Y(t) t(X(t)) | Y(1,1:T)=y(1,1:T)] (n x m x T array). +#' * `yxtt1T`: E[Y(t) t(X(t-1)) | Y(1,1:T)=y(1,1:T)] (n x m x T array). +#' * `yxttpT`: E[Y(t) t(X(t+1)) | Y(1,1:T)=y(1,1:T)] (n x m x T array). +#' * `errors`: Any error messages due to ill-conditioned matrices. +#' * `ok`: (TRUE/FALSE) Whether errors were generated. +#' +#' @references +#' Holmes, E. E. (2012) Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models. Technical report. arXiv:1302.3919 [stat.ME] Type `RShowDoc("EMDerivation",package="MARSS")` to open a copy. See the section on 'Computing the expectations in the update equations' and the subsections on expectations involving Y. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso +#' [MARSS()], [marssMODEL], [MARSSkem()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[2:3, ] +#' fit <- MARSS(dat) +#' EyList <- MARSShatyt(fit) +#' @export MARSShatyt <- function(MLEobj, only.kem = TRUE) { MODELobj <- MLEobj[["marss"]] if (!is.null(MLEobj[["kf"]])) { diff --git a/R/MARSShessian.R b/R/MARSShessian.R index 468700a4..c39ec56b 100644 --- a/R/MARSShessian.R +++ b/R/MARSShessian.R @@ -1,6 +1,50 @@ # Attaches Hessian, parSigma and parMean to MLEobj # Computed at the values in MLEobj$par # For confidence intervals, this should be the MLEs +#' Parameter Variance-Covariance Matrix from the Hessian Matrix +#' +#' @description +#' Calculates an approximate parameter variance-covariance matrix for the parameters using an inverse of the Hessian of the negative log-likelihood function at the MLEs (the observed Fisher Information matrix). It appends `$Hessian`, `$parMean`, `$parSigma` to the [marssMLE] object. +#' +#' @param MLEobj An object of class [marssMLE]. This object must have a `$par` element containing MLE parameter estimates from e.g. [MARSSkem]. +#' @param method The method to use for computing the Hessian. Options are `Harvey1989` to use the Harvey (1989) recursion, which is an analytical solution, `fdHess` or `optim` which are two numerical methods. Although `optim` can be passed to this function, in the internal functions which call this function, `fdHess` will be used if a numerical estimate is requested. +#' +#' @details +#' See [MARSSFisherI] for a discussion of the observed Fisher Information matrix and references. +#' +#' Method `fdHess` uses [nlme::fdHess] from package nlme to numerically estimate the Hessian matrix (the matrix of partial 2nd derivatives of the negative log-likelihood function at the MLE). Method `optim` uses [optim] with `hessian=TRUE` and `list(maxit=0)` to ensure that the Hessian is computed at the values in the `par` element of the MLE object. Method `Harvey1989` (the default) uses the recursion in Harvey (1989) to compute the observed Fisher Information of a MARSS model analytically. +#' +#' Note that the parameter confidence intervals computed with the observed Fisher Information matrix are based on the asymptotic normality of maximum-likelihood estimates under a large-sample approximation. +#' +#' @return +#' `MARSShessian()` attaches `Hessian`, `parMean` and `parSigma` to the [marssMLE] object that is passed into the function. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSFisherI()], [MARSSharveyobsFI()], [MARSShessian.numerical()], [MARSSparamCIs()], [marssMLE] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[c(2, 11), ] +#' MLEobj <- MARSS(dat) +#' MLEobj.hessian <- MARSShessian(MLEobj) +#' +#' # show the approx Hessian +#' MLEobj.hessian$Hessian +#' +#' # generate a parameter sample using the Hessian +#' # this uses the rmvnorm function in the mvtnorm package +#' hess.params <- mvtnorm::rmvnorm(1, +#' mean = MLEobj.hessian$parMean, +#' sigma = MLEobj.hessian$parSigma +#' ) +#' +#' @references +#' Harvey, A. C. (1989) Section 3.4.5 (Information matrix) in Forecasting, structural time series models and the Kalman filter. Cambridge University Press, Cambridge, UK. +#' +#' See also J. E. Cavanaugh and R. H. Shumway (1996) On computing the expected Fisher information matrix for state-space model parameters. Statistics & Probability Letters 26: 347-355. This paper discusses the Harvey (1989) recursion (and proposes an alternative). +#' @export MARSShessian <- function(MLEobj, method = c("Harvey1989", "fdHess", "optim")) { method <- match.arg(method) paramvec <- MARSSvectorizeparam(MLEobj) diff --git a/R/MARSShessian_numerical.R b/R/MARSShessian_numerical.R index 707ad0aa..5c46dd34 100644 --- a/R/MARSShessian_numerical.R +++ b/R/MARSShessian_numerical.R @@ -8,6 +8,31 @@ # # Adds Hessian, parameter var-cov matrix, and parameter mean to a marssMLE object ####################################################################################################### +#' Hessian Matrix via Numerical Approximation +#' +#' @description +#' Calculates the Hessian of the log-likelihood function at the MLEs using either the [nlme::fdHess] function in the nlme package or the [optim] function. This is a utility function in the [MARSS-package] and is not exported. Use [MARSShessian] to access. +#' +#' @param MLEobj An object of class [marssMLE]. This object must have a `$par` element containing MLE parameter estimates from e.g. [MARSSkem]. +#' @param fun The function to use for computing the Hessian. Options are 'fdHess' or 'optim'. +#' +#' @details +#' Method `fdHess` uses [nlme::fdHess] from package nlme to numerically estimate the Hessian matrix (the matrix of partial 2nd derivatives) of the negative log-likelihood function with respect to the parameters. Method `optim` uses [optim] with `hessian=TRUE` and `list(maxit=0)` to ensure that the Hessian is computed at the values in the `par` element of the MLE object. +#' +#' @return +#' The numerically estimated Hessian of the log-likelihood function at the maximum likelihood estimates. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSharveyobsFI()], [MARSShessian()], [MARSSparamCIs()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[c(2, 11), ] +#' MLEobj <- MARSS(dat) +#' MARSS:::MARSShessian.numerical(MLEobj) +#' @export MARSShessian.numerical <- function(MLEobj, fun = c("fdHess", "optim")) { fun <- match.arg(fun) kfNLL <- function(x, MLEobj = NULL) { # NULL assignment needed for optim call syntax diff --git a/R/MARSSinfo.R b/R/MARSSinfo.R index 99e433d5..e6bc53dd 100644 --- a/R/MARSSinfo.R +++ b/R/MARSSinfo.R @@ -1,3 +1,20 @@ +#' MARSS Error Messages and Warnings +#' +#' @description +#' Prints out more information for MARSS error messages and warnings. +#' +#' @param number An error or warning message number. +#' +#' @return +#' A print out of information. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @examples +#' # Show all the info options +#' MARSSinfo() +#' @export MARSSinfo <- function(number) { if (missing(number)) { cat("Pass in a single label (in quotes) to get info on a MARSS error or warning message. diff --git a/R/MARSSinits.R b/R/MARSSinits.R index 5f114da3..fd28a1d8 100644 --- a/R/MARSSinits.R +++ b/R/MARSSinits.R @@ -4,6 +4,38 @@ ## Will return a par list that looks just like MLEobj par list ## Wants either a scalar (dim=NULL) or a matrix the same size as $par[[elem]] or a marssMLE object with the par element +#' Initial Values for MLE +#' +#' @description +#' Sets up generic starting values for parameters for maximum-likelihood estimation algorithms that use an iterative maximization routine needing starting values. Examples of such algorithms are the EM algorithm in [MARSSkem()] and Newton methods in [MARSSoptim()]. This is a utility function in the [MARSS-package]. It is not exported to the user. Users looking for information on specifying initial conditions should look at the help file for [MARSS()] and the User Guide section on initial conditions. +#' +#' The function assumes that the user passed in the inits list using the parameter names in whatever form was specified in the [MARSS()] call. The default is form="marxss". The [MARSSinits()] function calls MARSSinits_foo, where foo is the form specified in the [MARSS()] call. MARSSinits_foo translates the inits list in form foo into form marss. +#' +#' @param MLEobj An object of class [marssMLE]. +#' @param inits A list of column vectors (matrices with one column) of the estimated values in each parameter matrix. +#' +#' @details +#' Creates an `inits` parameter list for use by iterative maximization algorithms. +#' +#' Default values for `inits` is supplied in `MARSSsettings.R`. The user can alter these and supply any of the following (m is the dim of X and n is the dim of Y in the MARSS model): +#' +#' * `elem=A,U` A numeric vector or matrix which will be constructed into `inits$elem` by the command `array(inits$elem),dim=c(n or m,1))`. If elem is fixed in the model, any `inits$elem` values will be overridden and replaced with the fixed value. Default is `array(0,dim=c(n or m,1))`. +#' * `elem=Q,R,B` A numeric vector or matrix. If length equals the length `MODELobj$fixed$elem` then `inits$elem` will be constructed by `array(inits$elem),dim=dim(MODELobj$fixed$elem))`. If length is 1 or equals dim of `Q` or dim of `R` then `inits$elem` will be constructed into a diagonal matrix by the command `diag(inits$elem)`. If elem is fixed in the model, any `inits$elem` values will be overridden and replaced with the fixed value. Default is `diag(0.05, dim of Q or R)` for `Q` and `R`. Default is `diag(1,m)` for `B`. +#' * `x0` If `inits$x0=-99`, then starting values for `x0` are estimated by a linear regression through the count data assuming `A` is all zero. This will be a poor start if `inits$A` is not 0. If `inits$x0` is a numeric vector or matrix, `inits$x0` will be constructed by the command `array(inits$x0),dim=c(m,1))`. If `x0` is fixed in the model, any `inits$x0` values will be overridden and replaced with the fixed value. Default is `inits$x0=-99`. +#' * `Z` If `Z` is fixed in the model, `inits$Z` set to the fixed value. If `Z` is not fixed, then the user must supply `inits$Z`. There is no default. +#' * `elem=V0` `V0` is never estimated, so this is never used. +#' +#' @return +#' A list with initial values for the estimated values for each parameter matrix in a MARSS model in marss form. So this will be a list with elements `B`, `U`, `Q`, `Z`, `A`, `R`, `x0`, `V0`, `G`, `H`, `L`. +#' +#' @note +#' Within the base code, a form-specific internal `MARSSinits` function is called to allow the output to vary based on form: `MARSSinits_dfa`, `MARSSinits_marss`, `MARSSinits_marxss`. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [marssMODEL], [MARSSkem()], [MARSSoptim()] +#' @export MARSSinits <- function(MLEobj, inits = list(B = 1, U = 0, Q = 0.05, Z = 1, A = 0, R = 0.05, x0 = -99, V0 = 5, G = 0, H = 0, L = 0)) { MODELobj <- MLEobj[["marss"]] method <- MLEobj[["method"]] diff --git a/R/MARSSkem.r b/R/MARSSkem.r index 0fa7e17b..3f16fead 100644 --- a/R/MARSSkem.r +++ b/R/MARSSkem.r @@ -3,6 +3,90 @@ # Minimal error checking is done. You should run is.marssMLE(MLEobj) before calling this. # Maximization using an EM algorithm with Kalman filter ####################################################################################################### +#' EM Algorithm function for MARSS models +#' +#' @description +#' `MARSSkem()` performs maximum-likelihood estimation, using an EM algorithm for constrained and unconstrained MARSS models. Users would not call this function directly normally. The function [MARSS()] calls `MARSSkem()`. However users might want to use `MARSSkem()` directly if they need to avoid some of the error-checking overhead associated with the [MARSS()] function. +#' +#' @param MLEobj An object of class [marssMLE]. +#' +#' @details +#' Objects of class [marssMLE] may be built from scratch but are easier to construct using [MARSS()] with `MARSS(..., fit=FALSE)`. +#' +#' Options for `MARSSkem()` may be set using `MLEobj$control`. The commonly used elements of `control` are as follows (see [marssMLE]): +#' +#' * `minit`: Minimum number of EM iterations. You can use this to force the algorithm to do a certain number of iterations. This is helpful if your solution is not converging. +#' * `maxit`: Maximum number of EM iterations. +#' * `min.iter.conv.test`: The minimum number of iterations before the log-log convergence test will be computed. If `maxit` is set less than this, then convergence will not be computed (and the algorithm will just run for maxit iterations). +#' * `kf.x0`: Whether to set the prior at \eqn{t=0} (`"x00"`) or at \eqn{t=1} (`"x10"`). The default is `"x00"`. +#' * `conv.test.deltaT`: The number of iterations to use in the log-log convergence test. This defaults to 9. +#' * `abstol`: Tolerance for log-likelihood change for the delta logLik convergence test. If log-likelihood changes less than this amount relative to the previous iteration, the EM algorithm exits. This is normally (default) set to NULL and the log-log convergence test is used instead. +#' * `allow.degen`: Whether to try setting \eqn{\mathbf{Q}}{Q} or \eqn{\mathbf{R}}{R} elements to zero if they appear to be going to zero. +#' * `trace`: A positive integer. If not 0, a record will be created of each variable over all EM iterations and detailed warning messages (if appropriate) will be printed. +#' * `safe`: If TRUE, `MARSSkem` will rerun [MARSSkf()] after each individual parameter update rather than only after all parameters are updated. The latter is slower and unnecessary for many models, but in some cases, the safer and slower algorithm is needed because the ML parameter matrices have high condition numbers. +#' * `silent`: Suppresses printing of progress bars, error messages, warnings and convergence information. +#' +#' @return +#' The [marssMLE] object which was passed in, with additional components: +#' * `method`: String "kem". +#' * `kf`: Kalman filter output. +#' * `iter.record`: If `MLEobj$control$trace = TRUE`, a list with `par` = a record of each estimated parameter over all EM iterations and `logLik` = a record of the log likelihood at each iteration. +#' * `numIter`: Number of iterations needed for convergence. +#' * `convergence`: Did estimation converge successfully? +#' * `convergence=0`: Converged in both the abstol test and the log-log plot test. +#' * `convergence=1`: Some of the parameter estimates did not converge (based on the log-log plot test AND abstol tests) before `MLEobj$control$maxit` was reached. This is not an error per se. +#' * `convergence=3`: No convergence diagnostics were computed because all parameters were fixed thus no fitting required. +#' * `convergence=-1`: No convergence diagnostics were computed because the MLE object was not fit (called with fit=FALSE). This isn't a convergence error just information. There is not par element so no functions can be run with the object. +#' * `convergence=2`: No convergence diagnostics were computed because the MLE object had problems and was not fit. This isn't a convergence error just information. +#' * `convergence=10`: Abstol convergence only. Some of the parameter estimates did not converge (based on the log-log plot test) before `MLEobj$control$maxit` was reached. However `MLEobj$control$abstol` was reached. +#' * `convergence=11`: Log-log convergence only. Some of the parameter estimates did not converge (based on the abstol test) before `MLEobj$control$maxit` was reached. However the log-log convergence test was passed. +#' * `convergence=12`: Abstol convergence only. Log-log convergence test was not computed because `MLEobj$control$maxit` was set to less than `control$min.iter.conv.test`. +#' * `convergence=13`: Lack of convergence info. Parameter estimates did not converge based on the abstol test before `MLEobj$control$maxit` was reached. No log-log information since `control$min.iter.conv.test` is less than `MLEobj$control$maxit` so no log-log plot test could be done. +#' * `convergence=42`: `MLEobj$control$abstol` was reached but the log-log plot test returned NAs. This is an odd error and you should set `control$trace=TRUE` and look at the outputted `$iter.record` to see what is wrong. +#' * `convergence=52`: The EM algorithm was abandoned due to numerical errors. Usually this means one of the variances either went to zero or to all elements being equal. This is not an error per se. Most likely it means that your model is not very good for your data (too inflexible or too many parameters). Try setting `control$trace=1` to view a detailed error report. +#' * `convergence=53`: The algorithm was abandoned due to numerical errors in the likelihood calculation from [MARSSkf()]. +#' * `convergence=62`: The algorithm was abandoned due to errors in the log-log convergence test. You should not get this error (it is included for debugging purposes to catch improper arguments passed into the log-log convergence test). +#' * `convergence=63`: The algorithm was run for `control$maxit` iterations, `control$abstol` not reached, and the log-log convergence test returned errors. You should not get this error (it is included for debugging purposes to catch improper arguments passed into the log-log convergence test). +#' * `convergence=72`: Other convergence errors. This is included for debugging purposes to catch misc. errors. +#' * `logLik`: Log-likelihood. +#' * `states`: State estimates from the Kalman smoother. +#' * `states.se`: Confidence intervals based on state standard errors, see caption of Fig 6.3 (p. 337) in Shumway & Stoffer (2006). +#' * `errors`: Any error messages. +#' +#' @section Discussion: +#' To ensure that the global maximum-likelihood values are found, it is recommended that you test the fit under different initial parameter values, particularly if the model is not a good fit to the data. This requires more computation time, but reduces the chance of the algorithm terminating at a local maximum and not reaching the true MLEs. For many models and for draft analyses, this is unnecessary, but answers should be checked using an initial conditions search before reporting final values. See the chapter on initial conditions in the User Guide for a discussion on how to do this. +#' +#' `MARSSkem()` calls a Kalman filter/smoother [MARSSkf()] for hidden state estimation. The algorithm allows two options for the initial state conditions: fixed but unknown or a prior. In the first case, x0 (whether at t=0 or t=1) is treated as fixed but unknown (estimated); in this case, `fixed$V0=0` and x0 is estimated. This is the default behavior. In the second case, the initial conditions are specified with a prior and V0!=0. In the later case, x0 or V0 may be estimated. MARSS will allow you to try to estimate both, but many researchers have noted that this is not robust so you should fix one or the other. +#' +#' If you get errors, you can type [MARSSinfo()] for help. Fitting problems often mean that the solution involves an ill-conditioned matrix. For example, your \eqn{\mathbf{Q}}{Q} or \eqn{\mathbf{R}}{R} matrix is going to a value in which all elements have the same value, for example zero. If for example, you tried to fit a model with a fixed \eqn{\mathbf{R}}{R} matrix with high values on the diagonal and the variance in that \eqn{\mathbf{R}}{R} matrix (diagonal terms) was much higher than what is actually in the data, then you might drive \eqn{\mathbf{Q}}{Q} to zero. Also if you try to fit a structurally inadequate model, then it is not unusual that \eqn{\mathbf{Q}}{Q} will be driven to zero. For example, if you fit a model with 1 hidden state trajectory to data that clearly have 2 quite different hidden state trajectories, you might have this problem. Comparing the likelihood of this model to a model with more structural flexibility should reveal that the structurally inflexible model is inadequate (much lower likelihood). +#' +#' Convergence testing is done via a combination of two tests. The first test (abstol test) is the test that the change in the absolute value of the log-likelihood from one iteration to another is less than some tolerance value (abstol). The second test (log-log test) is that the slope of a plot of the log of the parameter value or log-likelihood versus the log of the iteration number is less than some tolerance. Both of these must be met to generate the Success! parameters converged output. If you want to circumvent one of these tests, then set the tolerance for the unwanted test to be high. That will guarantee that that test is met before the convergence test you want to use is met. The tolerance for the abstol test is set by `control$abstol` and the tolerance for the log-log test is set by `control$conv.test.slope.tol`. Anything over 1 is huge for both of these. +#' +#' @references +#' R. H. Shumway and D. S. Stoffer (2006). Chapter 6 in Time series analysis and its applications. Springer-Verlag, New York. +#' +#' Ghahramani, Z. and Hinton, G. E. (1996) Parameter estimation for linear dynamical systems. Technical Report CRG-TR-96-2, University of Toronto, Dept. of Computer Science. +#' +#' Harvey, A. C. (1989) Chapter 5 in Forecasting, structural time series models and the Kalman filter. Cambridge University Press, Cambridge, UK. +#' +#' The MARSS User Guide: Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science Center, 2725 Montlake Blvd E., Seattle, WA 98112 Go to [User Guide](https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf) to open the most recent version. +#' +#' Holmes, E. E. (2012). Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models. Technical Report. arXiv:1302.3919 [stat.ME] [EMDerivation](https://cran.r-project.org/package=MARSS/vignettes/EMDerivation.pdf) has the most recent version. +#' +#' @author +#' Eli Holmes and Eric Ward, NOAA, Seattle, USA. +#' +#' @seealso +#' [MARSSkf()], [marssMLE], [MARSSoptim()], [MARSSinfo()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[2:4, ] +#' # you can use MARSS to construct a proper marssMLE object. +#' fit <- MARSS(dat, model = list(Q = "diagonal and equal", U = "equal"), fit = FALSE) +#' # Pass this marssMLE object to MARSSkem to do the fit. +#' kemfit <- MARSSkem(fit) +#' @export MARSSkem <- function(MLEobj) { MODELobj <- MLEobj[["marss"]] # This is a core function and does not check if user specified a legal or solveable model. diff --git a/R/MARSSkemcheck.r b/R/MARSSkemcheck.r index 95be2d76..1c4a384a 100644 --- a/R/MARSSkemcheck.r +++ b/R/MARSSkemcheck.r @@ -1,3 +1,18 @@ +#' Model Checking for MLE objects Passed to MARSSkem +#' +#' @description +#' This is a helper function in the [MARSS-package] that checks that the model can be handled by the [MARSSkem] algorithm. It also returns the structure of the model as a list of text strings. +#' +#' @param MLEobj An object of class [marssMLE]. +#' +#' @return +#' A list with of the model elements A, B, Q, R, U, x0, Z, V0 specifying the structure of the model using text strings). +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [marssMODEL], [MARSSkem()] +#' @keywords internal MARSSkemcheck <- function(MLEobj) { # This checks that the model can be handled by the MARSSkem algorithm # Most of this is implementing the restrictions in Summary of Requirements for Degenerate Models in derivation diff --git a/man/MARSSboot.Rd b/man/MARSSboot.Rd deleted file mode 100644 index f975fc21..00000000 --- a/man/MARSSboot.Rd +++ /dev/null @@ -1,76 +0,0 @@ -\name{MARSSboot} -\alias{MARSSboot} -\title{ Bootstrap MARSS Parameter Estimates } -\description{ -Creates bootstrap parameter estimates and simulated (or bootstrapped) data (if appropriate). This is a base function in the \code{\link{MARSS-package}}. -} -\usage{ -MARSSboot(MLEobj, nboot = 1000, - output = "parameters", sim = "parametric", - param.gen = "MLE", control = NULL, silent = FALSE) -} - -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. Must have a \code{$par} element containing MLE parameter estimates. } - \item{nboot}{ Number of bootstraps to perform. } - \item{output}{ Output to be returned: "data", "parameters" or "all".} - \item{sim}{ Type of bootstrap: "parametric" or "innovations". See Details. } - \item{param.gen}{ Parameter generation method: "hessian" or "MLE". } - \item{control}{ The options in \code{MLEobj$control} are used by default. If supplied here, must contain all of the following: - \describe{ - \item{\code{max.iter}}{ Maximum number of EM iterations. } - \item{\code{tol}}{ Optional tolerance for log-likelihood change. If log-likelihood decreases less than this amount relative to the previous iteration, the EM algorithm exits. } - \item{\code{allow.degen}}{ Whether to try setting \eqn{\mathbf{Q}}{Q} or \eqn{\mathbf{R}}{R} elements to zero if they appear to be going to zero. } - } - } - \item{silent}{ Suppresses printing of progress bar. } -} - -\details{ -Approximate confidence intervals (CIs) on the model parameters can be calculated by the observed Fisher Information matrix (the Hessian of the negative log-likelihood function). The Hessian CIs (\code{param.gen="hessian"}) are based on the asymptotic normality of ML estimates under a large-sample approximation. CIs that are not based on asymptotic theory can be calculated using parametric and non-parametric bootstrapping (\code{param.gen="MLE"}). In this case, parameter estimates are generated by the ML estimates from each bootstrapped data set. The MLE method (kem or BFGS) is determined by \code{MLEobj$method}. - -Stoffer and Wall (1991) present an algorithm for generating CIs via a non-parametric bootstrap for state-space models (\code{sim = "innovations"}). The basic idea is that the Kalman filter can be used to generate estimates of the residuals of the model fit. These residuals are then standardized and resampled and used to generate bootstrapped data using the MARSS model and its maximum-likelihood parameter estimates. One of the limitations of the Stoffer and Wall algorithm is that it cannot be used when there are missing data, unless all data at time \eqn{t} are missing. An alternative approach is a parametric bootstrap (\code{sim = "parametric"}), in which the ML parameter estimates are used to produce bootstrapped data directly from the state-space model. -} -\value{ - A list with the following components: - \item{boot.params}{ Matrix (number of params x nboot) of parameter estimates from the bootstrap. } - \item{boot.data}{ Array (n x t x nboot) of simulated (or bootstrapped) data (if requested and appropriate). } - \item{marss}{ The \code{\link{marssMODEL}} object (form="marss") that was passed in via \code{MLEobj$marss}. } - \item{nboot}{ Number of bootstraps performed. } - \item{output}{ Type of output returned.} - \item{sim}{ Type of bootstrap. } - \item{param.gen}{ Parameter generation method: "hessian" or "KalmanEM". } -} -\references{ -Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science -Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type \code{RShowDoc("UserGuide",package="MARSS")} to open a copy. - -Stoffer, D. S., and K. D. Wall. 1991. Bootstrapping state-space models: Gaussian maximum likelihood estimation and the Kalman filter. Journal of the American Statistical Association 86:1024-1033. - -Cavanaugh, J. E., and R. H. Shumway. 1997. A bootstrap variant of AIC for state-space model selection. Statistica Sinica 7:473-496. - } -\author{ - Eli Holmes and Eric Ward, NOAA, Seattle, USA. -} -\seealso{ - \code{\link{marssMLE}}, \code{\link{marssMODEL}}, \code{\link{MARSSaic}()}, \code{\link{MARSShessian}()}, \code{\link{MARSSFisherI}()} -} -\examples{ -# nboot is set low in these examples in order to run quickly -# normally nboot would be >1000 at least -dat <- t(kestrel) -dat <- dat[2:3, ] -# maxit set low to speed up the example -kem <- MARSS(dat, - model = list(U = "equal", Q = diag(.01, 2)), - control = list(maxit = 50) -) -# bootstrap parameters from a Hessian matrix -hess.list <- MARSSboot(kem, param.gen = "hessian", nboot = 4) - -# from resampling the innovations (no missing values allowed) -boot.innov.list <- MARSSboot(kem, output = "all", sim = "innovations", nboot = 4) - -# bootstrapped parameter estimates -hess.list$boot.params -} diff --git a/man/MARSSharveyobsFI.Rd b/man/MARSSharveyobsFI.Rd deleted file mode 100644 index 22b78b1e..00000000 --- a/man/MARSSharveyobsFI.Rd +++ /dev/null @@ -1,42 +0,0 @@ -\name{MARSSharveyobsFI} -\alias{MARSSharveyobsFI} -\title{ Hessian Matrix via the Harvey (1989) Recursion} -\description{ -Calculates the observed Fisher Information analytically via the recursion by Harvey (1989) as adapted by Holmes (2017) for MARSS models with linear constraints. This is the same as the Hessian of the negative log-likelihood function at the MLEs. This is a utility function in the \code{\link{MARSS-package}} and is not exported. Use \code{\link{MARSShessian}()} to access. -} -\usage{ -MARSSharveyobsFI(MLEobj) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. - This object must have a \code{$par} element containing MLE parameter estimates from e.g. \code{\link{MARSSkem}}. } - } -\value{ - The observed Fisher Information matrix computed via equation 3.4.69 in Harvey (1989). The differentials in the equation are computed in the recursion in equations 3.4.73a to 3.4.74b. See Holmes (2016c) for a discussion of the Harvey (1989) algorithm and Holmes (2017) for the specific implementation of the algorithm for MARSS models with linear constraints. - -Harvey (1989) discusses missing observations in section 3.4.7. However, the \code{MARSSharveyobsFI()} function implements the approach of Shumway and Stoffer (2006) in section 6.4 for the missing values. See Holmes (2012) for a full discussion of the missing values modifications. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{MARSShessian}()}, \code{\link{MARSSparamCIs}()} } -\examples{ -dat <- t(harborSeal) -dat <- dat[c(2, 11), ] -fit <- MARSS(dat) -MARSS:::MARSSharveyobsFI(fit) -} -\references{ -R. H. Shumway and D. S. Stoffer (2006). Section 6.4 (Missing Data Modifications) in Time series analysis and its applications. Springer-Verlag, New York. - -Harvey, A. C. (1989) Section 3.4.5 (Information matrix) in Forecasting, structural time series models and the Kalman filter. Cambridge University Press, Cambridge, UK. - -See also J. E. Cavanaugh and R. H. Shumway (1996) On computing the expected Fisher information matrix for state-space model parameters. Statistics & Probability Letters 26: 347-355. This paper discusses the Harvey (1989) recursion (and proposes an alternative). - -Holmes, E. E. (2012). Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models. Technical Report. arXiv:1302.3919 [stat.ME] - -Holmes, E. E. 2016c. Notes on computing the Fisher Information matrix for MARSS models. Part III Overview of Harvey 1989. https://eeholmes.github.io/posts/2016-6-16-FI-recursion-3/ - -Holmes, E. E. 2017. Notes on computing the Fisher Information matrix for MARSS models. Part IV Implementing the Recursion in Harvey 1989. https://eeholmes.github.io/posts/2017-5-31-FI-recursion-4/ - -} \ No newline at end of file diff --git a/man/MARSShatyt.Rd b/man/MARSShatyt.Rd deleted file mode 100644 index f8d3095c..00000000 --- a/man/MARSShatyt.Rd +++ /dev/null @@ -1,52 +0,0 @@ -\name{MARSShatyt} -\alias{MARSShatyt} -\title{ Compute Expected Value of Y, YY, and YX} -\description{ -Computes the expected value of random variables involving \eqn{\mathbf{Y}}{Y}. Users can use \code{\link[=tsSmooth.marssMLE]{tsSmooth}()} or \code{print( MLEobj, what="Ey")} to access this output. See \code{\link{print.marssMLE}}. -} -\usage{ -MARSShatyt(MLEobj, only.kem = TRUE) -} -\arguments{ - \item{ MLEobj }{ A \code{\link{marssMLE}} object with the \code{par} element of estimated parameters, \code{model} element with the model description and data. } - \item{ only.kem }{ If TRUE, return only \code{ytT}, \code{OtT}, \code{yxtT}, and \code{yxttpT} (values conditioned on the data from \eqn{1:T}) needed for the EM algorithm. If \code{only.kem=FALSE}, then also return values conditioned on data from 1 to \eqn{t-1} (\code{Ott1} and \code{ytt1}) and 1 to \eqn{t} (\code{Ott} and \code{ytt}), \code{yxtt1T} (\eqn{\textrm{var}[\mathbf{Y}_t, \mathbf{X}_{t-1}|\mathbf{y}_{1:T}]}{var[Y(t),X(t-1)|1:T]}), var.ytT (\eqn{\textrm{var}[\mathbf{Y}_t|\mathbf{y}_{1:T}]}{var[Y(t)|1:T]}), and var.EytT (\eqn{\textrm{var}_X[E_{Y|x}[\mathbf{Y}_t|\mathbf{y}_{1:T},\mathbf{x}_t]]}{var_X[E_{Y|x}[Y(t)|1:T,x(t)]]}).} - } -\details{ -For state space models, \code{MARSShatyt()} computes the expectations involving \eqn{\mathbf{Y}}{Y}. If \eqn{\mathbf{Y}}{Y} is completely observed, this entails simply replacing \eqn{\mathbf{Y}}{Y} with the observed \eqn{\mathbf{y}}{y}. When \eqn{\mathbf{Y}}{Y} is only partially observed, the expectation involves the conditional expectation of a multivariate normal. - -} -\value{ -A list with the following components (n is the number of state processes). Following the notation in Holmes (2012), \eqn{\mathbf{y}(1)}{y(1)} is the observed data (for \eqn{t=1:T}) while \eqn{\mathbf{y}(2)}{y(2)} is the unobserved data. \eqn{\mathbf{y}(1,1:t-1)}{y(1,1:t-1)} is the observed data from time 1 to \eqn{t-1}. - \item{ytT}{ E[Y(t) | Y(1,1:T)=y(1,1:T)] (n x T matrix). } - \item{ytt1}{ E[Y(t) | Y(1,1:t-1)=y(1,1:t-1)] (n x T matrix). } - \item{ytt}{ E[Y(t) | Y(1,1:t)=y(1,1:t)] (n x T matrix). } - \item{OtT}{ E[Y(t) t(Y(t)) | Y(1,1:T)=y(1,1:T)] (n x n x T array). } - \item{var.ytT}{ var[Y(t) | Y(1,1:T)=y(1,1:T)] (n x n x T array). } - \item{var.EytT}{ var_X[E_Y[Y(t) | Y(1,1:T)=y(1,1:T), X(t)=x(t)]] (n x n x T array). } - \item{Ott1}{ E[Y(t) t(Y(t)) | Y(1,1:t-1)=y(1,1:t-1)] (n x n x T array). } - \item{var.ytt1}{ var[Y(t) | Y(1,1:t-1)=y(1,1:t-1)] (n x n x T array). } - \item{var.Eytt1}{ var_X[E_Y[Y(t) | Y(1,1:t-1)=y(1,1:t-1), X(t)=x(t)]] (n x n x T array). } - \item{Ott}{ E[Y(t) t(Y(t)) | Y(1,1:t)=y(1,1:t)] (n x n x T array). } - \item{yxtT}{ E[Y(t) t(X(t)) | Y(1,1:T)=y(1,1:T)] (n x m x T array). } - \item{yxtt1T}{ E[Y(t) t(X(t-1)) | Y(1,1:T)=y(1,1:T)] (n x m x T array). } - \item{yxttpT}{ E[Y(t) t(X(t+1)) | Y(1,1:T)=y(1,1:T)] (n x m x T array). } - \item{errors}{ Any error messages due to ill-conditioned matrices. } - \item{ok}{ (TRUE/FALSE) Whether errors were generated. } -} -\references{ -Holmes, E. E. (2012) Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models. Technical report. arXiv:1302.3919 [stat.ME] Type \code{RShowDoc("EMDerivation",package="MARSS")} to open a copy. See the section on 'Computing the expectations in the update equations' and the subsections on expectations involving Y. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ -\code{\link{MARSS}()}, \code{\link{marssMODEL}}, \code{\link{MARSSkem}()} -} -\examples{ -dat <- t(harborSeal) -dat <- dat[2:3, ] -fit <- MARSS(dat) -EyList <- MARSShatyt(fit) -} - - diff --git a/man/MARSShessian.Rd b/man/MARSShessian.Rd deleted file mode 100644 index ad729bbe..00000000 --- a/man/MARSShessian.Rd +++ /dev/null @@ -1,53 +0,0 @@ -\name{MARSShessian} -\alias{MARSShessian} - -\title{ Parameter Variance-Covariance Matrix from the Hessian Matrix} -\description{ -Calculates an approximate parameter variance-covariance matrix for the parameters using an inverse of the Hessian of the negative log-likelihood function at the MLEs (the observed Fisher Information matrix). It appends \code{$Hessian}, \code{$parMean}, \code{$parSigma} to the \code{\link{marssMLE}} object. -} -\usage{ -MARSShessian(MLEobj, method=c("Harvey1989", "fdHess", "optim")) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. - This object must have a \code{$par} element containing MLE parameter estimates from e.g. \code{\link{MARSSkem}}. } - \item{method}{ The method to use for computing the Hessian. Options are \code{Harvey1989} to use the Harvey (1989) recursion, which is an analytical solution, \code{fdHess} or \code{optim} which are two numerical methods. Although \code{optim} can be passed to this function, in the internal functions which call this function, \code{fdHess} will be used if a numerical estimate is requested.} - } -\details{ -See \code{\link{MARSSFisherI}} for a discussion of the observed Fisher Information matrix and references. - - Method \code{fdHess} uses \code{\link[nlme]{fdHess}} from package nlme to numerically estimate the Hessian matrix (the matrix of partial 2nd derivatives of the negative log-likelihood function at the MLE). Method \code{optim} uses \code{\link{optim}} with \code{hessian=TRUE} and \code{list(maxit=0)} to ensure that the Hessian is computed at the values in the \code{par} element of the MLE object. Method \code{Harvey1989} (the default) uses the recursion in Harvey (1989) to compute the observed Fisher Information of a MARSS model analytically. - - Note that the parameter confidence intervals computed with the observed Fisher Information matrix are based on the asymptotic normality of maximum-likelihood estimates under a large-sample approximation. - -} -\value{ - \code{MARSShessian()} attaches - \code{Hessian}, \code{parMean} and \code{parSigma} to the \code{\link{marssMLE}} object that is passed into the function. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{MARSSFisherI}()}, \code{\link{MARSSharveyobsFI}()}, \code{\link{MARSShessian.numerical}()}, \code{\link{MARSSparamCIs}()}, \code{\link{marssMLE}} } -\examples{ -dat <- t(harborSeal) -dat <- dat[c(2, 11), ] -MLEobj <- MARSS(dat) -MLEobj.hessian <- MARSShessian(MLEobj) - -# show the approx Hessian -MLEobj.hessian$Hessian - -# generate a parameter sample using the Hessian -# this uses the rmvnorm function in the mvtnorm package -hess.params <- mvtnorm::rmvnorm(1, - mean = MLEobj.hessian$parMean, - sigma = MLEobj.hessian$parSigma -) -} -\references{ -Harvey, A. C. (1989) Section 3.4.5 (Information matrix) in Forecasting, structural time series models and the Kalman filter. Cambridge University Press, Cambridge, UK. - -See also J. E. Cavanaugh and R. H. Shumway (1996) On computing the expected Fisher information matrix for state-space model parameters. Statistics & Probability Letters 26: 347-355. This paper discusses the Harvey (1989) recursion (and proposes an alternative). -} - diff --git a/man/MARSShessian_numerical.Rd b/man/MARSShessian_numerical.Rd deleted file mode 100644 index c29e9439..00000000 --- a/man/MARSShessian_numerical.Rd +++ /dev/null @@ -1,31 +0,0 @@ -\name{MARSShessian.numerical} -\alias{MARSShessian.numerical} -\title{ Hessian Matrix via Numerical Approximation} -\description{ -Calculates the Hessian of the log-likelihood function at the MLEs using either the \code{\link[nlme]{fdHess}} function in the nlme package or the \code{\link{optim}} function. This is a utility function in the \code{\link{MARSS-package}} and is not exported. Use \code{\link{MARSShessian}} to access. -} -\usage{ -MARSShessian.numerical(MLEobj, fun=c("fdHess", "optim")) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. - This object must have a \code{$par} element containing MLE parameter estimates from e.g. \code{\link{MARSSkem}}. } - \item{fun}{ The function to use for computing the Hessian. Options are 'fdHess' or 'optim'.} - } -\details{ - Method \code{fdHess} uses \code{\link[nlme]{fdHess}} from package nlme to numerically estimate the Hessian matrix (the matrix of partial 2nd derivatives) of the negative log-likelihood function with respect to the parameters. Method \code{optim} uses \code{\link{optim}} with \code{hessian=TRUE} and \code{list(maxit=0)} to ensure that the Hessian is computed at the values in the \code{par} element of the MLE object. -} -\value{ - The numerically estimated Hessian of the log-likelihood function at the maximum likelihood estimates. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{MARSSharveyobsFI}()}, \code{\link{MARSShessian}()}, \code{\link{MARSSparamCIs}()} } -\examples{ -dat <- t(harborSeal) -dat <- dat[c(2, 11), ] -MLEobj <- MARSS(dat) -MARSS:::MARSShessian.numerical(MLEobj) -} - diff --git a/man/MARSSinfo.Rd b/man/MARSSinfo.Rd deleted file mode 100644 index 42f984c1..00000000 --- a/man/MARSSinfo.Rd +++ /dev/null @@ -1,23 +0,0 @@ -\name{MARSSinfo} -\alias{MARSSinfo} -\title{ MARSS Error Messages and Warnings } -\description{ - Prints out more information for MARSS error messages and warnings. -} -\usage{ -MARSSinfo(number) -} -\arguments{ - \item{number}{ An error or warning message number. } -} - -\value{ - A print out of information. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\examples{ -# Show all the info options -MARSSinfo() -} diff --git a/man/MARSSinits.Rd b/man/MARSSinits.Rd deleted file mode 100644 index 39ee4a68..00000000 --- a/man/MARSSinits.Rd +++ /dev/null @@ -1,41 +0,0 @@ -\name{MARSSinits} -\alias{MARSSinits} -\keyword{helper} -\title{ Initial Values for MLE } -\description{ - Sets up generic starting values for parameters for maximum-likelihood estimation algorithms that use an iterative maximization routine needing starting values. Examples of such algorithms are the EM algorithm in \code{\link{MARSSkem}()} and Newton methods in \code{\link{MARSSoptim}()}. This is a utility function in the \code{\link{MARSS-package}}. It is not exported to the user. Users looking for information on specifying initial conditions should look at the help file for \code{\link{MARSS}()} and the User Guide section on initial conditions. - -The function assumes that the user passed in the inits list using the parameter names in whatever form was specified in the \code{\link{MARSS}()} call. The default is form="marxss". The \code{\link{MARSSinits}()} function calls MARSSinits_foo, where foo is the form specified in the \code{\link{MARSS}()} call. MARSSinits_foo translates the inits list in form foo into form marss. -} -\usage{ -MARSSinits(MLEobj, inits=list(B=1, U=0, Q=0.05, Z=1, A=0, - R=0.05, x0=-99, V0=5, G=0, H=0, L=0)) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. } - \item{inits}{ A list of column vectors (matrices with one column) of the estimated values in each parameter matrix.} -} -\details{ - Creates an \code{inits} parameter list for use by iterative maximization algorithms. - - Default values for \code{inits} is supplied in \code{MARSSsettings.R}. The user can alter these and supply any of the following (m is the dim of X and n is the dim of Y in the MARSS model): -\itemize{ - \item{elem=\code{A,U}} A numeric vector or matrix which will be constructed into \code{inits$elem} by the command \code{array(inits$elem),dim=c(n or m,1))}. If elem is fixed in the model, any \code{inits$elem} values will be overridden and replaced with the fixed value. Default is \code{array(0,dim=c(n or m,1))}. - \item{elem=\code{Q,R,B}} A numeric vector or matrix. If length equals the length \code{MODELobj$fixed$elem} then \code{inits$elem} will be constructed by \code{array(inits$elem),dim=dim(MODELobj$fixed$elem))}. If length is 1 or equals dim of \code{Q} or dim of \code{R} then \code{inits$elem} will be constructed into a diagonal matrix by the command \code{diag(inits$elem)}. If elem is fixed in the model, any \code{inits$elem} values will be overridden and replaced with the fixed value. Default is \code{diag(0.05, dim of Q or R)} for \code{Q} and \code{R}. Default is \code{diag(1,m)} for \code{B}. - \item{\code{x0}} If \code{inits$x0=-99}, then starting values for \code{x0} are estimated by a linear regression - through the count data assuming \code{A} is all zero. This will be a poor start if \code{inits$A} is not 0. If \code{inits$x0} is a numeric vector or matrix, \code{inits$x0} will be constructed by the command \code{array(inits$x0),dim=c(m,1))}. If \code{x0} is fixed in the model, any \code{inits$x0} values will be overridden and replaced with the fixed value. Default is \code{inits$x0=-99}. - \item{\code{Z}} If \code{Z} is fixed in the model, \code{inits$Z} set to the fixed value. If \code{Z} is not fixed, then the user must supply \code{inits$Z}. There is no default. - \item{elem=\code{V0}} \code{V0} is never estimated, so this is never used. -} -} -\value{ - A list with initial values for the estimated values for each parameter matrix in a MARSS model in marss form. So this will be a list with elements \code{B}, \code{U}, \code{Q}, \code{Z}, \code{A}, \code{R}, \code{x0}, \code{V0}, \code{G}, \code{H}, \code{L}. -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{marssMODEL}}, \code{\link{MARSSkem}()}, \code{\link{MARSSoptim}()} } - -\note{ -Within the base code, a form-specific internal \code{MARSSinits} function is called to allow the output to vary based on form: \code{MARSSinits_dfa}, \code{MARSSinits_marss}, \code{MARSSinits_marxss}. -} diff --git a/man/MARSSkem.Rd b/man/MARSSkem.Rd deleted file mode 100644 index 77f4a48d..00000000 --- a/man/MARSSkem.Rd +++ /dev/null @@ -1,99 +0,0 @@ -\name{MARSSkem} -\alias{MARSSkem} - -\title{ EM Algorithm function for MARSS models } -\description{ - \code{MARSSkem()} performs maximum-likelihood estimation, using an EM algorithm for constrained and unconstrained MARSS models. Users would not call this function directly normally. The function \code{\link{MARSS}()} calls \code{MARSSkem()}. However users might want to use \code{MARSSkem()} directly if they need to avoid some of the error-checking overhead associated with the \code{\link{MARSS}()} function. -} -\usage{ -MARSSkem(MLEobj) -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. } -} -\details{ -Objects of class \code{\link{marssMLE}} may be built from scratch but are easier to construct using \code{\link{MARSS}()} with \code{MARSS(..., fit=FALSE)}. - - Options for \code{MARSSkem()} may be set using \code{MLEobj$control}. The commonly used elements of \code{control} are as follows (see \code{\link{marssMLE}}): - \describe{ - \item{\code{minit}}{ Minimum number of EM iterations. You can use this to force the algorithm to do a certain number of iterations. This is helpful if your solution is not converging.} - \item{\code{maxit}}{ Maximum number of EM iterations. } - \item{\code{min.iter.conv.test}}{ The minimum number of iterations before the log-log convergence test will be computed. If \code{maxit} is set less than this, then convergence will not be computed (and the algorithm will just run for maxit iterations). } - \item{\code{kf.x0}}{ Whether to set the prior at \eqn{t=0} (\code{"x00"}) or at \eqn{t=1} (\code{"x10"}). The default is \code{"x00"}. } - \item{\code{conv.test.deltaT}}{ The number of iterations to use in the log-log convergence test. This defaults to 9. } - \item{\code{abstol}}{ Tolerance for log-likelihood change for the delta logLik convergence test. If log-likelihood changes less than this amount relative to the previous iteration, the EM algorithm exits. This is normally (default) set to NULL and the log-log convergence test is used instead.} - \item{\code{allow.degen}}{ Whether to try setting \eqn{\mathbf{Q}}{Q} or \eqn{\mathbf{R}}{R} elements to zero if they appear to be going to zero. } - \item{\code{trace}}{ A positive integer. If not 0, a record will be created of each variable over all EM iterations and detailed warning messages (if appropriate) will be printed. } - \item{\code{safe}}{ If TRUE, \code{MARSSkem} will rerun \code{\link{MARSSkf}} after each individual parameter update rather than only after all parameters are updated. The latter is slower and unnecessary for many models, but in some cases, the safer and slower algorithm is needed because the ML parameter matrices have high condition numbers. } - \item{\code{silent}}{ Suppresses printing of progress bars, error messages, warnings and convergence information. } - } -} -\value{ - The \code{\link{marssMLE}} object which was passed in, with additional components: - \item{method}{String "kem".} - \item{kf}{Kalman filter output. } - \item{iter.record}{If \code{MLEobj$control$trace = TRUE}, a list with \code{par} = a record of each estimated parameter over all EM iterations and \code{logLik} = a record of the log likelihood at each iteration. } - \item{numIter}{Number of iterations needed for convergence.} - \item{convergence}{ Did estimation converge successfully? - \describe{ - \item{convergence=0}{ Converged in both the abstol test and the log-log plot test. } - \item{convergence=1}{Some of the parameter estimates did not converge (based on the log-log plot test AND abstol tests) before \code{MLEobj$control$maxit} was reached. This is not an error per se.} - \item{convergence=3}{ No convergence diagnostics were computed because all parameters were fixed thus no fitting required. } - \item{convergence=-1}{ No convergence diagnostics were computed because the MLE object was not fit (called with fit=FALSE). This isn't a convergence error just information. There is not par element so no functions can be run with the object. } - \item{convergence=2}{No convergence diagnostics were computed because the MLE object had problems and was not fit. This isn't a convergence error just information.} - \item{convergence=10}{Abstol convergence only. Some of the parameter estimates did not converge (based on the log-log plot test) before \code{MLEobj$control$maxit} was reached. However \code{MLEobj$control$abstol} was reached. } - \item{convergence=11}{Log-log convergence only. Some of the parameter estimates did not converge (based on the abstol test) before \code{MLEobj$control$maxit} was reached. However the log-log convergence test was passed. } - \item{convergence=12}{Abstol convergence only. Log-log convergence test was not computed because \code{MLEobj$control$maxit} was set to less than \code{control$min.iter.conv.test}. } - \item{convergence=13}{Lack of convergence info. Parameter estimates did not converge based on the abstol test before \code{MLEobj$control$maxit} was reached. No log-log information since \code{control$min.iter.conv.test} is less than \code{MLEobj$control$maxit} so no log-log plot test could be done. } - \item{convergence=42}{\code{MLEobj$control$abstol} was reached but the log-log plot test returned NAs. This is an odd error and you should set \code{control$trace=TRUE} and look at the outputted \code{$iter.record} to see what is wrong. } - \item{convergence=52}{The EM algorithm was abandoned due to numerical errors. Usually this means one of the variances either went to zero or to all elements being equal. This is not an error per se. Most likely it means that your model is not very good for your data (too inflexible or too many parameters). Try setting \code{control$trace=1} to view a detailed error report.} - \item{convergence=53}{ The algorithm was abandoned due to numerical errors in the likelihood calculation from \code{\link{MARSSkf}}. } - \item{convergence=62}{The algorithm was abandoned due to errors in the log-log convergence test. You should not get this error (it is included for debugging purposes to catch improper arguments passed into the log-log convergence test). } - \item{convergence=63}{The algorithm was run for \code{control$maxit} iterations, \code{control$abstol} not reached, and the log-log convergence test returned errors. You should not get this error (it is included for debugging purposes to catch improper arguments passed into the log-log convergence test).} - \item{convergence=72}{Other convergence errors. This is included for debugging purposes to catch misc. errors. } - } - } - \item{logLik}{Log-likelihood.} - \item{states}{State estimates from the Kalman smoother.} - \item{states.se}{Confidence intervals based on state standard errors, see caption of Fig 6.3 (p. 337) in Shumway & Stoffer (2006).} - \item{errors}{Any error messages.} -} - -\section{Discussion}{ - To ensure that the global maximum-likelihood values are found, it is recommended that you test the fit under different initial parameter values, particularly if the model is not a good fit to the data. This requires more computation time, but reduces the chance of the algorithm terminating at a local maximum and not reaching the true MLEs. For many models and for draft analyses, this is unnecessary, but answers should be checked using an initial conditions search before reporting final values. See the chapter on initial conditions in the User Guide for a discussion on how to do this. - - \code{MARSSkem()} calls a Kalman filter/smoother \code{\link{MARSSkf}()} for hidden state estimation. The algorithm allows two options for the initial state conditions: fixed but unknown or a prior. In the first case, x0 (whether at t=0 or t=1) is treated as fixed but unknown (estimated); in this case, \code{fixed$V0=0} and x0 is estimated. This is the default behavior. In the second case, the initial conditions are specified with a prior and V0!=0. In the later case, x0 or V0 may be estimated. MARSS will allow you to try to estimate both, but many researchers have noted that this is not robust so you should fix one or the other. - - If you get errors, you can type \code{\link{MARSSinfo}()} for help. Fitting problems often mean that the solution involves an ill-conditioned matrix. For example, your \eqn{\mathbf{Q}}{Q} or \eqn{\mathbf{R}}{R} matrix is going to a value in which all elements have the same value, for example zero. If for example, you tried to fit a model with a fixed \eqn{\mathbf{R}}{R} matrix with high values on the diagonal and the variance in that \eqn{\mathbf{R}}{R} matrix (diagonal terms) was much higher than what is actually in the data, then you might drive \eqn{\mathbf{Q}}{Q} to zero. Also if you try to fit a structurally inadequate model, then it is not unusual that \eqn{\mathbf{Q}}{Q} will be driven to zero. For example, if you fit a model with 1 hidden state trajectory to data that clearly have 2 quite different hidden state trajectories, you might have this problem. Comparing the likelihood of this model to a model with more structural flexibility should reveal that the structurally inflexible model is inadequate (much lower likelihood). - - Convergence testing is done via a combination of two tests. The first test (abstol test) is the test that the change in the absolute value of the log-likelihood from one iteration to another is less than some tolerance value (abstol). The second test (log-log test) is that the slope of a plot of the log of the parameter value or log-likelihood versus the log of the iteration number is less than some tolerance. Both of these must be met to generate the Success! parameters converged output. If you want to circumvent one of these tests, then set the tolerance for the unwanted test to be high. That will guarantee that that test is met before the convergence test you want to use is met. The tolerance for the abstol test is set by \code{control$abstol} and the tolerance for the log-log test is set by \code{control$conv.test.slope.tol}. Anything over 1 is huge for both of these. - } - -\references{ - R. H. Shumway and D. S. Stoffer (2006). Chapter 6 in Time series analysis and its applications. Springer-Verlag, New York. - - Ghahramani, Z. and Hinton, G. E. (1996) Parameter estimation for linear dynamical systems. Technical Report CRG-TR-96-2, University of Toronto, Dept. of Computer Science. - -Harvey, A. C. (1989) Chapter 5 in Forecasting, structural time series models and the -Kalman filter. Cambridge University Press, Cambridge, UK. - -The MARSS User Guide: Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science -Center, 2725 Montlake Blvd E., Seattle, WA 98112 Go to \href{https://cran.r-project.org/package=MARSS/vignettes/UserGuide.pdf}{User Guide} to open the most recent version. - -Holmes, E. E. (2012). Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive -state-space (MARSS) models. Technical Report. arXiv:1302.3919 [stat.ME] \href{https://cran.r-project.org/package=MARSS/vignettes/EMDerivation.pdf}{EMDerivation} has the most recent version. -} -\author{ - Eli Holmes and Eric Ward, NOAA, Seattle, USA. -} -\seealso{ - \code{\link{MARSSkf}()}, \code{\link{marssMLE}}, \code{\link{MARSSoptim}()}, \code{\link{MARSSinfo}()} - } -\examples{ -dat <- t(harborSeal) -dat <- dat[2:4, ] -# you can use MARSS to construct a proper marssMLE object. -fit <- MARSS(dat, model = list(Q = "diagonal and equal", U = "equal"), fit = FALSE) -# Pass this marssMLE object to MARSSkem to do the fit. -kemfit <- MARSSkem(fit) -} diff --git a/man/MARSSkemcheck.Rd b/man/MARSSkemcheck.Rd deleted file mode 100644 index a852698a..00000000 --- a/man/MARSSkemcheck.Rd +++ /dev/null @@ -1,22 +0,0 @@ -\name{MARSSkemcheck} -\alias{MARSSkemcheck} -\keyword{internal} - -\title{ Model Checking for MLE objects Passed to MARSSkem } -\description{ - This is a helper function in the \code{\link{MARSS-package}} that checks that the model can be handled by the \code{\link{MARSSkem}} algorithm. It also returns the structure of the model as a list of text strings. -} -\usage{ -MARSSkemcheck(MLEobj) -} -\arguments{ - \item{ MLEobj }{ An object of class \code{\link{marssMLE}}. } -} -\value{ - A list with of the model elements A, B, Q, R, U, x0, Z, V0 specifying the structure of the model using text strings). -} -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{marssMODEL}}, \code{\link{MARSSkem}()} } - From 8d451ba6c271ff0966c3120860c6088bdb950867 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:01:53 +0000 Subject: [PATCH 09/15] Fix: mark MARSSharveyobsFI and MARSShessian.numerical as @keywords internal These functions use ::: in examples and are not in NAMESPACE, confirming they are internal utilities not intended for direct user access. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- R/MARSSharveyobsFI.R | 2 +- R/MARSShessian_numerical.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/MARSSharveyobsFI.R b/R/MARSSharveyobsFI.R index adad64c6..e5953d02 100644 --- a/R/MARSSharveyobsFI.R +++ b/R/MARSSharveyobsFI.R @@ -39,7 +39,7 @@ #' Holmes, E. E. 2016c. Notes on computing the Fisher Information matrix for MARSS models. Part III Overview of Harvey 1989. #' #' Holmes, E. E. 2017. Notes on computing the Fisher Information matrix for MARSS models. Part IV Implementing the Recursion in Harvey 1989. -#' @export +#' @keywords internal MARSSharveyobsFI <- function(MLEobj) { paramvector <- MARSSvectorizeparam(MLEobj) par.names <- names(paramvector) diff --git a/R/MARSShessian_numerical.R b/R/MARSShessian_numerical.R index 5c46dd34..ac7d7736 100644 --- a/R/MARSShessian_numerical.R +++ b/R/MARSShessian_numerical.R @@ -32,7 +32,7 @@ #' dat <- dat[c(2, 11), ] #' MLEobj <- MARSS(dat) #' MARSS:::MARSShessian.numerical(MLEobj) -#' @export +#' @keywords internal MARSShessian.numerical <- function(MLEobj, fun = c("fdHess", "optim")) { fun <- match.arg(fun) kfNLL <- function(x, MLEobj = NULL) { # NULL assignment needed for optim call syntax From 3f4c27478a6647954b418766942f5e3ada79f2c7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:04:41 +0000 Subject: [PATCH 10/15] Add Roxygen2 documentation to MARSSinnovationsboot and stdInnov Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- R/MARSSinnovationsboot.R | 85 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/R/MARSSinnovationsboot.R b/R/MARSSinnovationsboot.R index 2a5452e8..6daa086c 100644 --- a/R/MARSSinnovationsboot.R +++ b/R/MARSSinnovationsboot.R @@ -4,6 +4,58 @@ # It creates bootstrap data via sampling from the standardized innovations matrix # In the MARSS code, this is referred to as the nonparametric bootstrap. Strictly speaking, it is not nonparametric. ######################################################################################################################## +#' Bootstrapped Data using Stoffer and Wall's Algorithm +#' +#' @description +#' Creates bootstrap data via sampling from the standardized innovations matrix. +#' This is an internal function in the **MARSS** package and is not exported. +#' Users should access this with [MARSSboot()]. +#' +#' @param MLEobj An object of class [marssMLE]. This object must have a `$par` +#' element containing MLE parameter estimates from e.g. [MARSSkem()] or +#' [MARSS()]. This algorithm may not be used if there are missing datapoints +#' in the data. +#' @param nboot Number of bootstraps to perform. +#' @param minIndx Number of innovations to skip. Stoffer & Wall suggest not +#' sampling from innovations 1-3. +#' +#' @details +#' Stoffer and Wall (1991) present an algorithm for generating CIs via a +#' non-parametric bootstrap for state-space models. The basic idea is that the +#' Kalman filter can be used to generate estimates of the residuals of the model +#' fit. These residuals are then standardized and resampled and used to generate +#' bootstrapped data using the MARSS model and its maximum-likelihood parameter +#' estimates. One of the limitations of the Stoffer and Wall algorithm is that +#' it cannot be used when there are missing data, unless all data at time +#' \eqn{t} are missing. +#' +#' @return +#' A list containing the following components: +#' +#' * `boot.states`: Array (dim is m x tSteps x nboot) of simulated state processes. +#' * `boot.data`: Array (dim is n x tSteps x nboot) of simulated data. +#' * `marss`: [marssMODEL] object element of the [marssMLE] object (`marssMLE$marss`) in "marss" form. +#' * `nboot`: Number of bootstraps performed. +#' +#' m is the number state processes (x in the MARSS model) and n is the number +#' of observation time series (y in the MARSS model). +#' +#' @references +#' Stoffer, D. S., and K. D. Wall. 1991. Bootstrapping state-space models: +#' Gaussian maximum likelihood estimation and the Kalman filter. Journal of +#' the American Statistical Association 86:1024-1033. +#' +#' @author +#' Eli Holmes and Eric Ward, NOAA, Seattle, USA. +#' +#' @seealso [stdInnov()], [MARSSparamCIs()], [MARSSboot()] +#' +#' @examples +#' dat <- t(kestrel) +#' dat <- dat[2:3, ] +#' fit <- MARSS(dat, model = list(U = "equal", Q = diag(.01, 2))) +#' boot.obj <- MARSSinnovationsboot(fit) +#' @export MARSSinnovationsboot <- function(MLEobj, nboot = 1000, minIndx = 3) { if (any(is.na(MLEobj$marss$data))) { stop("Stopped in MARSSinnovationsboot() because this algorithm resamples from the innovations and doesn't allow missing values.\n", call. = FALSE) @@ -88,6 +140,39 @@ MARSSinnovationsboot <- function(MLEobj, nboot = 1000, minIndx = 3) { ###################################################################################################################### # stdInnov ###################################################################################################################### +#' Standardized Innovations +#' +#' @description +#' Standardizes Kalman filter innovations. This is a helper function called by +#' [MARSSinnovationsboot()] in the **MARSS** package. Not exported. +#' +#' @param SIGMA n x n x T array of Kalman filter innovations variances. This is +#' output from [MARSSkf()]. +#' @param INNOV n x T matrix of Kalman filter innovations. This is output from +#' [MARSSkf()]. +#' +#' @details +#' n = number of observation (y) time series. T = number of time steps in the +#' time series. +#' +#' @return +#' n x T matrix of standardized innovations. +#' +#' @references +#' Stoffer, D. S., and K. D. Wall. 1991. Bootstrapping state-space models: +#' Gaussian maximum likelihood estimation and the Kalman filter. Journal of +#' the American Statistical Association 86:1024-1033. +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSboot()], [MARSSkf()], [MARSSinnovationsboot()] +#' +#' @examples +#' \dontrun{ +#' std.innovations <- stdInnov(kfList$Sigma, kfList$Innov) +#' } +#' @keywords internal stdInnov <- function(SIGMA, INNOV) { # This function added by EW Nov 3, 2008 # SIGMA is covariance matrix, E are original innovations From e393cf3d4b6b96f95818850075b3db5dd544fd0c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:09:19 +0000 Subject: [PATCH 11/15] Add Roxygen2 documentation block for MARSSkf, MARSSkfas, MARSSkfss Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- R/MARSSkf.r | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/R/MARSSkf.r b/R/MARSSkf.r index 88a45d82..0a86457c 100644 --- a/R/MARSSkf.r +++ b/R/MARSSkf.r @@ -2,6 +2,93 @@ # MARSSkf function # Utility function to choose the Kalman filter and smoother ####################################################################################################### +#' Kalman Filtering and Smoothing +#' +#' Provides Kalman filter and smoother output for MARSS models with (or without) time-varying parameters. `MARSSkf()` is a small helper function to select which Kalman filter/smoother function to use based on the value in `MLEobj$fun.kf`. The choices are `MARSSkfas()` which uses the filtering and smoothing algorithms in the [KFAS](https://CRAN.R-project.org/package=KFAS) package based on algorithms in Koopman and Durbin (2001-2003), and `MARSSkfss()` which uses the algorithms in Shumway and Stoffer. The default function is `MARSSkfas()` which is faster and generally more stable (fewer matrix inversions), but there are some cases where `MARSSkfss()` might be more stable and it returns a variety of diagnostics that `MARSSkfas()` does not. +#' +#' @param MLEobj A [marssMLE()] object with the `par` element of estimated parameters, `marss` element with the model description (in marss form) and data, and `control` element for the fitting algorithm specifications. `control$debugkf` specifies that detailed error reporting will be returned (only used by `MARSSkf()`). `model$diffuse=TRUE` specifies that a diffuse prior be used (only used by `MARSSkfas()`). See [KFAS::KFS()] documentation. When the diffuse prior is set, `V0` should be non-zero since the diffuse prior variance is `V0*kappa`, where kappa goes to infinity. +#' @param smoother Used by `MARSSkfss()`. If set to FALSE, only the Kalman filter is run. The output `xtT`, `VtT`, `x0T`, `Vtt1T`, `V0T`, and `J0` will be NULL. +#' @param only.logLik Used by `MARSSkfas()`. If set, only the log-likelihood is returned using the [KFAS::KFAS()] package function [KFAS::logLik.SSModel()]. This is much faster if only the log-likelihood is needed. +#' @param return.lag.one Used by `MARSSkfas()`. If set to FALSE, the smoothed lag-one covariance values are not returned (output `Vtt1T` is set to NULL). This speeds up `MARSSkfas()` because to return the smoothed lag-one covariance a stacked MARSS model is used with twice the number of state vectors---thus the state matrices are larger and take more time to work with. +#' @param return.kfas.model Used by `MARSSkfas()`. If set to TRUE, it returns the MARSS model in [KFAS::KFAS()] model form (class [KFAS::SSModel()]). This is useful if you want to use other KFAS functions or write your own functions to work with [optim()] to do optimization. This can speed things up since there is a bit of code overhead in [MARSSoptim()] associated with the [marssMODEL()] model specification needed for the constrained EM algorithm (but not strictly needed for [optim()]; useful but not required.). +#' @param newdata A new matrix of data to use in place of the data used to fit the model (in the `model$data` and `marss$data` elements of a [marssMLE()] object). If the initial \eqn{x} was estimated (in `x0`) then this estimate will be used for `newdata` and this may not be appropriate. +#' +#' @details +#' For state-space models, the Kalman filter and smoother provide optimal (minimum mean square error) estimates of the hidden states. The Kalman filter is a forward recursive algorithm which computes estimates of the states \eqn{\mathbf{x}_t}{x(t)} conditioned on the data up to time \eqn{t} (`xtt`). The Kalman smoother is a backward recursive algorithm which starts at time \eqn{T} and works backwards to \eqn{t = 1} to provide estimates of the states conditioned on all data (`xtT`). The data may contain missing values (NAs). All parameters may be time varying. +#' +#' The initial state is either an estimated parameter or treated as a prior (with mean and variance). The initial state can be specified at \eqn{t=0} or \eqn{t=1}. The EM algorithm in the MARSS package ([MARSSkem()]) provides both Shumway and Stoffer's derivation that uses \eqn{t=0} and Ghahramani et al algorithm which uses \eqn{t=1}. The `MLEobj$model$tinitx` argument specifies whether the initial states (specified with `x0` and `V0` in the `model` list) is at \eqn{t=0} (`tinitx=0`) or \eqn{t=1} (`tinitx=1`). If `MLEobj$model$tinitx=0`, `x0` is defined as \eqn{\textrm{E}[\mathbf{X}_0|\mathbf{y}_0]}{E[X(0)|y(0)]} and `V0` is defined as \eqn{\textrm{E}[\mathbf{X}_0\mathbf{X}_0|\mathbf{y}_0]}{E[X(0)X(0)|y(0)]} which appear in the Kalman filter at \eqn{t=1} (first set of equations). If `MLEobj$model$tinitx=1`, `x0` is defined as \eqn{\textrm{E}[\mathbf{X}_1|\mathbf{y}_0]}{E[X(1)|y(0)]} and `V0` is defined as \eqn{\textrm{E}[\mathbf{X}_1\mathbf{X}_1|\mathbf{y}_0]}{E[X(1)X(1)|y(0)]} which appear in the Kalman filter at \eqn{t=1} (and the filter starts at t=1 at the 3rd and 4th equations in the Kalman filter recursion). Thus if `MLEobj$model$tinitx=1`, `x0=xtt1[,1]` and `V0=Vtt1[,,1]` in the Kalman filter output while if `MLEobj$model$tinitx=0`, the initial condition will not be in the filter output since time starts at 1 not 0 in the output. +#' +#' `MARSSkfss()` is a native R implementation based on the Kalman filter and smoother equation as shown in Shumway and Stoffer (sec 6.2, 2006). The equations have been altered to allow the initial state distribution to be to be specified at \eqn{t=0} or \eqn{t=1} (data starts at \eqn{t=1}) per per Ghahramani and Hinton (1996). In addition, the filter and smoother equations have been altered to allow partially deterministic models (some or all elements of the \eqn{\mathbf{Q}}{Q} diagonals equal to 0), partially perfect observation models (some or all elements of the \eqn{\mathbf{R}}{R} diagonal equal to 0) and fixed (albeit unknown) initial states (some or all elements of the \eqn{\mathbf{V0}}{V0} diagonal equal to 0) (per Holmes 2012). The code includes numerous checks to alert the user if matrices are becoming ill-conditioned and the algorithm unstable. +#' +#' `MARSSkfas()` uses the (Fortran-based) Kalman filter and smoother function ([KFAS::KFS()]) in the [KFAS](https://cran.r-project.org/package=KFAS) package (Helske 2012) based on the algorithms of Koopman and Durbin (2000, 2001, 2003). The Koopman and Durbin algorithm is faster and more stable since it avoids matrix inverses. Exact diffuse priors are also allowed in the KFAS Kalman filter function. The standard output from the KFAS functions do not include the lag-one covariance smoother needed for the EM algorithm. `MARSSkfas` computes the smoothed lag-one covariance using the Kalman filter applied to a stacked MARSS model as described on page 321 in Shumway and Stoffer (2000). Also the KFAS model specification only has the initial state at \eqn{t=1} (as \eqn{\mathbf{X}_1}{X(1)} conditioned on \eqn{\mathbf{y}_0}{y(0)}, which is missing). When the initial state is specified at \eqn{t=0} (as \eqn{\mathbf{X}_0}{X(0)} conditioned on \eqn{\mathbf{y}_0}{y(0)}), `MARSSkfas()` computes the required \eqn{\textrm{E}[\mathbf{X}_1|\mathbf{y}_0}{E[X(1)|y(0)} and \eqn{\textrm{var}[\mathbf{X}_1|\mathbf{y}_0}{var[X(1)|y(0)} using the Kalman filter equations per Ghahramani and Hinton (1996). +#' +#' The likelihood returned for both functions is the exact likelihood when there are missing values rather than the approximate likelihood sometimes presented in texts for the missing values case. The functions return the same filter, smoother and log-likelihood values. The differences are that `MARSSkfas()` is faster (and more stable) but `MARSSkfss()` has many internal checks and error messages which can help debug numerical problems (but slow things down). Also `MARSSkfss()` returns some output specific to the traditional filter algorithm (`J` and `Kt`). +#' +#' @return +#' A list with the following components. \eqn{m} is the number of state processes and \eqn{n} is the number of observation time series. "V" elements are called "P" in Shumway and Stoffer (2006, eqn 6.17 with s=T). The output is referenced against equations in Shumway and Stoffer (2006) denoted S&S; the Kalman filter and smoother implemented in MARSS is for a more general MARSS model than that shown in S&S but the output has the same meaning. In the expectations below, the parameters are left off; \eqn{\textrm{E}[\mathbf{X} | \mathbf{y}_1^t]}{E[X | y(1:t)]} is really \eqn{\textrm{E}[\mathbf{X} | \Theta, \mathbf{Y}_1^t=\mathbf{y}_1^t]}{E[X | Theta, Y(1:t)=y(1:t)]} where \eqn{\Theta}{Theta} is the parameter list. \eqn{\mathbf{y}_1^t}{y(1:t)} denotes the data from \eqn{t=1} to \eqn{t=t}. +#' +#' The notation for the conditional expectations is \eqn{\mathbf{x}_t^t}{xtt(t)} = \eqn{\textrm{E}[\mathbf{X} | \mathbf{y}_1^t]}{E[X | y(1:t)]}, \eqn{\mathbf{x}_t^{t-1}}{xtt1(t)} = \eqn{\textrm{E}[\mathbf{X} | \mathbf{y}_1^{t-1}]}{E[X | y(1:t-1)]} and \eqn{\mathbf{x}_t^T}{xtT(t)} = \eqn{\textrm{E}[\mathbf{X} | \mathbf{y}_1^T]}{E[X | y(1:T)]}. The conditional variances and covariances use similar notation. Note that in the Holmes (2012), the EM Derivation, \eqn{\mathbf{x}_t^T}{xtT(t)} and \eqn{\mathbf{V}_t^T}{VtT(t)} are given special symbols because they appear repeatedly: \eqn{\tilde{\mathbf{x}}_t}{tildex(t)} and \eqn{\tilde{\mathbf{V}}_t}{tildeV(t)} but here the more general notation is used. +#' +#' * xtT: \eqn{\mathbf{x}_t^T}{xtT(t)} State first moment conditioned on \eqn{\mathbf{y}_1^T}{y(1:T)}: \eqn{\textrm{E}[\mathbf{X}_t|\mathbf{y}_1^T]}{E[X(t) | y(1:T)]} (m x T matrix). Kalman smoother output. +#' * VtT: \eqn{\mathbf{V}_t^T}{VtT(t)} State variance matrix conditioned on \eqn{\mathbf{y}_1^T}{y(1:T)}: \eqn{\textrm{E}[(\mathbf{X}_t-\mathbf{x}_t^T)(\mathbf{X}_t-\mathbf{x}_t^T)^\top|\mathbf{y}_1^T]}{E[(X(t)-xtT(t))(x(t)-xtT(t))'| | y(1:T)]} (m x m x T array). Kalman smoother output. Denoted \eqn{P_t^T}{P_t^T} in S&S (S&S eqn 6.18 with \eqn{s=T}, \eqn{t1=t2=t}). The state second moment \eqn{\textrm{E}[\mathbf{X}_t\mathbf{X}_t^\top|\mathbf{y}_1^T]}{E[X(t)X(t)'| y(1:T)]} is equal to \eqn{\mathbf{V}_t^T + \mathbf{x}_t^T(\mathbf{x}_t^T)^\top}{VtT(t)+xtT(t)xtT(t)'}. +#' * Vtt1T: \eqn{\mathbf{V}_{t,t-1}^T}{Vtt1T(t)} State lag-one cross-covariance matrix \eqn{\textrm{E}[(\mathbf{X}_t-\mathbf{x}_t^T)(\mathbf{X}_{t-1}-\mathbf{x}_{t-1}^T)^\top|\mathbf{y}_1^T]}{E[(X(t)-xtT(t))(X(t-1)-xtT(t-1))' | y(1:T)]} (m x m x T). Kalman smoother output. \eqn{P_{t,t-1}^T} in S&S (S&S eqn 6.18 with \eqn{s=T}, \eqn{t1=t}, \eqn{t2=t-1}). State lag-one second moments \eqn{\textrm{E}[\mathbf{X}_t\mathbf{X}_{t-1}^\top|\mathbf{y}_1^T]}{E[X(t)X(t-1)'| y(1:T)]} is equal to \eqn{\mathbf{V}_{t, t-1}^T + \mathbf{x}_t^T(\mathbf{x}_{t-1}^T)^\top}{Vtt1T(t)+xtT(t)xtT(t-1)'}. +#' * x0T: Initial smoothed state estimate \eqn{\textrm{E}[\mathbf{X}_{t0}|\mathbf{y}_1^T}{E[X(t0) | y(1:T)]} (m x 1). If `model$tinitx=0`, \eqn{t0=0}; if `model$tinitx=1`, \eqn{t0=1}. Kalman smoother output. +#' * x01T: Smoothed state estimate \eqn{\textrm{E}[\mathbf{X}_1|\mathbf{y}_1^T}{E[X(1) | y(1:T)]} (m x 1). +#' * x00T: Smoothed state estimate \eqn{\textrm{E}[\mathbf{X}_0 |\mathbf{y}_1^T}{E[X(0) | y(1:T)]} (m x 1). If `model$tinitx=1`, this will be NA. +#' * V0T: Initial smoothed state covariance matrix \eqn{\textrm{E}[\mathbf{X}_{t0}\mathbf{X}_0^\top | \mathbf{y}_1^T}{E[X(t0)X(0)' | y(1:T)]} (m x m). If `model$tinitx=0`, \eqn{t0=0} and `V0T=V00T`; if `model$tinitx=1`, \eqn{t0=1} and `V0T=V10T`. In the case of `tinitx=0`, this is \eqn{P_0^T} in S&S. +#' * V10T: Smoothed state covariance matrix \eqn{\textrm{E}[\mathbf{X}_1\mathbf{X}_0^\top | \mathbf{y}_1^T}{E[X(1)X(0)' | y(1:T)]} (m x m). +#' * V00T: Smoothed state covariance matrix \eqn{\textrm{E}[\mathbf{X}_0\mathbf{X}_0^\top | \mathbf{y}_1^T}{E[X(0)X(0)' | y(1:T)]} (m x m). If `model$tinitx=1`, this will be NA. +#' * J: (m x m x T) Kalman smoother output. Only for `MARSSkfss()`. (ref S&S eqn 6.49) +#' * J0: J at the initial time (t=0 or t=1) (m x m x T). Kalman smoother output. Only for `MARSSkfss()`. +#' * xtt: State first moment conditioned on \eqn{\mathbf{y}_1^t}{y(1:t)}: \eqn{\textrm{E}[\mathbf{X}_t | \mathbf{y}_1^t}{E[X(t) | y(1:t)]} (m x T). Kalman filter output. (S&S eqn 6.17 with \eqn{s=t}) +#' * xtt1: State first moment conditioned on \eqn{\mathbf{y}_1^{t-1}}{y(1:t-1)}: \eqn{\textrm{E}[\mathbf{X}_t | \mathbf{y}_1^{t-1}}{E[X(t) | y(1:t-1)]} (m x T). Kalman filter output. (S&S eqn 6.17 with \eqn{s=t-1}) +#' * Vtt: State variance conditioned on \eqn{\mathbf{y}_1^t}{y(1:t)}: \eqn{\textrm{E}[(\mathbf{X}_t-\mathbf{x}_t^t)(\mathbf{X}_t-\mathbf{x}_t^t)^\top|\mathbf{y}_1^t]}{E[(X(t)-xtt(t))(X(t)-xtt(t))'| | y(1:t)]} (m x m x T array). Kalman filter output. \eqn{P_t^t} in S&S (S&S eqn 6.18 with s=t, t1=t2=t). The state second moment \eqn{\textrm{E}[\mathbf{X}_t\mathbf{X}_t^\top|\mathbf{y}_1^t]}{E[X(t)X(t)'| y(1:t)]} is equal to \eqn{\mathbf{V}_t^t + \mathbf{x}_t^t(\mathbf{x}_t^t)^\top}{Vtt(t)+xtt(t)xtt(t)'}. +#' * Vtt1: State variance conditioned on \eqn{\mathbf{y}_1^{t-1}}{y(1:t-1)}: \eqn{\textrm{E}[(\mathbf{X}_t-\mathbf{x}_t^{t-1})(\mathbf{X}_t-\mathbf{x}_t^{t-1})^\top|\mathbf{y}_1^{t-1}]}{E[(X(t)-xtt1(t))(X(t)-xtt1(t))'| | y(1:t-1)]} (m x m x T array). Kalman filter output. The state second moment \eqn{\textrm{E}[\mathbf{X}_t\mathbf{X}_t^\top|\mathbf{y}_1^{t-1}]}{E[X(t)X(t)'| y(1:t-1)]} is equal to \eqn{\mathbf{V}_t^{t-1} + \mathbf{x}_t^{t-1}(\mathbf{x}_t^{t-1})^\top}{Vtt1(t)+xtt1(t)xtt1(t)'}. +#' * Kt: Kalman gain (m x m x T). Kalman filter output (ref S&S eqn 6.23). Only for `MARSSkfss()`. +#' * Innov: Innovations \eqn{\mathbf{y}_t-\textrm{E}[\mathbf{Y}_t|\mathbf{y}_1^{t-1}]}{y(t) - E[Y(t) | y(1:t-1)]} (n x T). Kalman filter output. Only returned with `MARSSkfss()`. (ref page S&S 339). +#' * Sigma: Innovations covariance matrix. Kalman filter output. Only returned with `MARSSkfss()`. (ref S&S eqn 6.61) +#' * logLik: Log-likelihood logL(y(1:T) | Theta) (ref S&S eqn 6.62) +#' * kfas.model: The model in [KFAS::KFAS()] model form (class [KFAS::SSModel()]). Only for `MARSSkfas`. +#' * errors: Any error messages. +#' +#' @references +#' A. C. Harvey (1989). Chapter 5, Forecasting, structural time series models and the Kalman filter. Cambridge University Press. +#' +#' R. H. Shumway and D. S. Stoffer (2006). Time series analysis and its applications: with R examples. Second Edition. Springer-Verlag, New York. +#' +#' Ghahramani, Z. and Hinton, G.E. (1996) Parameter estimation for linear dynamical systems. University of Toronto Technical Report CRG-TR-96-2. +#' +#' Holmes, E. E. (2012). Derivation of the EM algorithm for constrained and unconstrained multivariate autoregressive state-space (MARSS) models. Technical Report. arXiv:1302.3919 [stat.ME] `RShowDoc("EMDerivation",package="MARSS")` to open a copy. +#' +#' Jouni Helske (2012). KFAS: Kalman filter and smoother for exponential family state space models. +#' +#' Koopman, S.J. and Durbin J. (2000). Fast filtering and smoothing for non-stationary time series models, Journal of American Statistical Association, 92, 1630-38. +#' +#' Koopman, S.J. and Durbin J. (2001). Time series analysis by state space methods. Oxford: Oxford University Press. +#' +#' Koopman, S.J. and Durbin J. (2003). Filtering and smoothing of state vector for diffuse state space models, Journal of Time Series Analysis, Vol. 24, No. 1. +#' +#' The MARSS User Guide: Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of multivariate time-series using the MARSS package. NOAA Fisheries, Northwest Fisheries Science Center, 2725 Montlake Blvd E., Seattle, WA 98112 Type `RShowDoc("UserGuide",package="MARSS")` to open a copy. +#' +#' @author Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSS()], [marssMODEL()], [MARSSkem()], [KFAS::KFAS()] +#' +#' @aliases MARSSkfas MARSSkfss +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[2:nrow(dat), ] +#' # you can use MARSS to construct a marssMLE object +#' # MARSS calls MARSSinits to construct default initial values +#' # with fit = FALSE, the $par element of the marssMLE object will be NULL +#' fit <- MARSS(dat, fit = FALSE) +#' # MARSSkf needs a marssMLE object with the par element set +#' fit$par <- fit$start +#' # Compute the kf output at the params used for the inits +#' kfList <- MARSSkf(fit) +#' +#' @export MARSSkf <- function(MLEobj, only.logLik = FALSE, return.lag.one = TRUE, return.kfas.model = FALSE, newdata = NULL, smoother = TRUE) { if (is.null(MLEobj$par)) { stop("Stopped in MARSSkf(): par element of marssMLE object is required.\n") From e9372b6e14f2a3d21df9d809c94a32c64441fbee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:12:45 +0000 Subject: [PATCH 12/15] Add Roxygen2 documentation to MARSSoptim and MARSSparamCIs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- R/MARSSoptim.r | 132 ++++++++++++++++++++++++++++++++++++++++++++++ R/MARSSparamCIs.R | 67 +++++++++++++++++++++++ 2 files changed, 199 insertions(+) diff --git a/R/MARSSoptim.r b/R/MARSSoptim.r index 040025a5..d7b4b8aa 100644 --- a/R/MARSSoptim.r +++ b/R/MARSSoptim.r @@ -4,6 +4,138 @@ # Q and R are not allowed to be time-varying # Likelihood computation is via Kalman filter ####################################################################################################### +#' @title Parameter estimation for MARSS models using optim +#' +#' @description +#' Parameter estimation for MARSS models using R's [optim()] function. This +#' allows access to R's quasi-Newton algorithms available in that function. The +#' `MARSSoptim()` function is called when [MARSS()] is called with +#' `method="BFGS"`. This is an internal function in the [MARSS-package]. +#' +#' @param MLEobj An object of class [marssMLE]. +#' +#' @details +#' Objects of class [marssMLE] may be built from scratch but are easier to +#' construct using [MARSS()] called with `MARSS(..., fit=FALSE, method="BFGS")`. +#' +#' Options for [optim()] are passed in using `MLEobj$control`. See [optim()] +#' for a list of that function's control options. If `lower` and `upper` for +#' [optim()] need to be passed in, they should be passed in as part of +#' `control` as `control$lower` and `control$upper`. Additional `control` +#' arguments affect printing and initial conditions. +#' +#' * `MLEobj$control$kf.x0`: The initial condition is at \eqn{t=0} if +#' `kf.x0="x00"`. The initial condition is at \eqn{t=1} if `kf.x0="x10"`. +#' * `MLEobj$marss$diffuse`: If `diffuse=TRUE`, a diffuse initial condition is +#' used. `MLEobj$par$V0` is then the scaling function for the diffuse part of +#' the prior. Thus the prior is `V0*kappa` where `kappa-->Inf`. Note that +#' setting a diffuse prior does not change the correlation structure within +#' the prior. If `diffuse=FALSE`, a non-diffuse prior is used and +#' `MLEobj$par$V0` is the non-diffuse prior variance on the initial states. +#' The prior is `V0`. +#' * `MLEobj$control$silent`: Suppresses printing of progress bars, error +#' messages, warnings and convergence information. +#' +#' @return +#' The [marssMLE] object which was passed in, with additional components: +#' +#' * `method`: String `"BFGS"`. +#' * `kf`: Kalman filter output. +#' * `iter.record`: If `MLEobj$control$trace = TRUE`, then this is the +#' `$message` value from [optim]. +#' * `numIter`: Number of iterations needed for convergence. +#' * `convergence`: Did estimation converge successfully? +#' * `convergence=0`: Converged in less than `MLEobj$control$maxit` +#' iterations and no evidence of degenerate solution. +#' * `convergence=3`: No convergence diagnostics were computed because all +#' parameters were fixed thus no fitting required. +#' * `convergence=-1`: No convergence diagnostics were computed because the +#' MLE object was not fit (called with `fit=FALSE`). This isn't a +#' convergence error just information. There is no `par` element so no +#' functions can be run with the object. +#' * `convergence=1`: Maximum number of iterations `MLEobj$control$maxit` +#' was reached before `MLEobj$control$abstol` condition was satisfied. +#' * `convergence=10`: Some of the variance elements appear to be degenerate. +#' * `convergence=52`: The algorithm was abandoned due to errors from the +#' `"L-BFGS-B"` method. +#' * `convergence=53`: The algorithm was abandoned due to numerical errors in +#' the likelihood calculation from [MARSSkf]. If this happens with +#' `"BFGS"`, it can sometimes be helped with a better initial condition. +#' Try using the EM algorithm first (`method="kem"`), and then using the +#' parameter estimates from that as initial conditions for `method="BFGS"`. +#' * `convergence=54`: The algorithm successfully fit the model but the +#' Kalman filter/smoother could not be run on the model. Consult +#' `MARSSinfo('optimerror54')` for insight. +#' * `logLik`: Log-likelihood. +#' * `states`: State estimates from the Kalman smoother. +#' * `states.se`: Confidence intervals based on state standard errors, see +#' caption of Fig 6.3 (p. 337) in Shumway & Stoffer (2006). +#' * `errors`: Any error messages. +#' +#' @section Discussion: +#' The function only returns parameter estimates. To compute CIs, use +#' [MARSSparamCIs] but if you use parametric or non-parametric bootstrapping +#' with this function, it will use the EM algorithm to compute the bootstrap +#' parameter estimates! The quasi-Newton estimates are too fragile for the +#' bootstrap routine since one often needs to search to find a set of initial +#' conditions that work (i.e. don't lead to numerical errors). +#' +#' Estimates from `MARSSoptim` (which come from [optim]) should be checked +#' against estimates from the EM algorithm. If the quasi-Newton algorithm +#' works, it will tend to find parameters with higher likelihood faster than +#' the EM algorithm. However, the MARSS likelihood surface can be multimodal +#' with sharp peaks at degenerate solutions where a \eqn{\mathbf{Q}}{Q} or +#' \eqn{\mathbf{R}}{R} diagonal element equals 0. The quasi-Newton algorithm +#' sometimes gets stuck on these peaks even when they are not the maximum. +#' Neither an initial conditions search nor starting near the known maximum (or +#' from the parameters estimates after the EM algorithm) will necessarily solve +#' this problem. Thus it is wise to check against EM estimates to ensure that +#' the BFGS estimates are close to the MLE estimates (and vis-a-versa, it's +#' wise to rerun with `method="BFGS"` after using `method="kem"`). Conversely, +#' if there is a strong flat ridge in your likelihood, the EM algorithm can +#' report early convergence while the BFGS may continue much further along the +#' ridge and find very different parameter values. Of course a likelihood +#' surface with strong flat ridges makes the MLEs less informative... +#' +#' Note this is mainly a problem if the time series are short or very gappy. If +#' the time series are long, then the likelihood surface should be nice with a +#' single interior peak. In this case, the quasi-Newton algorithm works well +#' but it can still be sensitive (and slow) if not started with a good initial +#' condition. Thus starting it with the estimates from the EM algorithm is +#' often desirable. +#' +#' One should be aware that the prior set on the variance of the initial states +#' at t=0 or t=1 can have catastrophic effects on one's estimates if the +#' presumed prior covariance structure conflicts with the structure implied by +#' the MARSS model. For example, if you use a diagonal variance-covariance +#' matrix for the prior but the model implies a variance-covariance matrix with +#' non-zero covariances, your MLE estimates can be strongly influenced by the +#' prior variance-covariance matrix. Setting a diffuse prior does not help +#' because the diffuse prior still has the correlation structure specified by +#' V0. One way to detect priors effects is to compare the BFGS estimates to the +#' EM estimates. Persistent differences typically signify a problem with the +#' correlation structure in the prior conflicting with the implied correlation +#' structure in the MARSS model. +#' +#' @author Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSS()], [MARSSkem()], [marssMLE()], [optim()] +#' +#' @examples +#' dat <- t(harborSealWA) +#' dat <- dat[2:4, ] # remove the year row +#' +#' # fit a model with EM and then use that fit as the start for BFGS +#' # fit a model with 1 hidden state where obs errors are iid +#' # R="diagonal and equal" is the default so not specified +#' # Q is fixed +#' kemfit <- MARSS(dat, model = list(Z = matrix(1, 3, 1), Q = matrix(.01))) +#' bfgsfit <- MARSS(dat, +#' model = list(Z = matrix(1, 3, 1), Q = matrix(.01)), +#' inits = coef(kemfit, form = "marss"), method = "BFGS" +#' ) +#' +#' @export MARSSoptim <- function(MLEobj) { # This function does not check if user specified a legal MLE object. ## diff --git a/R/MARSSparamCIs.R b/R/MARSSparamCIs.R index 734a6b2d..ac08d9c8 100644 --- a/R/MARSSparamCIs.R +++ b/R/MARSSparamCIs.R @@ -3,6 +3,73 @@ # This returns CIs for ML parameter estimates # If method='hessian', uses either Harvey1989 (analytical) or fdHess (numerical) or optim (numerical) #################################################################################### +#' @title Standard Errors, Confidence Intervals and Bias for MARSS Parameters +#' +#' @description +#' Computes standard errors, confidence intervals and bias for the +#' maximum-likelihood estimates of MARSS model parameters. If you want +#' confidence intervals on the estimated hidden states, see +#' [print.marssMLE()] and look for `states.cis`. +#' +#' @param MLEobj An object of class [marssMLE]. Must have a `$par` element +#' containing the MLE parameter estimates. +#' @param method Method for calculating the standard errors: `"hessian"`, +#' `"parametric"`, and `"innovations"` implemented currently. +#' @param alpha alpha level for the 1-alpha confidence intervals. +#' @param nboot Number of bootstraps to use for `"parametric"` and +#' `"innovations"` methods. +#' @param hessian.fun The function to use for computing the Hessian. Options +#' are `"Harvey1989"` (default analytical) or two numerical options: +#' `"fdHess"` and `"optim"`. See [MARSShessian]. +#' @param silent If false, a progress bar is shown for `"parametric"` and +#' `"innovations"` methods. +#' +#' @details +#' Approximate confidence intervals (CIs) on the model parameters may be +#' calculated from the observed Fisher Information matrix ("Hessian CIs", see +#' [MARSSFisherI()]) or parametric or non-parametric (innovations) bootstrapping +#' using `nboot` bootstraps. The Hessian CIs are based on the asymptotic +#' normality of MLE parameters under a large-sample approximation. The Hessian +#' computation for variance-covariance matrices is a symmetric approximation +#' and the lower CIs for variances might be negative. Bootstrap estimates of +#' parameter bias are reported if method `"parametric"` or `"innovations"` is +#' specified. +#' +#' Note, these are added to the `par` elements of a [marssMLE] object but are +#' in `"marss"` form not `"marxss"` form. Thus the `MLEobj$par.upCI` and +#' related elements that are added to the [marssMLE] object may not look +#' familiar to the user. Instead the user should extract these elements using +#' `print(MLEobj)` and passing in the argument `what` set to `"par.se"`, +#' `"par.bias"`, `"par.lowCIs"`, or `"par.upCIs"`. See +#' [print.marssMLE][print](). Or use [tidy.marssMLE][tidy](). +#' +#' @return +#' `MARSSparamCIs` returns the [marssMLE] object passed in, with additional +#' components `par.se`, `par.upCI`, `par.lowCI`, `par.CI.alpha`, +#' `par.CI.method`, `par.CI.nboot` and `par.bias` (if method is `"parametric"` +#' or `"innovations"`). +#' +#' @references +#' Holmes, E. E., E. J. Ward, and M. D. Scheuerell (2012) Analysis of +#' multivariate time-series using the MARSS package. NOAA Fisheries, Northwest +#' Fisheries Science Center, 2725 Montlake Blvd E., Seattle, WA 98112. Type +#' `RShowDoc("UserGuide", package = "MARSS")` to open a copy. +#' +#' @author Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSboot()], [MARSSinnovationsboot()], [MARSShessian()] +#' +#' @examples +#' dat <- t(harborSealWA) +#' dat <- dat[2:4, ] +#' kem <- MARSS(dat, model = list( +#' Z = matrix(1, 3, 1), +#' R = "diagonal and unequal" +#' )) +#' kem.with.CIs.from.hessian <- MARSSparamCIs(kem) +#' kem.with.CIs.from.hessian +#' +#' @export MARSSparamCIs <- function(MLEobj, method = "hessian", alpha = 0.05, nboot = 1000, silent = TRUE, hessian.fun = "Harvey1989") { # this function expects a marssMLE object # it will add standard errors, biases, low/up CIs to MLEobj From 34911901dbb78343db491ddfd99761a3468521df Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:22:29 +0000 Subject: [PATCH 13/15] Batch 3: Convert MARSSinnovationsboot, stdInnov, MARSSkf, MARSSoptim, MARSSparamCIs, MARSSresiduals, MARSSresiduals.tT to Roxygen2 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- R/MARSSresiduals.R | 92 ++++++++++ R/MARSSresiduals.tT.R | 384 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 476 insertions(+) diff --git a/R/MARSSresiduals.R b/R/MARSSresiduals.R index 8d67f4e1..7d6a6d40 100644 --- a/R/MARSSresiduals.R +++ b/R/MARSSresiduals.R @@ -1,3 +1,95 @@ +#' MARSS Residuals +#' +#' The normal residuals function is [residuals()][residuals.marssMLE()]. `MARSSresiduals()` returns residuals as a list of matrices while [residuals()][residuals.marssMLE()] returns the same information in a data frame. This function calculates the residuals, residuals variance, and standardized residuals for the one-step-ahead (conditioned on data up to \eqn{t-1}), the smoothed (conditioned on all the data), and contemporaneous (conditioned on data up to \eqn{t}) residuals. +#' +#' @param object An object of class `marssMLE`. +#' @param ... Additional arguments to be passed to the residuals functions. For type="tT", `Harvey=TRUE` can be passed into to use the Harvey et al (1998) algorithm. +#' @param type `"tT"` for smoothed residuals conditioned on all the data \eqn{t=1} to \eqn{T}, aka smoothation residuals. `"tt1"` for one-step-ahead residuals, aka innovations residuals. `"tt"` for contemporaneous residuals. +#' @param normalize TRUE/FALSE See details. +#' @param silent If TRUE, do not print inversion warnings. +#' @param fun.kf Kalman filter function to use. Can be ignored. +#' +#' @return A list of the following components +#' * `model.residuals`: The model residuals (data minus model predicted values) as a n x T matrix. +#' * `state.residuals`: The state residuals. This is the state residual for the transition from \eqn{t=t} to \eqn{t+1} thus the last time step will be NA (since \eqn{T+1} is past the data). State residuals do not exist for the `type="tt"` case (since this would required the expected value of \eqn{\mathbf{X}_t}{X(t)} conditioned on data to \eqn{t+1}). +#' * `residuals`: The residuals as a (n+m) x T matrix with `model.residuals` on top and `state.residuals` below. +#' * `var.residuals`: The variance of the model residuals and state residuals as a (n+m) x (n+m) x T matrix with the model residuals variance in rows/columns 1 to n and state residuals variances in rows/columns n+1 to n+m. The last time step will be all NA since the state residual is for \eqn{t=t } to \eqn{t+1}. +#' * `std.residuals`: The Cholesky standardized residuals as a (n+m) x T matrix. This is `residuals` multiplied by the inverse of the lower triangle of the Cholesky decomposition of `var.residuals`. +#' * `mar.residuals`: The marginal standardized residuals as a (n+m) x T matrix. This is `residuals` multiplied by the inverse of the diagonal matrix formed by the square-root of the diagonal of `var.residuals`. +#' * `bchol.residuals`: The Block Cholesky standardized residuals as a (n+m) x T matrix. This is `model.residuals` multiplied by the inverse of the lower triangle of the Cholesky decomposition of `var.residuals[1:n,1:n,]` and `state.residuals` multiplied by the inverse of the lower triangle of the Cholesky decomposition of `var.residuals[(n+1):(n+m),(n+1):(n+m),]`. +#' * `E.obs.residuals`: The expected value of the model residuals conditioned on the observed data. Returned as a n x T matrix. For observed data, this will be the observed model residuals. For unobserved data, this will be 0 if \eqn{\mathbf{R}}{R} is diagonal but non-zero if \eqn{\mathbf{R}}{R} is non-diagonal. See [MARSSresiduals.tT()]. +#' * `var.obs.residuals`: The variance of the model residuals conditioned on the observed data. Returned as a n x n x T matrix. For observed data, this will be 0. See [MARSSresiduals.tT()]. +#' * `msg`: Any warning messages. This will be printed unless Object$control$trace = -1 (suppress all error messages). +#' +#' @details +#' +#' For smoothed residuals, see [MARSSresiduals.tT()]. +#' +#' For one-step-ahead residuals, see [MARSSresiduals.tt1()]. +#' +#' For contemporaneous residuals, see [MARSSresiduals.tt()]. +#' +#' **Standardized residuals** +#' +#' Standardized residuals have been adjusted by the variance of the residuals at time \eqn{t} such that the variance of the residuals at time \eqn{t} equals 1. Given the normality assumption, this means that one typically sees +/- 2 confidence interval lines on standardized residuals plots. +#' +#' `std.residuals` are Cholesky standardized residuals. These are the residuals multiplied by the inverse of the lower triangle of the Cholesky decomposition of the variance matrix of the residuals: +#' \deqn{ \hat{\Sigma}_t^{-1/2} \hat{\mathbf{v}}_t.}{ hatSigma_t^{-1/2} hatv_t.} +#' These residuals are uncorrelated with each other, although they are not necessarily temporally uncorrelated (innovations residuals are temporally uncorrelated). +#' +#' The interpretation of the Cholesky standardized residuals is not straight-forward when the \eqn{\mathbf{Q}}{Q} and \eqn{\mathbf{R}}{R} variance-covariance matrices are non-diagonal. The residuals which were generated by a non-diagonal variance-covariance matrices are transformed into orthogonal residuals in \eqn{\textrm{MVN}(0,\mathbf{I})}{MVN(0,I)} space. For example, if v is 2x2 correlated errors with variance-covariance matrix \eqn{\mathbf{R}}{R}. The transformed residuals (from this function) for the i-th row of v is a combination of the row 1 effect and the row 1 effect plus the row 2 effect. So in this case, row 2 of the transformed residuals would not be regarded as solely the row 2 residual but rather how different row 2 is from row 1, relative to expected. If the errors are highly correlated, then the Cholesky standardized residuals can look rather non-intuitive. +#' +#' `mar.residuals` are the marginal standardized residuals. These are the residuals multiplied by the inverse of the diagonal matrix formed from the square-root of the diagonal of the variance matrix of the residuals: +#' \deqn{ \textrm{dg}(\hat{\Sigma}_t)^{-1/2} \hat{\mathbf{v}}_t,}{ dg(hatSigma_t)^{-1/2} hatv_t,} where \eqn{dg(A)} is the square matrix formed from the diagonal of \eqn{A}, aka `diag(diag(A))`. These residuals will be correlated if the variance matrix is non-diagonal. +#' +#' The Block Cholesky standardized residuals are like the Cholesky standardized residuals except that the full variance-covariance matrix is not used, only the variance-covariance matrix for the model or state residuals (respectively) is used for standardization. For the model residuals, the Block Cholesky standardized residuals will be the same as the Cholesky standardized residuals because the upper triangle of the lower triangle of the Cholesky decomposition (which is what we standardize by) is all zero. For `type="tt1"` and `type="tt"`, the Block Cholesky standardized state residuals will be the same as the Cholesky standardized state residuals because in the former, the model and state residuals are uncorrelated and in the latter, the state residuals do not exist. For `type="tT"`, the model and state residuals are correlated and the Block Cholesky standardized residuals will be different than the Cholesky standardized residuals. +#' +#' **Normalized residuals** +#' +#' If `normalize=FALSE`, the unconditional variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} are \eqn{\mathbf{R}}{R} and \eqn{\mathbf{Q}}{Q} and the model is assumed to be written as +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{v}_t}{ y(t) = Z x(t) + a + v(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{w}_t}{ x(t) = B x(t-1) + u + w(t)} +#' If `normalize=TRUE`, the model is assumed to be written as +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{H}\mathbf{v}_t}{ y(t) = Z x(t) + a + Hv(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{G}\mathbf{w}_t}{ x(t) = B x(t-1) + u + Gw(t)} +#' with the variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} equal to \eqn{\mathbf{I}}{I} (identity). +#' +#' **Missing or left-out data** +#' +#' See the discussion of residuals for missing and left-out data in [MARSSresiduals.tT()]. +#' +#' @author Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [residuals.marssMLE()], [MARSSresiduals.tT()], [MARSSresiduals.tt1()], [plot.marssMLE()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[c(2,11),] +#' fit <- MARSS(dat) +#' +#' #state smoothed residuals +#' state.resids1 <- MARSSresiduals(fit, type="tT")$state.residuals +#' #this is the same as +#' states <- fit$states +#' Q <- coef(fit, type="matrix")$Q +#' state.resids2 <- states[,2:30]-states[,1:29]-matrix(coef(fit,type="matrix")$U,2,29) +#' #compare the two +#' cbind(t(state.resids1[,-30]), t(state.resids2)) +#' +#' #normalize to variance of 1 +#' state.resids1 <- MARSSresiduals(fit, type="tT", normalize=TRUE)$state.residuals +#' state.resids2 <- (solve(t(chol(Q))) %*% state.resids2) +#' cbind(t(state.resids1[,-30]), t(state.resids2)) +#' +#' #one-step-ahead standardized residuals +#' MARSSresiduals(fit, type="tt1")$std.residuals +#' +#' @references +#' Holmes, E. E. 2014. Computation of standardized residuals for (MARSS) models. Technical Report. arXiv:1411.0045. +#' +#' See also the discussion and references in [MARSSresiduals.tT()], [MARSSresiduals.tt1()] and [MARSSresiduals.tt()]. +#' +#' @export MARSSresiduals <- function(object, ..., type = c("tT", "tt1", "tt"), normalize = FALSE, silent = FALSE, fun.kf = c("MARSSkfas", "MARSSkfss")) { type <- match.arg(type) fun.kf <- match.arg(fun.kf) diff --git a/R/MARSSresiduals.tT.R b/R/MARSSresiduals.tT.R index 4a6ede1f..f661f532 100644 --- a/R/MARSSresiduals.tT.R +++ b/R/MARSSresiduals.tT.R @@ -1,3 +1,387 @@ +#' MARSS Smoothed Residuals +#' +#' Calculates the standardized (or auxiliary) smoothed residuals sensu Harvey, +#' Koopman and Penzer (1998). The expected values and variance for missing (or +#' left-out) data are also returned (Holmes 2014). Not exported. Access this +#' function with `MARSSresiduals(object, type="tT")`. At time \eqn{t} (in the +#' returned matrices), the model residuals are for time \eqn{t}, while the state +#' residuals are for the transition from \eqn{t} to \eqn{t+1} following the +#' convention in Harvey, Koopman and Penzer (1998). +#' +#' @param object An object of class [marssMLE()]. +#' @param Harvey TRUE/FALSE. Use the Harvey et al. (1998) algorithm or use the +#' Holmes (2014) algorithm. The values are the same except for missing values. +#' @param normalize TRUE/FALSE See details. +#' @param silent If TRUE, don't print inversion warnings. +#' @param fun.kf Kalman filter function to use. Can be ignored. +#' +#' @return A list with the following components +#' * `model.residuals`: The the observed smoothed model residuals: data minus the +#' model predictions conditioned on all observed data. This is different than +#' the Kalman filter innovations which use on the data up to time \eqn{t-1} +#' for the predictions. See details. +#' * `state.residuals`: The smoothed state residuals +#' \eqn{\mathbf{x}_{t+1}^T - \mathbf{Z} \mathbf{x}_{t}^T - \mathbf{u}}{xtT(t+1) - Z xtT(t) - u}. +#' The last time step will be NA because the last step would be for T to T+1 +#' (past the end of the data). +#' * `residuals`: The residuals conditioned on the observed data. Returned as a +#' (n+m) x T matrix with `model.residuals` in rows 1 to n and +#' `state.residuals` in rows n+1 to n+m. NAs will appear in rows 1 to n in +#' the places where data are missing. +#' * `var.residuals`: The joint variance of the model and state residuals +#' conditioned on observed data. Returned as a (n+m) x (n+m) x T matrix. For +#' Harvey=FALSE, this is Holmes (2014) equation 57. For Harvey=TRUE, this is +#' the residual variance in eqn. 24, page 113, in Harvey et al. (1998). They +#' are identical except for missing values, for those Harvey=TRUE returns 0s. +#' For the state residual variance, the last time step will be all NA because +#' the last step would be for T to T+1 (past the end of the data). +#' * `std.residuals`: The Cholesky standardized residuals as a (n+m) x T matrix. +#' This is `residuals` multiplied by the inverse of the lower triangle of the +#' Cholesky decomposition of `var.residuals`. The model standardized residuals +#' associated with the missing data are replaced with NA. +#' * `mar.residuals`: The marginal standardized residuals as a (n+m) x T matrix. +#' This is `residuals` multiplied by the inverse of the diagonal matrix formed +#' by the square-root of the diagonal of `var.residuals`. The model marginal +#' residuals associated with the missing data are replaced with NA. +#' * `bchol.residuals`: The Block Cholesky standardized residuals as a (n+m) x T +#' matrix. This is `model.residuals` multiplied by the inverse of the lower +#' triangle of the Cholesky decomposition of `var.residuals[1:n,1:n,]` and +#' `state.residuals` multiplied by the inverse of the lower triangle of the +#' Cholesky decomposition of +#' `var.residuals[(n+1):(n+m),(n+1):(n+m),]`. +#' * `E.obs.residuals`: The expected value of the model residuals conditioned on +#' the observed data. Returned as a n x T matrix. For observed data, this will +#' be the observed residuals (values in `model.residuals`). For unobserved +#' data, this will be 0 if \eqn{\mathbf{R}}{R} is diagonal but non-zero if +#' \eqn{\mathbf{R}}{R} is non-diagonal. See details. +#' * `var.obs.residuals`: The variance of the model residuals conditioned on the +#' observed data. Returned as a n x n x T matrix. For observed data, this will +#' be 0. See details. +#' * `msg`: Any warning messages. This will be printed unless +#' `Object$control$trace = -1` (suppress all error messages). +#' +#' @details +#' +#' This function returns the raw, the Cholesky standardized and the marginal +#' standardized smoothed model and state residuals. 'smoothed' means conditioned +#' on all the observed data and a set of parameters. These are the residuals +#' presented in Harvey, Koopman and Penzer (1998) pages 112-113, with the +#' addition of the values for unobserved data (Holmes 2014). If Harvey=TRUE, the +#' function uses the algorithm on page 112 of Harvey, Koopman and Penzer (1998) +#' to compute the conditional residuals and variance of the residuals. If +#' Harvey=FALSE, the function uses the equations in the technical report (Holmes +#' 2014). Unlike the innovations residuals, the smoothed residuals are +#' autocorrelated (section 4.1 in Harvey and Koopman 1992) and thus an ACF test +#' on these residuals would not reveal model inadequacy. +#' +#' The residuals matrix has a value for each time step. The residuals in column +#' \eqn{t} rows 1 to n are the model residuals associated with the data at time +#' \eqn{t}. The residuals in rows n+1 to n+m are the state residuals associated +#' with the transition from \eqn{\mathbf{x}_{t}}{x(t)} to +#' \eqn{\mathbf{x}_{t+1}}{x(t+1)}, not the transition from +#' \eqn{\mathbf{x}_{t-1}}{x(t-1)} to \eqn{\mathbf{x}_{t}}{x(t)}. Because +#' \eqn{\mathbf{x}_{t+1}}{x(t+1)} does not exist at time \eqn{T}, the state +#' residuals and associated variances at time \eqn{T} are NA. +#' +#' Below the conditional residuals and their variance are discussed. The random +#' variables are capitalized and the realizations from the random variables are +#' lower case. The random variables are \eqn{\mathbf{X}}{X}, +#' \eqn{\mathbf{Y}}{Y}, \eqn{\mathbf{V}}{V} and \eqn{\mathbf{W}}{W}. There are +#' two types of \eqn{\mathbf{Y}}{Y}. The observed \eqn{\mathbf{Y}}{Y} that are +#' used to estimate the states \eqn{\mathbf{x}}{x}. These are termed +#' \eqn{\mathbf{Y}^{(1)}}{Y(1)}. The unobserved \eqn{\mathbf{Y}}{Y} are termed +#' \eqn{\mathbf{Y}^{(2)}}{Y(2)}. These are not used to estimate the states +#' \eqn{\mathbf{x}}{x} and we may or may not know the values of +#' \eqn{\mathbf{y}^{(2)}}{y(2)}. Typically we treat +#' \eqn{\mathbf{y}^{(2)}}{y(2)} as unknown but it may be known but we did not +#' include it in our model fitting. Note that the model parameters +#' \eqn{\Theta}{Theta} are treated as fixed or known. The 'fitting' does not +#' involve estimating \eqn{\Theta}{Theta}; it involves estimating +#' \eqn{\mathbf{x}}{x}. All MARSS parameters can be time varying but the +#' \eqn{t} subscripts are left off parameters to reduce clutter. +#' +#' **Model residuals** +#' +#' \eqn{\mathbf{v}_{t}}{v(t)} is the difference between the data and the +#' predicted data at time \eqn{t} given \eqn{\mathbf{x}_{t}}{x(t)}: +#' \deqn{ \mathbf{v}_{t} = \mathbf{y}_{t} - \mathbf{Z} \mathbf{x}_{t} - \mathbf{a} - \mathbf{D}\mathbf{d}_t}{ v(t) = y(t) - Z x(t) - a - D d(t)} +#' \eqn{\mathbf{x}_{t}}{x(t)} is unknown (hidden) and our data are one +#' realization of \eqn{\mathbf{y}_{t}}{y(t)}. The observed model residuals +#' \eqn{\hat{\mathbf{v}}_{t}}{hatv(t)} are the difference between the observed +#' data and the predicted data at time \eqn{t} using the fitted model. +#' `MARSSresiduals.tT` fits the model using all the data, thus +#' \deqn{ \hat{\mathbf{v}}_{t} = \mathbf{y}_{t} - \mathbf{Z}\mathbf{x}_{t}^T - \mathbf{a} - \mathbf{D}\mathbf{d}_t}{ hatv(t) = y(t) - Z xtT(t) - a - D d(t)} +#' where \eqn{\mathbf{x}_{t}^T}{xtT(t)} is the expected value of +#' \eqn{\mathbf{X}_{t}}{X(t)} conditioned on the data from 1 to \eqn{T} (all +#' the data), i.e. the Kalman smoother estimate of the states at time \eqn{t}. +#' \eqn{\mathbf{y}_{t}}{y(t)} are your data and missing values will appear as +#' NA in the observed model residuals. These are returned as `model.residuals` +#' and rows 1 to \eqn{n} of `residuals`. +#' +#' `res1` and `res2` in the code below will be the same. +#' ``` +#' dat = t(harborSeal)[2:3,] +#' fit = MARSS(dat) +#' Z = coef(fit, type="matrix")$Z +#' A = coef(fit, type="matrix")$A +#' res1 = dat - Z %*% fit$states - A %*% matrix(1,1,ncol(dat)) +#' res2 = MARSSresiduals(fit, type="tT")$model.residuals +#' ``` +#' +#' **State residuals** +#' +#' \eqn{\mathbf{w}_{t+1}}{w(t+1)} are the difference between the state at time +#' \eqn{t+1} and the expected value of the state at time \eqn{t+1} given the +#' state at time \eqn{t}: +#' \deqn{ \mathbf{w}_{t+1} = \mathbf{x}_{t+1} - \mathbf{B} \mathbf{x}_{t} - \mathbf{u} - \mathbf{C}\mathbf{c}_{t+1}}{ w(t+1) = x(t+1) - B x(t) - u - C c(t+1)} +#' The estimated state residuals \eqn{\hat{\mathbf{w}}_{t+1}}{hatw(t+1)} are +#' the difference between estimate of \eqn{\mathbf{x}_{t+1}}{x(t+1)} minus the +#' estimate using \eqn{\mathbf{x}_{t}}{x(t)}. +#' \deqn{ \hat{\mathbf{w}}_{t+1} = \mathbf{x}_{t+1}^T - \mathbf{B}\mathbf{x}_{t}^T - \mathbf{u} - \mathbf{C}\mathbf{c}_{t+1}}{ hatw(t+1) = xtT(t+1) - B xtT(t) - u - C c(t+1)} +#' where \eqn{\mathbf{x}_{t+1}^T}{xtT(t+1)} is the Kalman smoother estimate of +#' the states at time \eqn{t+1} and \eqn{\mathbf{x}_{t}^T}{xtT(t)} is the +#' Kalman smoother estimate of the states at time \eqn{t}. The estimated state +#' residuals \eqn{\mathbf{w}_{t+1}}{w(t+1)} are returned in `state.residuals` +#' and rows \eqn{n+1} to \eqn{n+m} of `residuals`. `state.residuals[,t]` is +#' \eqn{\mathbf{w}_{t+1}}{w(t+1)} (notice time subscript difference). There +#' are no NAs in the estimated state residuals as an estimate of the state +#' exists whether or not there are associated data. +#' +#' `res1` and `res2` in the code below will be the same. +#' ``` +#' dat <- t(harborSeal)[2:3,] +#' TT <- ncol(dat) +#' fit <- MARSS(dat) +#' B <- coef(fit, type="matrix")$B +#' U <- coef(fit, type="matrix")$U +#' statestp1 <- MARSSkf(fit)$xtT[,2:TT] +#' statest <- MARSSkf(fit)$xtT[,1:(TT-1)] +#' res1 <- statestp1 - B %*% statest - U %*% matrix(1,1,TT-1) +#' res2 <- MARSSresiduals(fit, type="tT")$state.residuals[,1:(TT-1)] +#' ``` +#' Note that the state residual at the last time step (not shown) will be NA +#' because it is the residual associated with \eqn{\mathbf{x}_T}{x(T)} to +#' \eqn{\mathbf{x}_{T+1}}{x(T+1)} and \eqn{T+1} is beyond the data. Similarly, +#' the variance matrix at the last time step will have NAs for the same reason. +#' +#' **Variance of the residuals** +#' +#' In a state-space model, \eqn{\mathbf{X}}{X} and \eqn{\mathbf{Y}}{Y} are +#' stochastic, and the model and state residuals are random variables +#' \eqn{\hat{\mathbf{V}}_{t}}{hatV(t)} and +#' \eqn{\hat{\mathbf{W}}_{t+1}}{hatW(t+1)}. To evaluate the residuals we +#' observed (with \eqn{\mathbf{y}^{(1)}}{y(1)}), we use the joint distribution +#' of \eqn{\hat{\mathbf{V}}_{t}, \hat{\mathbf{W}}_{t+1}}{hatV(t), hatW(t+1)} +#' across all the different possible data sets that our MARSS equations with +#' parameters \eqn{\Theta}{Theta} might generate. Denote the matrix of +#' \eqn{\hat{\mathbf{V}}_{t}, \hat{\mathbf{W}}_{t+1}}{hatV(t), hatW(t+1)}, as +#' \eqn{\widehat{\mathcal{E}}_{t}}{Epsilon(t)}. That distribution has an +#' expected value (mean) and variance: +#' \deqn{ \textrm{E}[\widehat{\mathcal{E}}_{t}] = 0; \textrm{var}[\widehat{\mathcal{E}}_{t}] = \hat{\Sigma}_{t} }{ E[Epsilon(t)] = 0; var[Epsilon(t)] = hatSigma(t)} +#' Our observed residuals (returned in `residuals`) are one sample from this +#' distribution. To standardize the observed residuals, we will use +#' \eqn{ \hat{\Sigma}_{t} }{ hatSigma(t) }. \eqn{ \hat{\Sigma}_{t} }{ hatSigma(t) } +#' is returned in `var.residuals`. Rows/columns 1 to \eqn{n} are the +#' conditional variances of the model residuals and rows/columns \eqn{n+1} to +#' \eqn{n+m} are the conditional variances of the state residuals. The +#' off-diagonal blocks are the covariances between the two types of residuals. +#' +#' **Standardized residuals** +#' +#' `MARSSresiduals` will return the Cholesky standardized residuals sensu Harvey +#' et al. (1998) in `std.residuals` for outlier and shock detection. These are +#' the model and state residuals multiplied by the inverse of the lower triangle +#' of the Cholesky decomposition of `var.residuals` (note `chol()` in R returns +#' the upper triangle thus a transpose is needed). The standardized model +#' residuals are set to NA when there are missing data. The standardized state +#' residuals however always exist since the expected value of the states exist +#' without data. The calculation of the standardized residuals for both the +#' observations and states requires the full residuals variance matrix. Since +#' the state residuals variance is NA at the last time step, the standardized +#' residual in the last time step will be all NA (for both model and state +#' residuals). +#' +#' The interpretation of the Cholesky standardized residuals is not +#' straight-forward when the \eqn{\mathbf{Q}}{Q} and \eqn{\mathbf{R}}{R} +#' variance-covariance matrices are non-diagonal. The residuals which were +#' generated by a non-diagonal variance-covariance matrices are transformed into +#' orthogonal residuals in \eqn{\textrm{MVN}(0,\mathbf{I})}{MVN(0,I)} space. +#' For example, if v is 2x2 correlated errors with variance-covariance matrix R. +#' The transformed residuals (from this function) for the i-th row of +#' \eqn{\mathbf{v}}{v} is a combination of the row 1 effect and the row 1 +#' effect plus the row 2 effect. So in this case, row 2 of the transformed +#' residuals would not be regarded as solely the row 2 residual but rather how +#' different row 2 is from row 1, relative to expected. If the errors are highly +#' correlated, then the transformed residuals can look rather non-intuitive. +#' +#' The marginal standardized residuals are returned in `mar.residuals`. These +#' are the model and state residuals multiplied by the inverse of the diagonal +#' matrix formed by the square root of the diagonal of `var.residuals`. These +#' residuals will be correlated (across the residuals at time \eqn{t}) but are +#' easier to interpret when \eqn{\mathbf{Q}}{Q} and \eqn{\mathbf{R}}{R} are +#' non-diagonal. +#' +#' The Block Cholesky standardized residuals are like the Cholesky standardized +#' residuals except that the full variance-covariance matrix is not used, only +#' the variance-covariance matrix for the model or state residuals (respectively) +#' is used for standardization. For the model residuals, the Block Cholesky +#' standardized residuals will be the same as the Cholesky standardized +#' residuals because the upper triangle of the lower triangle of the Cholesky +#' decomposition (which is what we standardize by) is all zero. For the state +#' residuals, the Block Cholesky standardization will be different because Block +#' Cholesky standardization treats the model and state residuals as independent +#' (which they are not in the smoothations case). +#' +#' **Normalized residuals** +#' +#' If `normalize=FALSE`, the unconditional variance of \eqn{\mathbf{V}_t}{V(t)} +#' and \eqn{\mathbf{W}_t}{W(t)} are \eqn{\mathbf{R}}{R} and \eqn{\mathbf{Q}}{Q} +#' and the model is assumed to be written as +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{v}_t}{ y(t) = Z x(t) + a + v(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{w}_t}{ x(t) = B x(t-1) + u + w(t)} +#' If normalize=TRUE, the model is assumed to be written +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{H}\mathbf{v}_t}{ y(t) = Z x(t) + a + Hv(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{G}\mathbf{w}_t}{ x(t) = B x(t-1) + u + Gw(t)} +#' with the variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} +#' equal to \eqn{\mathbf{I}}{I} (identity). +#' +#' `MARSSresiduals.tT` returns the residuals defined as in the first equations. +#' To get the residuals defined as Harvey et al. (1998) define them (second +#' equations), then use `normalize=TRUE`. In that case the unconditional +#' variance of residuals will be \eqn{\mathbf{I}}{I} instead of +#' \eqn{\mathbf{Q}}{Q} and \eqn{\mathbf{R}}{R}. +#' +#' **Missing or left-out data** +#' +#' \eqn{ \textrm{E}[\widehat{\mathcal{E}}_{t}] }{ E[Epsilon(t)] } and +#' \eqn{ \textrm{var}[\widehat{\mathcal{E}}_{t}] }{ var[Epsilon(t)] } are for +#' the distribution across all possible \eqn{\mathbf{X}}{X} and +#' \eqn{\mathbf{Y}}{Y}. We can also compute the expected value and variance +#' conditioned on a specific value of \eqn{\mathbf{Y}}{Y}, the one we observed +#' \eqn{\mathbf{y}^{(1)}}{y(1)} (Holmes 2014). If there are no missing values, +#' this is not very interesting as +#' \eqn{\textrm{E}[\hat{\mathbf{V}}_{t}|\mathbf{y}^{(1)}]=\hat{\mathbf{v}}_{t}}{E[hatV(t)|y(1)] = hatv(t)} +#' and +#' \eqn{\textrm{var}[\hat{\mathbf{V}}_{t}|\mathbf{y}^{(1)}] = 0}{var[hatV(t)|y(1)] = 0}. +#' If we have data that are missing because we left them out, however, +#' \eqn{\textrm{E}[\hat{\mathbf{V}}_{t}|\mathbf{y}^{(1)}]}{E[hatV(t)|y(1)]} +#' and +#' \eqn{\textrm{var}[\hat{\mathbf{V}}_{t}|\mathbf{y}^{(1)}]}{var[hatV(t)|y(1)]} +#' are the values we need to evaluate whether the left-out data are unusual +#' relative to what you expect given the data you did collect. +#' +#' `E.obs.residuals` is the conditional expected value +#' \eqn{\textrm{E}[\hat{\mathbf{V}}|\mathbf{y}^{(1)}]}{E[hatV(t)|y(1)]} +#' (notice small \eqn{\mathbf{y}}{y}). It is +#' \deqn{\textrm{E}[\mathbf{Y}_{t}|\mathbf{y}^{(1)}] - \mathbf{Z}\mathbf{x}_t^T - \mathbf{a} }{ E[Y(t)|y(1)] - Z xtT(t) - a} +#' It is similar to \eqn{\hat{\mathbf{v}}_{t}}{hatv(t)}. The difference is the +#' \eqn{\mathbf{y}}{y} term. +#' \eqn{\textrm{E}[\mathbf{Y}^{(1)}_{t}|\mathbf{y}^{(1)}] }{ E[Y(1)(t)|y(1)] } +#' is \eqn{\mathbf{y}^{(1)}_{t}}{y(1)(t)} for the non-missing values. For the +#' missing values, the value depends on \eqn{\mathbf{R}}{R}. If +#' \eqn{\mathbf{R}}{R} is diagonal, +#' \eqn{\textrm{E}[\mathbf{Y}^{(2)}_{t}|\mathbf{y}^{(1)}] }{ E[Y(2)(t)|y(1)] } +#' is \eqn{\mathbf{Z}\mathbf{x}_t^T + \mathbf{a}}{Z xtT(t) + a} and the +#' expected residual value is 0. If \eqn{\mathbf{R}}{R} is non-diagonal +#' however, it will be non-zero. +#' +#' `var.obs.residuals` is the conditional variance +#' \eqn{\textrm{var}[\hat{\mathbf{V}}|\mathbf{y}^{(1)}]}{var[hatV(t)|y(1)]} +#' (eqn 24 in Holmes (2014)). For the non-missing values, this variance is 0 +#' since +#' \eqn{\hat{\mathbf{V}}|\mathbf{y}^{(1)}}{hatV(t)|y(1)} is a fixed value. For +#' the missing values, +#' \eqn{\hat{\mathbf{V}}|\mathbf{y}^{(1)}}{hatV(t)|y(1)} is not fixed because +#' \eqn{\mathbf{Y}^{(2)}}{Y(2)} is a random variable. For these values, the +#' variance of \eqn{\hat{\mathbf{V}}|\mathbf{y}^{(1)}}{hatV(t)|y(1)} is +#' determined by the variance of \eqn{\mathbf{Y}^{(2)}}{Y(2)} conditioned on +#' \eqn{\mathbf{Y}^{(1)}=\mathbf{y}^{(1)}}{Y(1)=y(1)}. This variance matrix is +#' returned in `var.obs.residuals`. The variance of +#' \eqn{\hat{\mathbf{W}}|\mathbf{y}^{(1)}}{hatW(t)|y(1)} is 0 and thus is not +#' included. +#' +#' The variance +#' \eqn{\textrm{var}[\hat{\mathbf{V}}_{t}|\mathbf{Y}^{(1)}] }{ var[hatV(t)|Y(1)] } +#' (uppercase \eqn{ \mathbf{Y} }{Y}) returned in the 1 to \eqn{n} +#' rows/columns of `var.residuals` may also be of interest depending on what +#' you are investigating with regards to missing values. For example, it may be +#' of interest in a simulation study or cases where you have multiple replicated +#' \eqn{\mathbf{Y}}{Y} data sets. `var.residuals` would allow you to determine +#' if the left-out residuals are unusual with regards to what you would expect +#' for left-out data in that location of the \eqn{\mathbf{Y}}{Y} matrix but not +#' specifically relative to the data you did collect. If \eqn{\mathbf{R}}{R} is +#' non-diagonal and the \eqn{\mathbf{y}^{(1)}}{y(1)} and +#' \eqn{\mathbf{y}^{(2)}}{y(2)} are highly correlated, the variance of +#' \eqn{\textrm{var}[\hat{\mathbf{V}}_{t}|\mathbf{Y}^{(1)}] }{ var[hatV(t)|Y(1)] } +#' and variance of +#' \eqn{\textrm{var}[\hat{\mathbf{V}}_{t}|\mathbf{y}^{(1)}] }{ var[hatV(t)|y(1)] } +#' for the left-out data would be quite different. In the latter, the variance +#' is low because \eqn{\mathbf{y}^{(1)} }{ y(1) } has strong information about +#' \eqn{\mathbf{y}^{(2)} }{ y(2) }. In the former, we integrate over +#' \eqn{\mathbf{Y}^{(1)} }{ Y(1) } and the variance could be high (depending on +#' the parameters). +#' +#' Note, if `Harvey=TRUE` then the rows and columns of `var.residuals` +#' corresponding to missing values will be NA. This is because the Harvey et al. +#' algorithm does not compute the residual variance for missing values. +#' +#' @author Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSresiduals()], [MARSSresiduals.tt1()], [fitted.marssMLE()], [plot.marssMLE()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[c(2, 11), ] +#' fit <- MARSS(dat) +#' +#' # state residuals +#' state.resids1 <- MARSSresiduals(fit, type = "tT")$state.residuals +#' # this is the same as hatx_t-(hatx_{t-1}+u) +#' states <- fit$states +#' state.resids2 <- states[, 2:30] - states[, 1:29] - matrix(coef(fit, type = "matrix")$U, 2, 29) +#' # compare the two +#' cbind(t(state.resids1[, -30]), t(state.resids2)) +#' +#' # normalize the state residuals to a variance of 1 +#' Q <- coef(fit, type = "matrix")$Q +#' state.resids1 <- MARSSresiduals(fit, type = "tT", normalize = TRUE)$state.residuals +#' state.resids2 <- (solve(t(chol(Q))) %*% state.resids2) +#' cbind(t(state.resids1[, -30]), t(state.resids2)) +#' +#' # Cholesky standardized (by joint variance) model & state residuals +#' MARSSresiduals(fit, type = "tT")$std.residuals +#' +#' # Returns residuals in a data frame in long form +#' residuals(fit, type = "tT") +#' +#' @references +#' Harvey, A., S. J. Koopman, and J. Penzer. 1998. Messy time series: a unified +#' approach. Advances in Econometrics 13: 103-144 (see page 112-113). Equation +#' 21 is the Kalman eqns. Eqn 23 and 24 is the backward recursion to compute +#' the smoothations. This function uses the MARSSkf output for eqn 21 and then +#' implements the backwards recursion in equation 23 and equation 24. Pages +#' 120-134 discuss the use of standardized residuals for outlier and structural +#' break detection. +#' +#' de Jong, P. and J. Penzer. 1998. Diagnosing shocks in time series. Journal +#' of the American Statistical Association 93: 796-806. This one shows the same +#' equations; see eqn 6. This paper mentions the scaling based on the inverse of +#' the sqrt (Cholesky decomposition) of the variance-covariance matrix for the +#' residuals (model and state together). This is in the right column, half-way +#' down on page 800. +#' +#' Koopman, S. J., N. Shephard, and J. A. Doornik. 1999. Statistical algorithms +#' for models in state space using SsfPack 2.2. Econometrics Journal 2: 113-166. +#' (see pages 147-148). +#' +#' Harvey, A. and S. J. Koopman. 1992. Diagnostic checking of +#' unobserved-components time series models. Journal of Business & Economic +#' Statistics 4: 377-389. +#' +#' Holmes, E. E. 2014. Computation of standardized residuals for (MARSS) models. +#' Technical Report. arXiv:1411.0045. +#' +#' @export MARSSresiduals.tT <- function(object, Harvey = FALSE, normalize = FALSE, silent = FALSE, fun.kf = c("MARSSkfas", "MARSSkfss")) { # These are the residuals and their variance conditioned on all the data # Harvey=TRUE uses Harvey et al (1998) algorithm to compute these From 7cf98bd90e85a51b3d787adc8df11afd972ed761 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:24:17 +0000 Subject: [PATCH 14/15] Batch 3 (complete): Add MARSSresiduals_tt, MARSSresiduals_tt1 Roxygen2; delete converted Rd files --- R/MARSSresiduals_tt.R | 86 +++++++++++++++++++++++++++ R/MARSSresiduals_tt1.R | 102 +++++++++++++++++++++++++++++++ man/MARSSresiduals_tt1.Rd | 122 -------------------------------------- man/MARSSresiduals_ttt.Rd | 91 ---------------------------- 4 files changed, 188 insertions(+), 213 deletions(-) delete mode 100644 man/MARSSresiduals_tt1.Rd delete mode 100644 man/MARSSresiduals_ttt.Rd diff --git a/R/MARSSresiduals_tt.R b/R/MARSSresiduals_tt.R index 1f88d637..7e74d7e9 100644 --- a/R/MARSSresiduals_tt.R +++ b/R/MARSSresiduals_tt.R @@ -1,3 +1,89 @@ +#' MARSS Contemporaneous Residuals +#' +#' @description +#' Calculates the standardized (or auxiliary) contemporaneous residuals, aka +#' the residuals and their variance conditioned on the data up to time \eqn{t}. +#' Contemporaneous residuals are only for the observations. Not exported. +#' Access this function with `MARSSresiduals(object, type="tt")`. +#' +#' @param object An object of class [marssMLE]. +#' @param method Algorithm to use. Currently only "SS". +#' @param normalize TRUE/FALSE See details. +#' @param silent If TRUE, don't print inversion warnings. +#' @param fun.kf Can be ignored. This will change the Kalman filter/smoother +#' function from the value in `object$fun.kf` if desired. +#' +#' @return +#' A list with the following components: +#' +#' * `model.residuals`: The observed contemporaneous model residuals: data minus +#' the model predictions conditioned on the data 1 to t. A n x T matrix. NAs +#' will appear where the data are missing. +#' * `state.residuals`: All NA. There are no contemporaneous residuals for the +#' states. +#' * `residuals`: The residuals. `model.residuals` are in rows 1:n and +#' `state.residuals` are in rows n+1:n+m. +#' * `var.residuals`: The joint variance of the residuals conditioned on +#' observed data from 1 to t. This only has values in the 1:n,1:n upper block +#' for the model residuals. +#' * `std.residuals`: The Cholesky standardized residuals as a n+m x T matrix. +#' Rows n+1:n+m are all NA. +#' * `mar.residuals`: The marginal standardized residuals as a n+m x T matrix. +#' * `bchol.residuals`: Because state residuals do not exist, this will be +#' equivalent to the Cholesky standardized residuals, `std.residuals`. +#' * `E.obs.residuals`: The expected value of the model residuals conditioned on +#' the observed data 1 to t. Returned as a n x T matrix. +#' * `var.obs.residuals`: The variance of the model residuals conditioned on the +#' observed data. Returned as a n x n x T matrix. For observed data, this will +#' be 0. See [MARSSresiduals.tT()] for a discussion. +#' * `msg`: Any warning messages. +#' +#' @details +#' This function returns the conditional expected value (mean) and variance of +#' the model contemporaneous residuals. 'conditional' means conditioned on the +#' observed data up to time \eqn{t} and a set of parameters. +#' +#' **Model residuals** +#' +#' \eqn{\mathbf{v}_t}{v(t)} is the difference between the data and the +#' predicted data at time \eqn{t} given \eqn{\mathbf{x}_t}{x(t)}: +#' \deqn{ \mathbf{v}_t = \mathbf{y}_t - \mathbf{Z} \mathbf{x}_t - \mathbf{a} - \mathbf{d}\mathbf{d}_{t}}{ v(t) = y(t) - Z x(t) - a - D d(t)} +#' The observed model residuals use the data up to time \eqn{t}: +#' \deqn{ \hat{\mathbf{v}}_t = \mathbf{y}_t - \mathbf{Z}\mathbf{x}_t^{t} - \mathbf{a} - \mathbf{D}\mathbf{d}_{t}}{ hatv(t) = y(t) - Z xtt - a - D d(t)} +#' +#' The conditional variance is: +#' \deqn{ \hat{\Sigma}_t = \mathbf{R}+\mathbf{Z} \mathbf{V}_t^{t} \mathbf{Z}^\top }{hatSigma(t) = R + Z Vtt t(Z)} +#' +#' **Normalized residuals** +#' +#' If `normalize=FALSE`, the model is: +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{v}_t}{ y(t) = Z x(t) + a + v(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{w}_t}{ x(t) = B x(t-1) + u + w(t)} +#' If `normalize=TRUE`: +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{H}\mathbf{v}_t}{ y(t) = Z x(t) + a + Hv(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{G}\mathbf{w}_t}{ x(t) = B x(t-1) + u + Gw(t)} +#' with the variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} +#' equal to \eqn{\mathbf{I}}{I} (identity). +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSresiduals.tT()], [MARSSresiduals.tt1()], [fitted.marssMLE()], [plot.marssMLE()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[c(2, 11), ] +#' fit <- MARSS(dat) +#' +#' # Returns a matrix +#' MARSSresiduals(fit, type = "tt")$std.residuals +#' # Returns a data frame in long form +#' residuals(fit, type = "tt") +#' +#' @references +#' Holmes, E. E. 2014. Computation of standardized residuals for (MARSS) models. +#' Technical Report. arXiv:1411.0045. +#' @export MARSSresiduals.tt <- function(object, method = c("SS"), normalize = FALSE, silent = FALSE, fun.kf = c("MARSSkfas", "MARSSkfss")) { # These are the residuals and their variance conditioned on the data up to time t # state residuals do not exist for this case diff --git a/R/MARSSresiduals_tt1.R b/R/MARSSresiduals_tt1.R index 0c3e8d3b..b41e6a2a 100644 --- a/R/MARSSresiduals_tt1.R +++ b/R/MARSSresiduals_tt1.R @@ -1,3 +1,105 @@ +#' MARSS One-Step-Ahead Residuals +#' +#' @description +#' Calculates the standardized (or auxiliary) one-step-ahead residuals, aka the +#' innovations residuals and their variance. Not exported. Access this function +#' with `MARSSresiduals(object, type="tt1")`. To get the residuals as a data +#' frame in long-form, use [residuals()][residuals.marssMLE] with +#' `type="tt1"`. +#' +#' @param object An object of class [marssMLE]. +#' @param method Algorithm to use. Currently only "SS". +#' @param normalize TRUE/FALSE See details. +#' @param silent If TRUE, don't print inversion warnings. +#' @param fun.kf Can be ignored. This will change the Kalman filter/smoother +#' function from the value in `object$fun.kf` if desired. +#' +#' @return +#' A list with the following components: +#' +#' * `model.residuals`: The observed one-step-ahead model residuals: data minus +#' the model predictions conditioned on the data \eqn{t=1} to \eqn{t-1}. +#' These are termed innovations. A n x T matrix. NAs will appear where the +#' data are missing. +#' * `state.residuals`: The one-step-ahead state residuals +#' \eqn{ \mathbf{x}_{t+1}^{t+1} - \mathbf{B}\mathbf{x}_{t}^t - \mathbf{u} }{ xtt(t+1) - B xtt(t) - u}. +#' Note, state residual at time \eqn{t} is the transition from time \eqn{t=t} +#' to \eqn{t+1}. +#' * `residuals`: The residuals conditioned on the observed data up to time +#' \eqn{t-1}. Returned as a (n+m) x T matrix with `model.residuals` in rows +#' 1 to n and `state.residuals` in rows n+1 to n+m. NAs will appear in rows +#' 1 to n in the places where data are missing. +#' * `var.residuals`: The joint variance of the one-step-ahead residuals. +#' Returned as a n+m x n+m x T matrix. +#' * `std.residuals`: The Cholesky standardized residuals as a n+m x T matrix. +#' This is `residuals` multiplied by the inverse of the lower triangle of the +#' Cholesky decomposition of `var.residuals`. The model standardized residuals +#' associated with the missing data are replaced with NA. +#' * `mar.residuals`: The marginal standardized residuals as a n+m x T matrix. +#' This is `residuals` multiplied by the inverse of the diagonal matrix formed +#' by the square-root of the diagonal of `var.residuals`. The model marginal +#' residuals associated with the missing data are replaced with NA. +#' * `bchol.residuals`: The Block Cholesky standardized residuals as a (n+m) x +#' T matrix. +#' * `E.obs.residuals`: The expected value of the model residuals conditioned on +#' the observed data \eqn{t=1} to \eqn{t-1}. Returned as a n x T matrix. +#' This will be all 0s. Included for completeness. +#' * `var.obs.residuals`: For one-step-ahead residuals, this will be the same +#' as the 1:n, 1:n upper diagonal block in `var.residuals`. Included for +#' completeness and as a code check. +#' * `msg`: Any warning messages. +#' +#' @details +#' This function returns the conditional expected value (mean) and variance of +#' the one-step-ahead residuals. 'conditional' means conditioned on the observed +#' data up to time \eqn{t-1} and a set of parameters. +#' +#' **Model residuals** +#' +#' \eqn{\mathbf{v}_t}{v_t} is the difference between the data and the predicted +#' data at time \eqn{t} given \eqn{\mathbf{x}_t}{x(t)}: +#' \deqn{ \mathbf{v}_t = \mathbf{y}_t - \mathbf{Z} \mathbf{x}_t - \mathbf{a} - \mathbf{D}\mathbf{d}_t}{ v(t) = y(t) - Z x(t) - a - D d(t)} +#' The observed model residuals \eqn{\hat{\mathbf{v}}_t}{hatv(t)} use the data +#' up to time \eqn{t-1}: +#' \deqn{ \hat{\mathbf{v}}_t = \mathbf{y}_t - \mathbf{Z}\mathbf{x}_t^{t-1} - \mathbf{a} - \mathbf{D}\mathbf{d}_t}{ hatv(t) = y(t) - Z xtt1(t) - a - D d(t)} +#' +#' **State residuals** +#' +#' The estimated state residuals: +#' \deqn{ \hat{\mathbf{w}}_{t+1} = \mathbf{x}_{t+1}^{t+1} - \mathbf{B}\mathbf{x}_{t}^t - \mathbf{u} - \mathbf{C}\mathbf{c}_{t+1}}{ hatw(t+1) = xtt(t+1) - B xtt(t) - u - C c(t+1)} +#' +#' **Normalized residuals** +#' +#' If `normalize=FALSE`, the model is: +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{v}_t}{ y(t) = Z x(t) + a + v(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{w}_t}{ x(t) = B x(t-1) + u + w(t)} +#' If `normalize=TRUE`: +#' \deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{H}\mathbf{v}_t}{ y(t) = Z x(t) + a + Hv(t)} +#' \deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{G}\mathbf{w}_t}{ x(t) = B x(t-1) + u + Gw(t)} +#' with the variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} +#' equal to \eqn{\mathbf{I}}{I} (identity). +#' +#' @author +#' Eli Holmes, NOAA, Seattle, USA. +#' +#' @seealso [MARSSresiduals.tT()], [MARSSresiduals.tt()], [fitted.marssMLE()], [plot.marssMLE()] +#' +#' @examples +#' dat <- t(harborSeal) +#' dat <- dat[c(2, 11), ] +#' fit <- MARSS(dat) +#' +#' MARSSresiduals(fit, type = "tt1")$std.residuals +#' residuals(fit, type = "tt1") +#' +#' @references +#' R. H. Shumway and D. S. Stoffer (2006). Section on the calculation of the +#' likelihood of state-space models in Time series analysis and its +#' applications. Springer-Verlag, New York. +#' +#' Holmes, E. E. 2014. Computation of standardized residuals for (MARSS) models. +#' Technical Report. arXiv:1411.0045. +#' @export MARSSresiduals.tt1 <- function(object, method = c("SS"), normalize = FALSE, silent = FALSE, fun.kf = c("MARSSkfas", "MARSSkfss")) { # These are the residuals and their variance conditioned on the data up to time t-1 diff --git a/man/MARSSresiduals_tt1.Rd b/man/MARSSresiduals_tt1.Rd deleted file mode 100644 index e9ee95f9..00000000 --- a/man/MARSSresiduals_tt1.Rd +++ /dev/null @@ -1,122 +0,0 @@ -\name{MARSSresiduals.tt1} -\alias{MARSSresiduals.tt1} - -\title{ MARSS One-Step-Ahead Residuals } -\description{ - Calculates the standardized (or auxiliary) one-step-ahead residuals, aka the innovations residuals and their variance. Not exported. Access this function with \code{MARSSresiduals(object, type="tt1")}. To get the residuals as a data frame in long-form, use \code{\link[=residuals.marssMLE]{residuals}(object, type="tt1")}. -} -\usage{ -MARSSresiduals.tt1(object, method = c("SS"), normalize = FALSE, - silent = FALSE, fun.kf = c("MARSSkfas", "MARSSkfss")) -} -\arguments{ - \item{object}{ An object of class \code{\link{marssMLE}}.} - \item{method}{ Algorithm to use. Currently only "SS". } - \item{normalize}{ TRUE/FALSE See details. } - \item{silent}{ If TRUE, don't print inversion warnings. } - \item{fun.kf}{ Can be ignored. This will change the Kalman filter/smoother function from the value in object$fun.kf if desired. } -} -\value{ -A list with the following components - \item{model.residuals}{ The the observed one-step-ahead model residuals: data minus the model predictions conditioned on the data \eqn{t=1} to \eqn{t-1}. These are termed innovations. A n x T matrix. NAs will appear where the data are missing. } - \item{state.residuals}{ The one-step-ahead state residuals \eqn{ \mathbf{x}_{t+1}^{t+1} - \mathbf{B}\mathbf{x}_{t}^t - \mathbf{u} }{ xtt(t+1) - B xtt(t) - u} -. Note, state residual at time \eqn{t} is the transition from time \eqn{t=t} to \eqn{t+1}. } - \item{residuals}{ The residuals conditioned on the observed data up to time \eqn{t-1}. Returned as a (n+m) x T matrix with \code{model.residuals} in rows 1 to n and \code{state.residuals} in rows n+1 to n+m. NAs will appear in rows 1 to n in the places where data are missing. } - \item{var.residuals}{ The joint variance of the one-step-ahead residuals. Returned as a n+m x n+m x T matrix. } - \item{std.residuals}{ The Cholesky standardized residuals as a n+m x T matrix. This is \code{residuals} multiplied by the inverse of the lower triangle of the Cholesky decomposition of \code{var.residuals}. The model standardized residuals associated with the missing data are replaced with NA. } - \item{mar.residuals}{ The marginal standardized residuals as a n+m x T matrix. This is \code{residuals} multiplied by the inverse of the diagonal matrix formed by the square-root of the diagonal of \code{var.residuals}. The model marginal residuals associated with the missing data are replaced with NA. } - \item{bchol.residuals}{ The Block Cholesky standardized residuals as a (n+m) x T matrix. This is \code{model.residuals} multiplied by the inverse of the lower triangle of the Cholesky decomposition of \code{var.residuals[1:n,1:n,]} and \code{state.residuals} multiplied by the inverse of the lower triangle of the Cholesky decomposition of \code{var.residuals[(n+1):(n+m),(n+1):(n+m),]}.} - \item{E.obs.residuals}{ The expected value of the model residuals conditioned on the observed data \eqn{t=1} to \eqn{t-1}. Returned as a n x T matrix. Because all the data at time \eqn{t} are unobserved for the purpose of estimation (since conditioning is from \eqn{t=1} to \eqn{t-1}), this will be all 0s (unlike the case where we condition on the data from \eqn{t=1} to \eqn{T} or to \eqn{t}). This and \code{var.obs.residuals} are included for completeness since they are returned for \code{\link{MARSSresiduals.tT}()}, but they are not relevant for one-step-ahead residuals. See the discussion there. } - \item{var.obs.residuals}{ For one-step-ahead residuals, this will be the same as the 1:n, 1:n upper diagonal block in \code{var.residuals} since none of the \eqn{t} data affect the residuals at time \eqn{t} (the model residuals are conditioned only on the data up to \eqn{t-1}). This is different for smoothation residuals which are conditioned on the data from \eqn{t=1} to \eqn{T}. This and \code{E.obs.residuals} are included for completeness since they are returned for \code{\link{MARSSresiduals.tT}()}, but they are not relevant for one-step-ahead residuals. See the discussion there. Note, also included as a code check. They are computed differently, but \code{var.obs.residuals} and \code{var.residuals} should always be the same.} - \item{msg}{ Any warning messages. This will be printed unless \code{object$control$trace = -1} (suppress all error messages). } - -} -\details{ - -This function returns the conditional expected value (mean) and variance of the one-step-ahead residuals. 'conditional' means in this context, conditioned on the observed data up to time \eqn{t-1} and a set of parameters. - -\strong{Model residuals} - -\eqn{\mathbf{v}_t}{v_t} is the difference between the data and the predicted data at time \eqn{t} given \eqn{\mathbf{x}_t}{x(t)}: -\deqn{ \mathbf{v}_t = \mathbf{y}_t - \mathbf{Z} \mathbf{x}_t - \mathbf{a} - \mathbf{D}\mathbf{d}_t}{ v(t) = y(t) - Z x(t) - a - D d(t)} -The observed model residuals \eqn{\hat{\mathbf{v}}_t}{hatv(t)} are the difference between the observed data and the predicted data at time \eqn{t} using the fitted model. \code{MARSSresiduals.tt1} fits the model using the data up to time \eqn{t-1}. So -\deqn{ \hat{\mathbf{v}}_t = \mathbf{y}_t - \mathbf{Z}\mathbf{x}_t^{t-1} - \mathbf{a} - \mathbf{D}\mathbf{d}_t}{ hatv(t) = y(t) - Z xtt1(t) - a - D d(t)} -where \eqn{\mathbf{x}_t^{t-1}}{xtt1(t)} is the expected value of \eqn{\mathbf{X}_t}{X(t)} conditioned on the data from $t=1$ to \eqn{t-1} from the Kalman filter. \eqn{\mathbf{y}_t}{y(t)} are your data and missing values will appear as NA. - -\strong{State residuals} - -\eqn{\mathbf{w}_{t+1}}{w(t+1)} are the difference between the state at time \eqn{t+1} and the expected value of the state at time \eqn{t+1} given the state at time \eqn{t}: -\deqn{ \mathbf{w}_{t+1} = \mathbf{x}_{t+1} - \mathbf{B} \mathbf{x}_{t} - \mathbf{u} - \mathbf{C}\mathbf{c}_{t+1}}{ w(t+1) = x(t+1) - B x(t) - u - C c(t+1)} -The estimated state residuals \eqn{\hat{\mathbf{w}}_{t+1}}{hatw(t+1)} are the difference between estimate of \eqn{\mathbf{x}_{t+1}}{x(t+1)} minus the estimate using \eqn{\mathbf{x}_{t}}{x(t)}. -\deqn{ \hat{\mathbf{w}}_{t+1} = \mathbf{x}_{t+1}^{t+1} - \mathbf{B}\mathbf{x}_{t}^t - \mathbf{u} - \mathbf{C}\mathbf{c}_{t+1}}{ hatw(t+1) = xtt(t+1) - B xtt(t) - u - C c(t+1)} -where \eqn{\mathbf{x}_{t+1}^{t+1}}{xtt(t+1)} is the Kalman filter estimate of the states at time \eqn{t+1} conditioned on the data up to time \eqn{t+1} and \eqn{\mathbf{x}_{t}^t}{xtt(t)} is the Kalman filter estimate of the states at time \eqn{t} conditioned on the data up to time \eqn{t}. -The estimated state residuals \eqn{\mathbf{w}_{t+1}}{w(t+1)} are returned in \code{state.residuals} and rows \eqn{n+1} to \eqn{n+m} of \code{residuals}. \code{state.residuals[,t]} is \eqn{\mathbf{w}_{t+1}}{w(t+1)} (notice time subscript difference). There are no NAs in the estimated state residuals (except for the last time step) as an estimate of the state exists whether or not there are associated data. - -\code{res1} and \code{res2} in the code below will be the same. -\preformatted{dat <- t(harborSeal)[2:3,] -TT <- ncol(dat) -fit <- MARSS(dat) -B <- coef(fit, type="matrix")$B -U <- coef(fit, type="matrix")$U -xt <- MARSSkfss(fit)$xtt[,1:(TT-1)] # t 1 to TT-1 -xtp1 <- MARSSkfss(fit)$xtt[,2:TT] # t 2 to TT -res1 <- xtp1 - B \%*\% xt - U \%*\% matrix(1,1,TT-1) -res2 <- MARSSresiduals(fit, type="tt1")$state.residuals -} - -\strong{Joint residual variance} - -In a state-space model, \eqn{\mathbf{X}}{X} and \eqn{\mathbf{Y}}{Y} are stochastic, and the model and state residuals are random variables \eqn{\hat{\mathbf{V}}_t}{hatV(t)} and \eqn{\hat{\mathbf{W}}_{t+1}}{hatW(t+1)}. The joint distribution of \eqn{\hat{\mathbf{V}}_{t}, \hat{\mathbf{W}}_{t+1}}{hatV(t), hatW(t+1)} is the distribution across all the different possible data sets that our MARSS equations with parameters \eqn{\Theta}{Theta} might generate. Denote the matrix of \eqn{\hat{\mathbf{V}}_{t}, \hat{\mathbf{W}}_{t+1}}{hatV(t), hatW(t+1)}, as \eqn{\widehat{\mathcal{E}}_{t}}{Epsilon(t)}. That distribution has an expected value (mean) and variance: -\deqn{ \textrm{E}[\widehat{\mathcal{E}}_t] = 0; \textrm{var}[\widehat{\mathcal{E}}_t] = \hat{\Sigma}_t }{ E[Epsilon(t)] = 0; var[Epsilon(t)] = hatSigma(t)} -Our observed residuals \code{residuals} are one sample from this distribution. -To standardize the observed residuals, we will use \eqn{ \hat{\Sigma}_t }{ hatSigma(t) }. \eqn{ \hat{\Sigma}_t }{ hatSigma(t) } is returned in \code{var.residuals}. Rows/columns 1 to \eqn{n} are the conditional variances of the model residuals and rows/columns \eqn{n+1} to \eqn{n+m} are the conditional variances of the state residuals. The off-diagonal blocks are the covariances between the two types of residuals. For one-step-ahead residuals (unlike smoothation residuals \link{MARSSresiduals.tT}), the covariance is zero. - -\code{var.residuals} returned by this function is the conditional variance of the residuals conditioned on the data up to \eqn{t-1} and the parameter set \eqn{\Theta}{Theta}. The conditional variance for the model residuals is -\deqn{ \hat{\Sigma}_t = \mathbf{R}+\mathbf{Z}_t \mathbf{V}_t^{t-1} \mathbf{Z}_t^\top }{hatSigma(t) = R + Z Vtt1 t(Z)} -where \eqn{\mathbf{V}_t^{t-1}}{Vtt1} is the variance of \eqn{\mathbf{X}_t}{X(t)} conditioned on the data up to time \eqn{t-1}. This is returned by \code{\link{MARSSkf}} in \code{Vtt1}. The innovations variance is also returned in \code{Sigma} from \code{\link{MARSSkf}} and are used in the innovations form of the likelihood calculation. - -\strong{Standardized residuals} - -\code{std.residuals} are Cholesky standardized residuals. These are the residuals multiplied by the inverse of the lower triangle of the Cholesky decomposition of the variance matrix of the residuals: -\deqn{ \hat{\Sigma}_t^{-1/2} \hat{\mathbf{v}}_t}{ hatSigma(t)^{-1/2} hatv(t). } -These residuals are uncorrelated unlike marginal residuals. - -The interpretation of the Cholesky standardized residuals is not straight-forward when the \eqn{\mathbf{Q}}{Q} and \eqn{\mathbf{R}}{R} variance-covariance matrices are non-diagonal. The residuals which were generated by a non-diagonal variance-covariance matrices are transformed into orthogonal residuals in \eqn{\textrm{MVN}(0,\mathbf{I})}{MVN(0,I)} space. For example, if v is 2x2 correlated errors with variance-covariance matrix R. The transformed residuals (from this function) for the i-th row of v is a combination of the row 1 effect and the row 1 effect plus the row 2 effect. So in this case, row 2 of the transformed residuals would not be regarded as solely the row 2 residual but rather how different row 2 is from row 1, relative to expected. If the errors are highly correlated, then the Cholesky standardized residuals can look rather non-intuitive. - -\code{mar.residuals} are the marginal standardized residuals. These are the residuals multiplied by the inverse of the diagonal matrix formed from the square-root of the diagonal of the variance matrix of the residuals: -\deqn{ \textrm{dg}(\hat{\Sigma}_t)^{-1/2} \hat{\mathbf{v}}_t}{ dg(hatSigma(t))^{-1/2} hatv(t)}, where 'dg(A)' is the square matrix formed from the diagonal of A, aka \code{diag(diag(A))}. These residuals will be correlated if the variance matrix is non-diagonal. - -The Block Cholesky standardized residuals are like the Cholesky standardized residuals except that the full variance-covariance matrix is not used, only the variance-covariance matrix for the model or state residuals (respectively) is used for standardization. For the one-step-ahead case, the model and state residuals are independent (unlike in the smoothations case) thus the Cholesky and Block Cholesky standardized residuals will be identical (unlike in the smoothations case). - -\strong{Normalized residuals} - -If \code{normalize=FALSE}, the unconditional variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} are \eqn{\mathbf{R}}{R} and \eqn{\mathbf{Q}}{Q} and the model is assumed to be written as -\deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{v}_t}{ y(t) = Z x(t) + a + v(t)} -\deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{w}_t}{ x(t) = B x(t-1) + u + w(t)} -If normalize=TRUE, the model is assumed to be written -\deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{H}\mathbf{v}_t}{ y(t) = Z x(t) + a + Hv(t)} -\deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{G}\mathbf{w}_t}{ x(t) = B x(t-1) + u + Gw(t)} -with the variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} equal to \eqn{\mathbf{I}}{I} (identity). - -\code{MARSSresiduals} returns the residuals defined as in the first equations. To get the residuals defined as Harvey et al. (1998) define them (second equations), then use \code{normalize=TRUE}. In that case the unconditional variance of residuals will be \eqn{\mathbf{I}}{I} instead of \eqn{\mathbf{Q}}{Q} and \eqn{\mathbf{R}}{R}. Note, that the normalized residuals are not the same as the standardized residuals. In former, the unconditional residuals have a variance of \eqn{\mathbf{I}}{I} while in the latter it is the conditional residuals that have a variance of \eqn{\mathbf{I}}{I}. - -} - -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{MARSSresiduals.tT}()}, \code{\link{MARSSresiduals.tt}()}, \code{\link{fitted.marssMLE}()}, \code{\link{plot.marssMLE}()} } -\examples{ - dat <- t(harborSeal) - dat <- dat[c(2,11),] - fit <- MARSS(dat) - - MARSSresiduals(fit, type="tt1")$std.residuals - residuals(fit, type="tt1") -} -\references{ -R. H. Shumway and D. S. Stoffer (2006). Section on the calculation of the likelihood of state-space models in Time series analysis and its applications. Springer-Verlag, New York. - -Holmes, E. E. 2014. Computation of standardized residuals for (MARSS) models. Technical Report. arXiv:1411.0045. -} - diff --git a/man/MARSSresiduals_ttt.Rd b/man/MARSSresiduals_ttt.Rd deleted file mode 100644 index 7bc17f98..00000000 --- a/man/MARSSresiduals_ttt.Rd +++ /dev/null @@ -1,91 +0,0 @@ -\name{MARSSresiduals.tt} -\alias{MARSSresiduals.tt} - -\title{ MARSS Contemporaneous Residuals } -\description{ - Calculates the standardized (or auxiliary) contemporaneous residuals, aka the residuals and their variance conditioned on the data up to time \eqn{t}. Contemporaneous residuals are only for the observations. Not exported. Access this function with \code{MARSSresiduals(object, type="tt")}. -} -\usage{ -MARSSresiduals.tt(object, method = c("SS"), normalize = FALSE, - silent = FALSE, fun.kf = c("MARSSkfas", "MARSSkfss")) -} -\arguments{ - \item{object}{ An object of class \code{\link{marssMLE}}.} - \item{method}{ Algorithm to use. Currently only "SS". } - \item{normalize}{ TRUE/FALSE See details. } - \item{silent}{ If TRUE, don't print inversion warnings. } - \item{fun.kf}{ Can be ignored. This will change the Kalman filter/smoother function from the value in object$fun.kf if desired. } -} -\value{ -A list with the following components - \item{model.residuals}{ The observed contemporaneous model residuals: data minus the model predictions conditioned on the data 1 to t. A n x T matrix. NAs will appear where the data are missing. } - \item{state.residuals}{ All NA. There are no contemporaneous residuals for the states. } - \item{residuals}{ The residuals. \code{model.residuals} are in rows 1:n and \code{state.residuals} are in rows n+1:n+m. } - \item{var.residuals}{ The joint variance of the residuals conditioned on observed data from 1 to t-. This only has values in the 1:n,1:n upper block for the model residuals. } - \item{std.residuals}{ The Cholesky standardized residuals as a n+m x T matrix. This is \code{residuals} multiplied by the inverse of the lower triangle of the Cholesky decomposition of \code{var.residuals}. The model standardized residuals associated with the missing data are replaced with NA. Note because the contemporaneous state residuals do not exist, rows n+1:n+m are all NA. } - \item{mar.residuals}{ The marginal standardized residuals as a n+m x T matrix. This is \code{residuals} multiplied by the inverse of the diagonal matrix formed by the square-root of the diagonal of \code{var.residuals}. The model marginal residuals associated with the missing data are replaced with NA. } - \item{bchol.residuals}{ Because state residuals do not exist, this will be equivalent to the Cholesky standardized residuals, \code{std.residuals}. } - \item{E.obs.residuals}{ The expected value of the model residuals conditioned on the observed data 1 to t. Returned as a n x T matrix. } - \item{var.obs.residuals}{ The variance of the model residuals conditioned on the observed data. Returned as a n x n x T matrix. For observed data, this will be 0. See \code{\link{MARSSresiduals.tT}()} for a discussion of these residuals and where they might be used. } - \item{msg}{ Any warning messages. This will be printed unless Object$control$trace = -1 (suppress all error messages). } - -} -\details{ - -This function returns the conditional expected value (mean) and variance of the model contemporaneous residuals. 'conditional' means in this context, conditioned on the observed data up to time \eqn{t} and a set of parameters. - -\strong{Model residuals} - -\eqn{\mathbf{v}_t}{v(t)} is the difference between the data and the predicted data at time \eqn{t} given \eqn{\mathbf{x}_t}{x(t)}: -\deqn{ \mathbf{v}_t = \mathbf{y}_t - \mathbf{Z} \mathbf{x}_t - \mathbf{a} - \mathbf{d}\mathbf{d}_{t}}{ v(t) = y(t) - Z x(t) - a - D d(t)} -The observed model residuals \eqn{\hat{\mathbf{v}}_t}{hatv(t)} are the difference between the observed data and the predicted data at time \eqn{t} using the fitted model. \code{MARSSresiduals.tt} fits the model using the data up to time \eqn{t}. So -\deqn{ \hat{\mathbf{v}}_t = \mathbf{y}_t - \mathbf{Z}\mathbf{x}_t^{t} - \mathbf{a} - \mathbf{D}\mathbf{d}_{t}}{ hatv(t) = y(t) - Z xtt - a - D d(t)} -where \eqn{\mathbf{x}_t^{t}}{xtt(t)} is the expected value of \eqn{\mathbf{X}_t}{X(t)} conditioned on the data from 1 to \eqn{t} from the Kalman filter. \eqn{\mathbf{y}_t}{y(t)} are your data and missing values will appear as NA. These will be returned in \code{residuals}. - -\code{var.residuals} returned by the function is the conditional variance of the residuals conditioned on the data up to \eqn{t} and the parameter set \eqn{\Theta}{Theta}. The conditional variance is -\deqn{ \hat{\Sigma}_t = \mathbf{R}+\mathbf{Z} \mathbf{V}_t^{t} \mathbf{Z}^\top }{hatSigma(t) = R + Z Vtt t(Z)} -where \eqn{\mathbf{V}_t^{t}}{Vtt} is the variance of \eqn{\mathbf{X}_t}{X(t)} conditioned on the data up to time \eqn{t}. This is returned by \code{\link{MARSSkfss}} in \code{Vtt}. - -\strong{Standardized residuals} - -\code{std.residuals} are Cholesky standardized residuals. These are the residuals multiplied by the inverse of the lower triangle of the Cholesky decomposition of the variance matrix of the residuals: -\deqn{ \hat{\Sigma}_t^{-1/2} \hat{\mathbf{v}}_t}{ hatSigma(t)^{-1/2} hatv(t) }. -These residuals are uncorrelated unlike marginal residuals. - -The interpretation of the Cholesky standardized residuals is not straight-forward when the \eqn{\mathbf{Q}}{Q} and \eqn{\mathbf{R}}{R} variance-covariance matrices are non-diagonal. The residuals which were generated by a non-diagonal variance-covariance matrices are transformed into orthogonal residuals in \eqn{\textrm{MVN}(0,\mathbf{I})}{MVN(0,I)} space. For example, if v is 2x2 correlated errors with variance-covariance matrix R. The transformed residuals (from this function) for the i-th row of v is a combination of the row 1 effect and the row 1 effect plus the row 2 effect. So in this case, row 2 of the transformed residuals would not be regarded as solely the row 2 residual but rather how different row 2 is from row 1, relative to expected. If the errors are highly correlated, then the Cholesky standardized residuals can look rather non-intuitive. - -\code{mar.residuals} are the marginal standardized residuals. These are the residuals multiplied by the inverse of the diagonal matrix formed from the square-root of the diagonal of the variance matrix of the residuals: -\deqn{ \textrm{dg}(\hat{\Sigma}_t)^{-1/2} \hat{\mathbf{v}}_t}{ dg(hatSigma(t))^{-1/2} hatv(t)}, where 'dg(A)' is the square matrix formed from the diagonal of A, aka \code{diag(diag(A))}. These residuals will be correlated if the variance matrix is non-diagonal. - -\strong{Normalized residuals} - -If \code{normalize=FALSE}, the unconditional variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} are \eqn{\mathbf{R}}{R} and \eqn{\mathbf{Q}}{Q} and the model is assumed to be written as -\deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{v}_t}{ y(t) = Z x(t) + a + v(t)} -\deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{w}_t}{ x(t) = B x(t-1) + u + w(t)} -If normalize=TRUE, the model is assumed to be written -\deqn{\mathbf{y}_t = \mathbf{Z} \mathbf{x}_t + \mathbf{a} + \mathbf{H}\mathbf{v}_t}{ y(t) = Z x(t) + a + Hv(t)} -\deqn{\mathbf{x}_t = \mathbf{B} \mathbf{x}_{t-1} + \mathbf{u} + \mathbf{G}\mathbf{w}_t}{ x(t) = B x(t-1) + u + Gw(t)} -with the variance of \eqn{\mathbf{V}_t}{V(t)} and \eqn{\mathbf{W}_t}{W(t)} equal to \eqn{\mathbf{I}}{I} (identity). - -\code{MARSSresiduals()} returns the residuals defined as in the first equations. To get normalized residuals (second equation) as used in Harvey et al. (1998), then use \code{normalize=TRUE}. In that case the unconditional variance of residuals will be \eqn{\mathbf{I}}{I} instead of \eqn{\mathbf{R}}{R} and \eqn{\mathbf{Q}}{Q}. Note, that the normalized residuals are not the same as the standardized residuals. In former, the unconditional residuals have a variance of \eqn{\mathbf{I}}{I} while in the latter it is the conditional residuals that have a variance of \eqn{\mathbf{I}}{I}. - -} - -\author{ - Eli Holmes, NOAA, Seattle, USA. -} -\seealso{ \code{\link{MARSSresiduals.tT}()}, \code{\link{MARSSresiduals.tt1}()}, \code{\link{fitted.marssMLE}()}, \code{\link{plot.marssMLE}()} } -\examples{ - dat <- t(harborSeal) - dat <- dat[c(2,11),] - fit <- MARSS(dat) - - # Returns a matrix - MARSSresiduals(fit, type="tt")$std.residuals - # Returns a data frame in long form - residuals(fit, type="tt") -} -\references{ -Holmes, E. E. 2014. Computation of standardized residuals for (MARSS) models. Technical Report. arXiv:1411.0045. -} - From ed457bba19bd38e32aba4f4c8b768cf9af1eb5b0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 01:25:16 +0000 Subject: [PATCH 15/15] Batch 3 finish: Convert MARSSsimulate, MARSSvectorizeparam to Roxygen2 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- R/MARSSsimulate.R | 52 ++++++++++++++++++++++++++++++++++++++ R/MARSSvectorizeparam.R | 32 +++++++++++++++++++++++ man/MARSSsimulate.Rd | 50 ------------------------------------ man/MARSSvectorizeparam.Rd | 34 ------------------------- 4 files changed, 84 insertions(+), 84 deletions(-) delete mode 100644 man/MARSSsimulate.Rd delete mode 100644 man/MARSSvectorizeparam.Rd diff --git a/R/MARSSsimulate.R b/R/MARSSsimulate.R index 3ed7a519..f05e50ee 100644 --- a/R/MARSSsimulate.R +++ b/R/MARSSsimulate.R @@ -3,6 +3,58 @@ # Parametrically simulates from a MARSS parameter list # Only works for marss form. marxss form needs to be converted to marss before this will work. ####################################################################################################### +#' Simulate Data from a MARSS Model +#' +#' Generates simulated data from a MARSS model with specified parameter +#' estimates. This is a base function in the [MARSS-package]. +#' +#' Optional argument `miss.loc` is an array of dimensions n x tSteps x nsim, +#' specifying where to put missing values in the simulated data. If missing, +#' this would be constructed using `MLEobj$marss$data`. If the locations of the +#' missing values are the same for all simulations, `miss.loc` can be a matrix +#' of `dim=c(n, tSteps)` (the original data for example). The default, if +#' `miss.loc` is left off, is that there are no missing values even if +#' `MLEobj$marss$data` has missing values. +#' +#' @param object A fitted [marssMLE] object, as output by [MARSS()]. +#' @param tSteps Number of time steps in each simulation. If left off, it is +#' taken to be consistent with `MLEobj`. +#' @param nsim Number of simulated data sets to generate. +#' @param silent Suppresses progress bar. +#' @param miss.loc Optional matrix specifying where to put missing values. See +#' Details. +#' +#' @return A list with the following components: +#' +#' * `sim.states`: Array (dim m x tSteps x nsim) of state processes simulated +#' from parameter estimates. m is the number of states (rows in X). +#' * `sim.data`: Array (dim n x tSteps x nsim) of data simulated from parameter +#' estimates. n is the number of rows of data (Y). +#' * `MLEobj`: The [marssMLE] object from which the data were simulated. +#' * `miss.loc`: Matrix identifying where missing values were placed. It should +#' be exactly the same dimensions as the data matrix. The location of NAs in +#' the miss.loc matrix indicate where the missing values are. +#' * `tSteps`: Number of time steps in each simulation. +#' * `nsim`: Number of simulated data sets generated. +#' +#' @author Eli Holmes and Eric Ward, NOAA, Seattle, USA. +#' +#' @seealso [marssMODEL], [marssMLE], [MARSSboot()] +#' +#' @examples +#' d <- harborSeal[, c(2, 11)] +#' dat <- t(d) +#' fit <- MARSS(dat) +#' +#' # simulate data that are the +#' # same length as original data and no missing data +#' sim.obj <- MARSSsimulate(fit, tSteps = dim(d)[1], nsim = 5) +#' +#' # simulate data that are the +#' # same length as original data and have missing data in the same location +#' sim.obj <- MARSSsimulate(fit, tSteps = dim(d)[1], nsim = 5, miss.loc = dat) +#' @export + simulate.marssMLE <- function(object, nsim = 1, seed, ..., tSteps = NULL, silent = TRUE, miss.loc = NULL) { MARSSsimulate(object, tSteps = tSteps, nsim = nsim, silent = silent, miss.loc = miss.loc) } diff --git a/R/MARSSvectorizeparam.R b/R/MARSSvectorizeparam.R index c2ea1652..6bafa271 100644 --- a/R/MARSSvectorizeparam.R +++ b/R/MARSSvectorizeparam.R @@ -2,6 +2,38 @@ # MARSSvectorizeparam function # Returns a vector of the ESTIMATED parameters or if vector passed in, that is put into list form for MLEobj$marss ####################################################################################################### +#' Vectorize or Replace the par List +#' +#' Converts `MLEobj[["what"]]` to a vector or assigns a vector to +#' `MLEobj[["what"]]`. This is a utility function in the [MARSS-package] for +#' [marssMODEL] objects of form="marss" and is not exported. Users achieve this +#' functionality with [coef.marssMLE]. +#' +#' Utility function to generate parameter vectors for optimization functions, +#' and to set `MLEobj[[what]]` using a vector of values. The function bases the +#' unlisting and naming order on `names(MLEobj$marss$fixed)`. Appends matrix +#' name to the row names in the par list. +#' +#' @param MLEobj An object of class [marssMLE]. +#' @param parvec NA or a vector. See Value. +#' @param what What part of the MLEobj is being replaced or vectorized. Need to +#' be a par list. +#' +#' @return If parvec=NA, a vector of the elements of the `what` element. +#' Otherwise, a [marssMLE] object with `MLEobj[["what"]]` set by parvec. +#' +#' @author Eli Holmes and Kellie Wills, NOAA, Seattle, USA. +#' +#' @seealso [marssMLE] +#' +#' @examples +#' dat <- t(harborSealWA) +#' dat <- dat[2:4, ] +#' kem <- MARSS(dat) +#' paramvec <- MARSS:::MARSSvectorizeparam(kem) +#' paramvec +#' @keywords internal + MARSSvectorizeparam <- function(MLEobj, parvec = NA, what = "par") { # This helper function ONLY FOR marssMODEL form=marss!! # if parvec=NA) returns a vector version of all the estimated parameters (for use in say optim) from a mssm model diff --git a/man/MARSSsimulate.Rd b/man/MARSSsimulate.Rd deleted file mode 100644 index 2fbf383b..00000000 --- a/man/MARSSsimulate.Rd +++ /dev/null @@ -1,50 +0,0 @@ -\name{MARSSsimulate} -\alias{MARSSsimulate} -\alias{simulate.marssMLE} -\title{ Simulate Data from a MARSS Model } -\description{ - Generates simulated data from a MARSS model with specified parameter estimates. This is a base function in the \code{\link{MARSS-package}}. -} -\usage{ -MARSSsimulate(object, tSteps = NULL, nsim = 1, silent = TRUE, - miss.loc = NULL) -} -\arguments{ - \item{object}{ A fitted \code{\link{marssMLE}} object, as output by \code{\link{MARSS}()}. } - \item{tSteps}{ Number of time steps in each simulation. If left off, it is taken to be consistent with \code{MLEobj}.} - \item{nsim}{ Number of simulated data sets to generate. } - \item{silent}{ Suppresses progress bar. } - \item{miss.loc}{ Optional matrix specifying where to put missing values. See Details. } -} -\details{ - Optional argument \code{miss.loc} is an array of dimensions n x tSteps x nsim, specifying where to put missing values - in the simulated data. If missing, this would be constructed using \code{MLEobj$marss$data}. If the locations of the missing values are the same for all simulations, \code{miss.loc} can be a matrix of \code{dim=c(n, tSteps)} (the original data for example). The default, if \code{miss.loc} is left off, is that there are no missing values even if \code{MLEobj$marss$data} has missing values. -} -\value{ - \item{sim.states}{ Array (dim m x tSteps x nsim) of state processes simulated from parameter estimates. m is the number of states (rows in X).} - \item{sim.data}{ Array (dim n x tSteps x nsim) of data simulated from parameter estimates. n is the number of rows of data (Y).} - \item{MLEobj}{ The \code{\link{marssMLE}} object from which the data were simulated. } - \item{miss.loc}{ Matrix identifying where missing values were placed. It should be exactly the same dimensions as the data matrix. The location of NAs in the miss.loc matrix indicate where the missing values are. } - \item{tSteps}{ Number of time steps in each simulation. } - \item{nsim}{ Number of simulated data sets generated. } -} -\author{ - Eli Holmes and Eric Ward, NOAA, Seattle, USA. -} -\seealso{ - \code{\link{marssMODEL}}, \code{\link{marssMLE}}, \code{\link{MARSSboot}()} -} -\examples{ -d <- harborSeal[, c(2, 11)] -dat <- t(d) -fit <- MARSS(dat) - -# simulate data that are the -# same length as original data and no missing data -sim.obj <- MARSSsimulate(fit, tSteps = dim(d)[1], nsim = 5) - -# simulate data that are the -# same length as original data and have missing data in the same location -sim.obj <- MARSSsimulate(fit, tSteps = dim(d)[1], nsim = 5, miss.loc = dat) -} - diff --git a/man/MARSSvectorizeparam.Rd b/man/MARSSvectorizeparam.Rd deleted file mode 100644 index 94cb9716..00000000 --- a/man/MARSSvectorizeparam.Rd +++ /dev/null @@ -1,34 +0,0 @@ -\name{MARSSvectorizeparam} -\alias{MARSSvectorizeparam} -\keyword{internal} - -\title{ Vectorize or Replace the par List } -\description{ - Converts \code{MLEobj[["what"]]} to a vector or assigns a vector to \code{MLEobj[["what"]]}. This is a utility function in the \code{\link{MARSS-package}} for \code{\link{marssMODEL}} objects of form="marss" and is not exported. Users achieve this functionality with \code{\link[=coef.marssMLE]{coef}}. -} -\usage{ -MARSSvectorizeparam(MLEobj, parvec = NA, what = "par") -} -\arguments{ - \item{MLEobj}{ An object of class \code{\link{marssMLE}}. } - \item{parvec}{ NA or a vector. See Value. } - \item{what}{ What part of the MLEobj is being replaced or vectorized. Need to be a par list. } -} -\details{ - Utility function to generate parameter vectors for optimization functions, and to set \code{MLEobj[[what]]} using a vector of values. The function bases the unlisting and naming order on \code{names(MLEobj$marss$fixed)}. Appends matrix name to the row names in the par list. -} -\value{ - If parvec=NA, a vector of the elements of the \code{what} element. Otherwise, a \code{\link{marssMLE}} object with \code{MLEobj[["what"]]} set by parvec. -} -\author{ - Eli Holmes and Kellie Wills, NOAA, Seattle, USA. -} -\seealso{ \code{\link{marssMLE}} } -\examples{ -dat <- t(harborSealWA) -dat <- dat[2:4, ] -kem <- MARSS(dat) -paramvec <- MARSS:::MARSSvectorizeparam(kem) -paramvec -} -