From: Nathan TeBlunthuis Date: Wed, 1 Mar 2023 18:39:35 +0000 (-0800) Subject: pass through optimization parameters X-Git-Url: https://code.communitydata.science/ml_measurement_error_public.git/commitdiff_plain/ce6d12d4e6955ba501c9b7ca6715646cf52a5815?ds=inline pass through optimization parameters --- diff --git a/simulations/measerr_methods.R b/simulations/measerr_methods.R index 92309ed..98ab28d 100644 --- a/simulations/measerr_methods.R +++ b/simulations/measerr_methods.R @@ -23,7 +23,7 @@ likelihood.logistic <- function(model.params, outcome, model.matrix){ } ## outcome_formula <- y ~ x + z; proxy_formula <- w_pred ~ y + x + z + x:z + x:y + z:y -measerr_mle_dv <- function(df, outcome_formula, outcome_family=binomial(link='logit'), proxy_formula, proxy_family=binomial(link='logit'),method='optim'){ +measerr_mle_dv <- function(df, outcome_formula, outcome_family=binomial(link='logit'), proxy_formula, proxy_family=binomial(link='logit'),maxit=1e6, method='optim'){ df.obs <- model.frame(outcome_formula, df) proxy.model.matrix <- model.matrix(proxy_formula, df) proxy.variable <- all.vars(proxy_formula)[1] @@ -106,7 +106,7 @@ measerr_mle_dv <- function(df, outcome_formula, outcome_family=binomial(link='lo names(start) <- params if(method=='optim'){ - fit <- optim(start, fn = nll, lower=lower, method='L-BFGS-B', hessian=TRUE, control=list(maxit=1e6)) + fit <- optim(start, fn = nll, lower=lower, method=optim_method, hessian=TRUE, control=list(maxit=maxit)) } else { quoted.names <- gsub("[\\(\\)]",'',names(start)) print(quoted.names) @@ -115,13 +115,13 @@ measerr_mle_dv <- function(df, outcome_formula, outcome_family=binomial(link='lo measerr_mle_nll <- eval(parse(text=text)) names(start) <- quoted.names names(lower) <- quoted.names - fit <- mle2(minuslogl=measerr_mle_nll, start=start, lower=lower, parnames=params,control=list(maxit=1e6),method='L-BFGS-B') + fit <- mle2(minuslogl=measerr_mle_nll, start=start, lower=lower, parnames=params,control=list(maxit=maxit),method=optim_method) } return(fit) } -measerr_mle <- function(df, outcome_formula, outcome_family=gaussian(), proxy_formula, proxy_family=binomial(link='logit'), truth_formula, truth_family=binomial(link='logit'),method='optim'){ +measerr_mle <- function(df, outcome_formula, outcome_family=gaussian(), proxy_formula, proxy_family=binomial(link='logit'), truth_formula, truth_family=binomial(link='logit'),method='optim', maxit=1e6, optim_method='L-BFGS-B'){ df.obs <- model.frame(outcome_formula, df) response.var <- all.vars(outcome_formula)[1] @@ -240,7 +240,7 @@ measerr_mle <- function(df, outcome_formula, outcome_family=gaussian(), proxy_fo names(start) <- params if(method=='optim'){ - fit <- optim(start, fn = measerr_mle_nll, lower=lower, method='L-BFGS-B', hessian=TRUE, control=list(maxit=1e6)) + fit <- optim(start, fn = measerr_mle_nll, lower=lower, method=optim_method, hessian=TRUE, control=list(maxit=maxit)) } else { # method='mle2' quoted.names <- gsub("[\\(\\)]",'',names(start)) @@ -250,7 +250,7 @@ measerr_mle <- function(df, outcome_formula, outcome_family=gaussian(), proxy_fo measerr_mle_nll_mle <- eval(parse(text=text)) names(start) <- quoted.names names(lower) <- quoted.names - fit <- mle2(minuslogl=measerr_mle_nll_mle, start=start, lower=lower, parnames=params,control=list(maxit=1e6),method='L-BFGS-B') + fit <- mle2(minuslogl=measerr_mle_nll_mle, start=start, lower=lower, parnames=params,control=list(maxit=maxit),method=optim_method) } return(fit)