createControl creates a Cyclops control object for use with fitCyclopsModel.

createControl(
  maxIterations = 1000,
  tolerance = 1e-06,
  convergenceType = "gradient",
  cvType = "auto",
  fold = 10,
  lowerLimit = 0.01,
  upperLimit = 20,
  gridSteps = 10,
  cvRepetitions = 1,
  minCVData = 100,
  noiseLevel = "silent",
  threads = 1,
  seed = NULL,
  resetCoefficients = FALSE,
  startingVariance = -1,
  useKKTSwindle = FALSE,
  tuneSwindle = 10,
  selectorType = "auto",
  initialBound = 2,
  maxBoundCount = 5,
  algorithm = "ccd"
)

Arguments

maxIterations

Integer: maximum iterations of Cyclops to attempt before returning a failed-to-converge error

tolerance

Numeric: maximum relative change in convergence criterion from successive iterations to achieve convergence

convergenceType

String: name of convergence criterion to employ (described in more detail below)

cvType

String: name of cross validation search. Option "auto" selects an auto-search following BBR. Option "grid" selects a grid-search cross validation

fold

Numeric: Number of random folds to employ in cross validation

lowerLimit

Numeric: Lower prior variance limit for grid-search

upperLimit

Numeric: Upper prior variance limit for grid-search

gridSteps

Numeric: Number of steps in grid-search

cvRepetitions

Numeric: Number of repetitions of X-fold cross validation

minCVData

Numeric: Minimum number of data for cross validation

noiseLevel

String: level of Cyclops screen output ("silent", "quiet", "noisy")

threads

Numeric: Specify number of CPU threads to employ in cross-validation; default = 1 (auto = -1)

seed

Numeric: Specify random number generator seed. A null value sets seed via Sys.time.

resetCoefficients

Logical: Reset all coefficients to 0 between model fits under cross-validation

startingVariance

Numeric: Starting variance for auto-search cross-validation; default = -1 (use estimate based on data)

useKKTSwindle

Logical: Use the Karush-Kuhn-Tucker conditions to limit search

tuneSwindle

Numeric: Size multiplier for active set

selectorType

String: name of exchangeable sampling unit. Option "byPid" selects entire strata. Option "byRow" selects single rows. If set to "auto", "byRow" will be used for all models except conditional models where the average number of rows per stratum is smaller than the number of strata.

initialBound

Numeric: Starting trust-region size

maxBoundCount

Numeric: Maximum number of tries to decrease initial trust-region size

algorithm

String: name of fitting algorithm to employ; default is ccd

Todo: Describe convegence types

Value

A Cyclops control object of class inheriting from "cyclopsControl" for use with fitCyclopsModel.

Examples

#Generate some simulated data:
sim <- simulateCyclopsData(nstrata = 1, nrows = 1000, ncovars = 2, eCovarsPerRow = 0.5, 
                           model = "poisson")
#> Sparseness = 75.6 %
cyclopsData <- convertToCyclopsData(sim$outcomes, sim$covariates, modelType = "pr", 
                                    addIntercept = TRUE)
#> Sorting covariates by covariateId and rowId

#Define the prior and control objects to use cross-validation for finding the 
#optimal hyperparameter:
prior <- createPrior("laplace", exclude = 0, useCrossValidation = TRUE)
control <- createControl(cvType = "auto", noiseLevel = "quiet")

