tests/testthat/test-posthoc.R

nmTest({
  test_that("test that posthoc does the correct thing with one subject", {
    skip_on_cran()

    d <- qs::qread(test_path("datos_pac.qs"))

    .nlmixr <- function(...) suppressMessages(suppressWarnings(nlmixr2(...)))

    mod.dos.cmpt <- function() {
      ini({
        # *1* Efectos fijos "theta" + Error
        # A) Parametros poblacionales y su valor poblacional
        ltcl <- log(5.42*0.001) #Ln_Cl L/Dia
        ltv1 <- log(52.4*0.001) #Ln_v1 L
        ltQ <-  log(2.26*0.001) #Ln_Q  L/Dia
        ltv2 <- log(19.6*0.001) #Ln_v2 L
        # B) Variabilidad en las observaciones
        add.err  <- 0.15 #error_aditivo
        prop.err <- 0.15 #error_proporcional
        # *2* Efectos aleatorios "omega". Variabilidad entre sujetos "omega"
        # Variabilidad de los parametros poblacionales (varianza)
        eta.cl  ~ 0.3001**2 #eta_cl 
        eta.v1  ~ 0.1255**2 #eta_v1  
        eta.v2  ~ 0.5165**2 #eta_v2 
      })
      model({
        # First parameters are defined in terms of the initial estimates
        # parameter names.
        cl <- exp(ltcl+LWT -0.313*LW65 -0.855*LALB41+ ATI*log(1.292)+ IMM*log(0.863)  + eta.cl)
        v1 <- exp(ltv1+LWT -0.233*LW65 +eta.v1)
        Q  <- exp(ltQ+LWT)
        v2 <- exp(ltv2 +LWT-0.588*LW65  +eta.v2)
        # After the differential equations are defined
        k <- cl/v1
        k12 <- Q/v1
        k21 <- Q/v2
        d/dt(central)  = -(k+k12)*central+k21*peripheral # masa (mg) de IFX en compart. central 
        d/dt(peripheral) = k12*central-k21*peripheral    #Free Drug second compartment amount
        # And the concentration is then calculated
        conc=central/v1
        conc ~ add(add.err) + prop(prop.err)
      })
    }
    # Calculations required by the model of interest
    funcion_transf_logaritmica<-function(nombre_dataframe){
      nombre_dataframe$LWT    <-  log(nombre_dataframe$WT)
      nombre_dataframe$LW65   <-  log(nombre_dataframe$WT/65)
      nombre_dataframe$LALB41 <-  log(nombre_dataframe$ALB/4.1) 
      nombre_dataframe <- data.frame(nombre_dataframe) 
    }

    d <- funcion_transf_logaritmica(d)
    
    f <- .nlmixr(mod.dos.cmpt, d, "posthoc", control=list(calcTables=FALSE))

    f2 <- suppressMessages(addTable(f))

    expect_false(all(f2$eta.cl == 0.0))
    expect_false(all(f2$eta.v1 == 0.0))
    expect_false(all(f2$eta.v2 == 0.0))
    
  })
})

Try the nlmixr2est package in your browser

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

nlmixr2est documentation built on Oct. 30, 2024, 9:23 a.m.