tests/testthat/test_MasterEstim.R

test_that("TemperedEstim_with_CTS_ML_gives_correct_return", {
  testData <- c(1.8873152, -0.4843727,  0.4755897, -0.1257814,  1.3484823,
                -0.3866821, -0.4258380, -0.4658479, -2.9774961,  0.9646364,
                -0.5875601, -2.0316790,  0.3641900,  1.1882307,  1.6635770,
                -0.0554876,  0.4005471,  0.7820444, -0.3786902,  1.5131663)

  suppressWarnings({
    TestObject <- TemperedEstim("CTS","ML",testData)


    expect_equal(TestObject@par[["alpha"]],1e-06)
    expect_equal(TestObject@par[["delta +"]],1e-06)
    expect_equal(round(TestObject@par[["delta -"]],
                       digits = 2), 2.95)
    expect_equal(round(TestObject@par[["lambda +"]],
                       digits = 3), 2.325)
    expect_equal(round(TestObject@par[["lambda -"]],
                       digits = 3), 1.383)
    expect_equal(round(TestObject@par[["mu"]],
                       digits = 2), 0.13)

    expect_equal(TestObject@par0,c(1.5,1,1,1,1,0))

    expect_equal(round(TestObject@others$par,
                       digits = 2), c(0.00, 0.00, 2.95,
                                          2.32, 1.38, 0.13))

    expect_equal(round(TestObject@others$value,
                       digits = 2), 30.25)

    #Mac test == 33
    if(.Platform$OS.type == "windows"){
      expect_equal(TestObject@others$counts[["function"]], 34)
      expect_equal(TestObject@others$counts[["gradient"]], 34)
    }

    #Gives error for Linux. Message is ==
    # "ERROR: ABNORMAL_TERMINATION_IN_LNSRCH"
    if(.Platform$OS.type == "windows"){
      expect_equal(TestObject@others$message,
                   "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL")
    }
  })
})

test_that("TemperedEstim_with_TSS_ML_gives_correct_return", {
  testData <- c(3.0994626, 3.9490938, 1.2214726, 1.1447818, 1.2175446,
                1.0107253, 2.3391506, 3.2869243, 2.0381353, 0.8264428,
                0.9005004, 0.5014983, 1.5031865, 0.6169632, 1.4605593,
                0.9551939, 6.2465224, 2.9974583, 3.3024097, 2.6519853)

  suppressWarnings({
    TestObject <- TemperedEstim("TSS","ML",testData)


    expect_equal(round(TestObject@par[["alpha"]],
                       digits = 3), 0.548)
    expect_equal(round(TestObject@par[["delta"]],
                       digits = 3), 0.682)
    expect_equal(round(TestObject@par[["lambda"]],
                       digits = 3), 0.383)

    expect_equal(TestObject@par0,c(0.5,1,1))

    expect_equal(round(TestObject@others$par,
                       digits = 3), c(0.548, 0.682, 0.383))

    expect_equal(round(TestObject@others$value,
                       digits = 3), 29.974)

    expect_equal(TestObject@others$counts[["function"]], 22)
    expect_equal(TestObject@others$counts[["gradient"]], 22)

    expect_equal(TestObject@others$message,
                 "CONVERGENCE: NORM OF PROJECTED GRADIENT <= PGTOL")

    expect_equal(TestObject@method,
                 "ML_OptimAlgo=L-BFGS-B")
  })

  expect_error(TemperedEstim("TSS","ML"))

})

test_that("TemperedEstim_with_NTS_ML_gives_correct_return", {
  testData <- c(1.20268116, 2.47354907, 1.50248870, 2.53324346, 4.57237410,
                1.31064953, 2.74788769, 3.27900386, 0.15987725, 2.94092597,
                0.06321566, 0.86256026, 0.97488549, 0.20086994, 1.21891900,
                5.60468051, 2.12527944, 0.24420841, 2.08260240, 1.74097067)

  suppressWarnings({
    #This test works well for Mac, Windows and Linux(rHub). Somehow, it does not
    # work with release-check Debian
    if(.Platform$OS.type == "windows"){
      TestObject <- TemperedEstim("NTS","ML",testData)


      expect_equal(TestObject@par[["alpha"]],1.000000e-06)
      expect_equal(round(TestObject@par[["delta"]],
                         digits = 2), 1.12)
      if(.Platform$OS.type == "windows"){
        expect_equal(round(TestObject@par[["beta"]],
                           digits = 3), 1006.673)
        expect_equal(round(TestObject@par[["lambda"]],
                           digits = 3), 632.232)
      }
      expect_equal(round(TestObject@par[["mu"]],
                         digits = 3), 4.1e-02)

      expect_equal(TestObject@par0,c(0.5,0,1,1,0))

      expect_equal(round(TestObject@others$value,
                         digits = 1), 32.3)

      #Mac test == 71
      expect_equal(TestObject@others$counts[["function"]], 67)
      expect_equal(TestObject@others$counts[["gradient"]], 67)


      expect_equal(TestObject@others$message,
                   "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH")

      expect_equal(TestObject@method,
                   "ML_OptimAlgo=L-BFGS-B")
    }
  })

  expect_error(TemperedEstim("NTS","ML"))

})

