% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/seasonal_composite.R
\name{composite_seasonal}
\alias{composite_seasonal}
\title{Combine multi-season survey results into a composite suitability score}
\usage{
composite_seasonal(
  surveys,
  method = c("min", "mean", "prob"),
  prob_threshold = 0.5,
  cell_deg = 0.001,
  verbose = TRUE
)
}
\arguments{
\item{surveys}{Named list of dataframes from \code{\link[=predict_oyster]{predict_oyster()}}. Each must
have \code{lat}, \code{lon}, and \code{suitability} columns. Names are used as season
labels (e.g. \code{list(spring = r1, summer = r2, autumn = r3)}).}

\item{method}{Character. One of \code{"min"}, \code{"mean"}, \code{"prob"} (default \code{"min"}).}

\item{prob_threshold}{Numeric [0,1]. Suitability threshold used when
\code{method = "prob"} (default 0.5).}

\item{cell_deg}{Numeric. Spatial tolerance in decimal degrees for matching
cells across surveys (default 0.001).}

\item{verbose}{Logical. Print summary (default TRUE).}
}
\value{
A dataframe with columns: \code{lat}, \code{lon}, \code{suitability_composite},
\code{suitability_class}, \code{n_seasons_present}, one \verb{suit_<season>} column per
input survey, and \code{suit_range} (max - min across seasons).
}
\description{
Oysters are permanent residents; a location is only truly suitable if
conditions are adequate year-round. \code{composite_seasonal()} takes a named
list of \code{predict_oyster()} result dataframes (one per season or survey
visit) and produces a single composite dataframe with one row per spatial
cell, summarising suitability across all input surveys.

\strong{Composite methods:}
\itemize{
\item \code{"min"} (default) -- most conservative; a location must be suitable in
\emph{every} season to score well. Best for regulatory site selection.
\item \code{"mean"} -- average across seasons. Good for monitoring trend summaries.
\item \code{"prob"} -- fraction of seasons with suitability >= \code{prob_threshold}.
Useful when surveys are irregularly spaced or some seasons are missing.
}

Spatial matching uses a grid cell tolerance of \code{cell_deg} decimal degrees
(default 0.001 approx. 111 m). Cells not present in all seasons are flagged in
\code{n_seasons_present}.
}
\examples{
\donttest{
spring <- predict_oyster(survey_spring, "ostrea_edulis")
summer <- predict_oyster(survey_summer, "ostrea_edulis")
autumn <- predict_oyster(survey_autumn, "ostrea_edulis")

composite <- composite_seasonal(
  surveys = list(spring = spring, summer = summer, autumn = autumn),
  method  = "min"
)

generate_report(composite, "composite_report.html",
                title = "Year-round Suitability Assessment")
}
}
