fit.model.Rd
\name{fit.model}
\alias{fit.model}
%- Also NEED an '\alias' for EACH other topic documented here.
\title{Fitting of parametric models using summary statistics}

\description{
Fits complex parametric models with intractable likelihood using the method proposed by Cox and Kartsonaki (2012).
%%  ~~ A concise (1-5 lines) description of what the function does. ~~
}
\usage{
fit.model(p, q, n, r, starting_values, h_vector, data_true, sim_data, features, n_iter,
print_results = TRUE, variances = TRUE)
}
%- maybe also 'usage' for other objects documented here.
\arguments{
\item{p}{Number of parameters to be estimated.}
\item{q}{Number of features / summary statistics.}
\item{n}{Sample size. Usually equal to the number of observations in the data (\code{data_true}).}
\item{r}{Number of simulations to be run at each design point, in each iteration.}
\item{starting_values}{A vector of starting values for the parameter vector.}
\item{h_vector}{A vector of spacings \code{h}.}
\item{data_true}{The dataset.}
\item{sim_data}{A function which simulates data using the model to be fitted.}
\item{features}{A function which calculates the features / summary statistics.}
\item{n_iter}{Number of iterations of the algorithm to be performed.}
\item{print_results}{If \code{TRUE}, the estimates of the parameters are printed at each iteration.}
\item{variances}{If \code{TRUE}, the covariance matrix of the estimates of the parameters at each iteration are saved into a list. If \code{FALSE}, only that of the estimates obtained at the last iteration is obtained.}
}

\details{
Function \code{sim_data} should simulate from the model, taking as arguments the sample size and the parameter vector.
Function \code{features} must take as an argument the simulated data generated by \code{sim_data} and calculate the features / summary statistics. The format of the dataset and the simulated data should be the same and should match the format needed by the function \code{features}. Function \code{features} must return a vector of length \code{q}.

%%  ~~ If necessary, more details than the description above ~~
}
\value{
\item{estimates}{The estimates of the parameters.}
\item{var_estimates}{The covariance matrix of the final estimates.}
\item{L}{The matrix of coefficients L.}
\item{sigma}{The covariance matrix of the features.}
\item{zbar}{The average values of the simulated features at each design point.}
\item{z_D}{The values of the features calculated from the data.}
\item{ybar}{The linear combinations of the simulated features at each design point.}
\item{y_D}{The linear combinations of the features calculated from the data.}
}
\references{
Cox, D. R. and Kartsonaki, C. (2012). The fitting of complex parametric models. \emph{Biometrika}, \bold{99} (3): 741--747.
}
\author{Christiana Kartsonaki}

%\note{
%%  ~~further notes~~
%}

%\seealso{
%}
\examples{
# estimate the mean of a N(2, 1) distribution

sim_function <- function(n, mu) {
rnorm(n, unlist(mu), 1)
}

features_function <- function(data) {
a <- median(data)
b <- sum(data) - (min(data) + max(data))
c <- (min(data) + max(data)) / 2
return(c(a, b, c))
}

fit1 <- fit.model(p = 1, q = 3, n = 100, r = 100, starting_values = 5, h_vector = 0.1,
data_true = rnorm(100, 2, 1), sim_data = sim_function, features = features_function,
n_iter = 50, print_results = TRUE, variances = TRUE)
}

% Add one or more standard keywords, see file 'KEYWORDS' in the
% R documentation directory.
%\keyword{ ~kwd1 }
%\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line