# test_that("TemperedEstim_with_CGMY_ML_gives_correct_return", {
#   testData <- c(1.20268116, 2.47354907, 1.50248870, 2.53324346, 4.57237410,
#                 1.31064953, 2.74788769, 3.27900386, 0.15987725, 2.94092597,
#                 0.06321566, 0.86256026, 0.97488549, 0.20086994, 1.21891900,
#                 5.60468051, 2.12527944, 0.24420841, 2.08260240, 1.74097067)
#
#   suppressWarnings({
#     TestObject <- TemperedEstim("CGMY","ML",testData)
#
#
#     expect_equal(TestObject@par[["C"]],0.330860591)
#     expect_equal(TestObject@par[["G"]],0.140881690)
#     expect_equal(TestObject@par[["M"]],0.0000010)
#     expect_equal(TestObject@par[["Y"]],1.126007266)
#
#     expect_equal(TestObject@par0,c(1,1,1,1.5))
#
#     expect_equal(TestObject@others$par, c(0.330860591, 0.140881690, 0.0000010,
#                                           1.126007266))
#
#     expect_equal(TestObject@others$value, 37.15274)
#
#     expect_equal(TestObject@others$counts[["function"]], 101)
#     expect_equal(TestObject@others$counts[["gradient"]], 101)
#
#     expect_equal(TestObject@others$message,
#                  "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH")
#
#     expect_equal(TestObject@method,
#                  "ML_OptimAlgo=L-BFGS-B")
#   })
#
#   expect_error(TemperedEstim("CGMY","ML"))
#
# })

test_that("TemperedEstim_with_TSS_GMM_gives_correct_return", {
  testData <- c(1.0306890, 1.5027451, 1.5030160, 1.5891460, 0.9589073,
                0.7129186, 1.0200448, 3.4584815, 1.1106868, 0.7493848,
                1.1104505, 2.4100007, 0.9076451, 4.2011003, 0.7050829,
                2.3226794, 2.2397202, 1.0066137, 1.1703344, 0.7563997)

  suppressWarnings({
    TestObject <- TemperedEstim("TSS", "GMM",testData, algo = "2SGMM",
                                alphaReg = 0.01, regularization = "cut-off",
                                WeightingMatrix = "OptAsym", t_scheme = "free",
                                t_free = seq(0.1,2,length.out = 12))


    expect_equal(round(TestObject@par[["alpha"]],
                       digits = 3), 0.761)
    expect_equal(round(TestObject@par[["delta"]],
                       digits = 2), 0.30)
    expect_equal(round(TestObject@par[["lambda"]],
                       digits = 2), 0.27)

    expect_equal(round(TestObject@par0,
                       digits = 2), c(0.35, 1.19, 1.14))

    expect_equal(round(TestObject@others$par,
                       digits = 2), c(0.76, 0.30, 0.27))
  })
})

test_that("TemperedEstim_with_TSS_GMC_gives_correct_return", {
  testData <- c(2.7875940, 0.6474977, 3.6280734, 2.2341773, 2.9577528,
                1.5241392, 3.6102109, 1.9597134, 2.8262536, 2.1545273,
                1.5342798, 0.7227840, 2.9183721, 5.3106484, 0.8756254,
                0.6537854, 2.1774635, 2.3642591, 1.2595214, 2.1125328)

  suppressWarnings({
    if(.Platform$OS.type == "windows"){
      TestObject <- TemperedEstim("TSS", "GMC", testData,
                                  algo = "2SGMC", alphaReg = 0.01,
                                  WeightingMatrix = "OptAsym",
                                  regularization = "cut-off", ncond = 8)


      expect_equal(round(TestObject@par[["alpha"]],
                         digits = 0), 1)
      expect_equal(round(TestObject@par[["delta"]],
                         digits = 9), 0.000002178)
      #Lambda seems to be different in Mac and Windows check
      expect_equal(round(TestObject@par[["lambda"]],
                         digits = 0), 6)

      expect_equal(TestObject@par0,c(0.5,1,1))
    }
  })
})

Try the TempStable package in your browser

Any scripts or data that you put into this service are public.

TempStable documentation built on Oct. 24, 2023, 5:06 p.m.