createPrior creates a Cyclops prior object for use with fitCyclopsModel.
createPrior(
priorType,
variance = 1,
exclude = c(),
graph = NULL,
neighborhood = NULL,
useCrossValidation = FALSE,
forceIntercept = FALSE
)Character: specifies prior distribution. See below for options
Numeric: prior distribution variance
A vector of numbers or covariateId names to exclude from prior
Child-to-parent mapping for a hierarchical prior
A list of first-order neighborhoods for a partially fused prior
Logical: Perform cross-validation to determine prior variance.
Logical: Force intercept coefficient into prior
A Cyclops prior object of class inheriting from "cyclopsPrior" for use with fitCyclopsModel.
We specify all priors in terms of their variance parameters.
Similar fitting tools for regularized regression often parameterize the Laplace distribution
in terms of a rate "lambda" per observation.
See "glmnet", for example.
variance = 2 * / (nobs * lambda)^2 or lambda = sqrt(2 / variance) / nobs
#Generate some simulated data:
sim <- simulateCyclopsData(nstrata = 1, nrows = 1000, ncovars = 2, eCovarsPerRow = 0.5,
model = "poisson")
#> Sparseness = 76.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 = 1698789248] with data partitions of sizes 100 100 100 100 100 100 100 100 100 100
#> Using 1 thread(s)
#> Starting var = 0.234 (default)
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #1 Rep #1 pred log like = 600.677
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #2 Rep #1 pred log like = 519.924
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #3 Rep #1 pred log like = 621.534
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #4 Rep #1 pred log like = 429.156
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #5 Rep #1 pred log like = 455.987
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #6 Rep #1 pred log like = 569.073
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #7 Rep #1 pred log like = 445.111
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #8 Rep #1 pred log like = 680.122
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #9 Rep #1 pred log like = 513.724
#> Running at Laplace(2.92353) None Grid-point #1 at 0.234 Fold #10 Rep #1 pred log like = 579.541
#> AvgPred = 541.485 with stdev = 78.608
#> Completed at 0.234
#> Next point at 2.34 with value 0 and continue = 1
#> search[ 0.234 ] = 541.485(78.608)
#>
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #1 Rep #1 pred log like = 600.62
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #2 Rep #1 pred log like = 519.914
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #3 Rep #1 pred log like = 621.499
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #4 Rep #1 pred log like = 429.072
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #5 Rep #1 pred log like = 455.985
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #6 Rep #1 pred log like = 569.055
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #7 Rep #1 pred log like = 445.068
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #8 Rep #1 pred log like = 680.096
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #9 Rep #1 pred log like = 513.724
#> Running at Laplace(0.9245) None Grid-point #2 at 2.34 Fold #10 Rep #1 pred log like = 579.472
#> AvgPred = 541.45 with stdev = 78.6096
#> Completed at 2.34
#> Next point at 0.0234 with value 0 and continue = 1
#> search[ 0.234 ] = 541.485(78.608)
#> search[ 2.34 ] = 541.45(78.6096)
#>
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #1 Rep #1 pred log like = 600.805
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #2 Rep #1 pred log like = 519.924
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #3 Rep #1 pred log like = 621.649
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #4 Rep #1 pred log like = 429.416
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #5 Rep #1 pred log like = 456.004
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #6 Rep #1 pred log like = 569.073
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #7 Rep #1 pred log like = 445.152
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #8 Rep #1 pred log like = 680.134
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #9 Rep #1 pred log like = 513.725
#> Running at Laplace(9.245) None Grid-point #3 at 0.0234 Fold #10 Rep #1 pred log like = 579.753
#> AvgPred = 541.564 with stdev = 78.598
#> Completed at 0.0234
#> Next point at 0.00234 with value 0 and continue = 1
#> search[ 0.0234 ] = 541.564(78.598)
#> search[ 0.234 ] = 541.485(78.608)
#> search[ 2.34 ] = 541.45(78.6096)
#>
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #1 Rep #1 pred log like = 600.805
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #2 Rep #1 pred log like = 519.924
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #3 Rep #1 pred log like = 621.874
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #4 Rep #1 pred log like = 430.035
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #5 Rep #1 pred log like = 456.006
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #6 Rep #1 pred log like = 569.073
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #7 Rep #1 pred log like = 445.152
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #8 Rep #1 pred log like = 680.134
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #9 Rep #1 pred log like = 513.725
#> Running at Laplace(29.2353) None Grid-point #4 at 0.00234 Fold #10 Rep #1 pred log like = 580.157
#> AvgPred = 541.688 with stdev = 78.5522
#> Completed at 0.00234
#> Next point at 0.000234 with value 0 and continue = 1
#> search[ 0.00234 ] = 541.688(78.5522)
#> search[ 0.0234 ] = 541.564(78.598)
#> search[ 0.234 ] = 541.485(78.608)
#> search[ 2.34 ] = 541.45(78.6096)
#>
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #1 Rep #1 pred log like = 600.805
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #2 Rep #1 pred log like = 519.924
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #3 Rep #1 pred log like = 621.874
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #4 Rep #1 pred log like = 430.035
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #5 Rep #1 pred log like = 456.006
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #6 Rep #1 pred log like = 569.073
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #7 Rep #1 pred log like = 445.152
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #8 Rep #1 pred log like = 680.134
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #9 Rep #1 pred log like = 513.725
#> Running at Laplace(92.45) None Grid-point #5 at 0.000234 Fold #10 Rep #1 pred log like = 580.157
#> AvgPred = 541.688 with stdev = 78.5522
#> Completed at 0.000234
#> Next point at 3.23147e-23 with value 542.287 and continue = 0
#> search[ 0.000234 ] = 541.688(78.5522)
#> search[ 0.00234 ] = 541.688(78.5522)
#> search[ 0.0234 ] = 541.564(78.598)
#> search[ 0.234 ] = 541.485(78.608)
#> search[ 2.34 ] = 541.45(78.6096)
#>
#>
#> Maximum predicted log likelihood (542.287) estimated at:
#> 3.23147e-23 (variance)
#> 2.4878e+11 (lambda)
#>
#> Fitting model at optimal hyperparameter
#> Using prior: Laplace(2.4878e+11) None
#Find out what the optimal hyperparameter was:
getHyperParameter(fit)
#> [1] 3.231474e-23
#Extract the current log-likelihood, and coefficients
logLik(fit)
#> 'log Lik.' -2122.09 (df=3)
coef(fit)
#> (Intercept) 1 2
#> -3.777662 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!
#>
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#>
#> Warning: BLR gradient is ill-conditioned
#> Enforcing convergence!
#> covariate 2.5 % 97.5 % evaluations
#> (Intercept) 0 -3.803731 -3.751804 24