#Fit the model
fit <- fitCyclopsModel(cyclopsData,prior = prior, control = control)  
#> Using cross-validation selector type byRow
#> Performing 10-fold cross-validation [seed = 1698789247] with data partitions of sizes 100 100 100 100 100 100 100 100 100 100
#> Using 1 thread(s)
#> Starting var = 0.244 (default)
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #1 Rep #1 pred log like = 103.184
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #2 Rep #1 pred log like = 130.249
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #3 Rep #1 pred log like = 160.028
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #4 Rep #1 pred log like = 151.655
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #5 Rep #1 pred log like = 175.354
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #6 Rep #1 pred log like = 161.803
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #7 Rep #1 pred log like = 130.623
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #8 Rep #1 pred log like = 137.887
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #9 Rep #1 pred log like = 173.734
#> Running at Laplace(2.86299) None  Grid-point #1 at 0.244 	Fold #10 Rep #1 pred log like = 190.477
#> AvgPred = 151.499 with stdev = 24.8369
#> Completed at 0.244
#> Next point at 2.44 with value 0 and continue = 1
#> search[ 0.244 ] = 151.499(24.8369)
#> 
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #1 Rep #1 pred log like = 103.166
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #2 Rep #1 pred log like = 130.248
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #3 Rep #1 pred log like = 160.03
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #4 Rep #1 pred log like = 151.647
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #5 Rep #1 pred log like = 175.309
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #6 Rep #1 pred log like = 161.801
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #7 Rep #1 pred log like = 130.578
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #8 Rep #1 pred log like = 137.837
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #9 Rep #1 pred log like = 173.718
#> Running at Laplace(0.905357) None  Grid-point #2 at 2.44 	Fold #10 Rep #1 pred log like = 190.449
#> AvgPred = 151.478 with stdev = 24.8369
#> Completed at 2.44
#> Next point at 0.0244 with value 0 and continue = 1
#> search[ 0.244 ] = 151.499(24.8369)
#> search[ 2.44 ] = 151.478(24.8369)
#> 
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #1 Rep #1 pred log like = 103.24
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #2 Rep #1 pred log like = 130.205
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #3 Rep #1 pred log like = 160.006
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #4 Rep #1 pred log like = 151.671
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #5 Rep #1 pred log like = 175.49
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #6 Rep #1 pred log like = 161.794
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #7 Rep #1 pred log like = 130.755
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #8 Rep #1 pred log like = 138.031
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #9 Rep #1 pred log like = 173.692
#> Running at Laplace(9.05357) None  Grid-point #3 at 0.0244 	Fold #10 Rep #1 pred log like = 190.557
#> AvgPred = 151.544 with stdev = 24.8316
#> Completed at 0.0244
#> Next point at 0.00244 with value 0 and continue = 1
#> search[ 0.0244 ] = 151.544(24.8316)
#> search[ 0.244 ] = 151.499(24.8369)
#> search[ 2.44 ] = 151.478(24.8369)
#> 
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #1 Rep #1 pred log like = 103.378
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #2 Rep #1 pred log like = 130.133
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #3 Rep #1 pred log like = 159.943
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #4 Rep #1 pred log like = 151.618
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #5 Rep #1 pred log like = 175.676
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #6 Rep #1 pred log like = 161.739
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #7 Rep #1 pred log like = 131.127
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #8 Rep #1 pred log like = 137.975
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #9 Rep #1 pred log like = 173.61
#> Running at Laplace(28.6299) None  Grid-point #4 at 0.00244 	Fold #10 Rep #1 pred log like = 190.596
#> AvgPred = 151.579 with stdev = 24.7953
#> Completed at 0.00244
#> Next point at 0.000244 with value 0 and continue = 1
#> search[ 0.00244 ] = 151.579(24.7953)
#> search[ 0.0244 ] = 151.544(24.8316)
#> search[ 0.244 ] = 151.499(24.8369)
#> search[ 2.44 ] = 151.478(24.8369)
#> 
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #1 Rep #1 pred log like = 103.378
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #2 Rep #1 pred log like = 130.133
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #3 Rep #1 pred log like = 159.943
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #4 Rep #1 pred log like = 151.618
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #5 Rep #1 pred log like = 175.676
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #6 Rep #1 pred log like = 161.739
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #7 Rep #1 pred log like = 131.206
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #8 Rep #1 pred log like = 137.975
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #9 Rep #1 pred log like = 173.61
#> Running at Laplace(90.5357) None  Grid-point #5 at 0.000244 	Fold #10 Rep #1 pred log like = 190.596
#> AvgPred = 151.587 with stdev = 24.7888
#> Completed at 0.000244
#> Next point at 2.44e-05 with value 0 and continue = 1
#> search[ 0.000244 ] = 151.587(24.7888)
#> search[ 0.00244 ] = 151.579(24.7953)
#> search[ 0.0244 ] = 151.544(24.8316)
#> search[ 0.244 ] = 151.499(24.8369)
#> search[ 2.44 ] = 151.478(24.8369)
#> 
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #1 Rep #1 pred log like = 103.378
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #2 Rep #1 pred log like = 130.133
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #3 Rep #1 pred log like = 159.943
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #4 Rep #1 pred log like = 151.618
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #5 Rep #1 pred log like = 175.676
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #6 Rep #1 pred log like = 161.739
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #7 Rep #1 pred log like = 131.206
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #8 Rep #1 pred log like = 137.975
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #9 Rep #1 pred log like = 173.61
#> Running at Laplace(286.299) None  Grid-point #6 at 2.44e-05 	Fold #10 Rep #1 pred log like = 190.596
#> AvgPred = 151.587 with stdev = 24.7888
#> Completed at 2.44e-05
#> Next point at 1.62865e-05 with value 151.591 and continue = 0
#> search[ 2.44e-05 ] = 151.587(24.7888)
#> search[ 0.000244 ] = 151.587(24.7888)
#> search[ 0.00244 ] = 151.579(24.7953)
#> search[ 0.0244 ] = 151.544(24.8316)
#> search[ 0.244 ] = 151.499(24.8369)
#> search[ 2.44 ] = 151.478(24.8369)
#> 
#> 
#> Maximum predicted log likelihood (151.591) estimated at:
#> 	1.62865e-05 (variance)
#> 	350.43 (lambda)
#> 
#> Fitting model at optimal hyperparameter
#> Using prior: Laplace(350.43) None 

#Find out what the optimal hyperparameter was:
getHyperParameter(fit)
#> [1] 1.62865e-05

#Extract the current log-likelihood, and coefficients
logLik(fit)
#> 'log Lik.' -1858.348 (df=3)
coef(fit)
#> (Intercept)           1           2 
#>   -4.261846    0.000000    0.000000 

#We can only retrieve the confidence interval for unregularized coefficients:
confint(fit, c(0))
#> Using 1 thread(s)
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> 
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#>             covariate     2.5 %    97.5 % evaluations
#> (Intercept)         0 -4.295195 -4.228855          24