tests/testthat/test-pn.R

test_that("Proximal Newton: gaussian, n>p case", {
  library(SLOPE)
  set.seed(121)

  n = 100
  p = 10

  d <- solvers::randomProblem(n, p, response="gaussian", density = 0.5)
  
  admm_solvers <- ADMM(d$x, d$y, family="gaussian", alpha=c(1.0,0.005), opt_algo="nr")
  pn_solvers <- PN(d$x, d$y, family="gaussian", alpha=c(1.0,0.005),hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})

test_that("Proximal Newton: gaussian, n<p case", {

  library(SLOPE)
  set.seed(554)

  n = 10
  p = 20

  d <- solvers::randomProblem(n, p, response="gaussian", density = 0.5)
  
  admm_solvers <- ADMM(d$x, d$y, family="gaussian",alpha=c(1.0,0.005),opt_algo="nr")
  pn_solvers <- PN(d$x, d$y, family="gaussian",alpha=c(1.0,0.005),hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})

test_that("Proximal Newton: binomial, n>p case", {
  
  library(SLOPE)
  set.seed(531)

  n = 100
  p = 10

  d <- solvers::randomProblem(n, p, response="binomial", density = 0.5)
  
  admm_solvers <- ADMM(d$x, d$y, family="binomial",alpha=c(1.0,0.005),opt_algo="nr")
  pn_solvers <- PN(d$x, d$y, family="binomial",alpha=c(1.0,0.005),hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})


test_that("Proximal Newton: binomial, n<p case", {

  library(SLOPE)
  set.seed(1)

  n = 10
  p = 20

  d <- solvers::randomProblem(n, p, response="binomial", density = 0.5)
  
  admm_solvers <- ADMM(d$x, d$y, family="binomial",alpha=c(1.0,0.005),opt_algo="nr",tol_abs=0,tol_rel=0,max_passes=10000)
  pn_solvers <- PN(d$x, d$y, family="binomial",alpha=c(1.0,0.005),hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})

test_that("Proximal Newton: poisson, n>p case", {

  library(SLOPE)
  set.seed(451)

  n = 100
  p = 10

  d <- solvers::randomProblem(n, p, response="poisson", density = 0.5)
  
  admm_solvers <- ADMM(d$x, d$y, family="poisson",alpha=c(1.0,0.005),opt_algo="nr")
  pn_solvers <- PN(d$x, d$y, family="poisson",alpha=c(1.0,0.005),hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})

test_that("Proximal Newton: poisson, n<p case", {

  library(SLOPE)
  set.seed(51)

  n = 10
  p = 20

  d <- solvers::randomProblem(n, p, response="poisson", density = 0.5)
  
  admm_solvers <- ADMM(d$x, d$y, family="poisson",alpha=c(1.0,0.005),opt_algo="nr")
  pn_solvers <- PN(d$x, d$y, family="poisson",alpha=c(1.0,0.005),hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})

test_that("Proximal Newton: multinomial, n>p case", {

  library(SLOPE)
  set.seed(661)

  n = 100
  p = 10

  d <- solvers::randomProblem(n, p, response="multinomial", density = 0.5)

  admm_solvers <- ADMM(d$x, d$y, family="multinomial", alpha=c(1.0,0.005), opt_algo="nr")
  pn_solvers <- PN(d$x, d$y, family="multinomial", alpha=c(1.0,0.005), hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})


test_that("Proximal Newton: multinomial, n<p case", {

  library(SLOPE)
  set.seed(641)

  n = 10
  p = 20

  d <- solvers::randomProblem(n, p, response="multinomial", density = 0.5)

  admm_solvers <- ADMM(d$x, d$y, family="multinomial", alpha=c(1.0,0.005), opt_algo="nr")
  pn_solvers <- PN(d$x, d$y, family="multinomial", alpha=c(1.0,0.005), hessian_calc="exact")
  expect_equivalent(coef(admm_solvers), coef(pn_solvers), tol = 1e-2)

})
straw-boy/solvers documentation built on Sept. 5, 2020, 6:28 a.m.