Nothing
library(MASS)
DATA <- RobinCar:::data_sim
DATA$A <- as.factor(DATA$A)
DATA$y_bin <- ifelse(DATA$y > 2, 1, 0)
# LINEAR V. GLM WITHOUT Z ----------------------------------- #
test_that("GLM full function -- linear (ANOVA)", {
lin <- robincar_linear(
df=DATA,
response_col="y",
treat_col="A",
car_scheme="simple",
adj_method="ANOVA")
non <- robincar_glm(
df=DATA,
response_col="y",
treat_col="A",
car_scheme="simple",
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A")
expect_equal(class(non), "GLMModelResult")
# Check that the result from the linear and glm function is the same
# when using the identity link.
est_lin <- lin$result$estimate
names(est_lin) <- NULL
est_non <- non$result$estimate
names(est_non) <- NULL
expect_equal(est_lin, est_non, tolerance=1e-10)
# These won't be exactly equivalent, only asymptotically (?)
var_lin <- lin$result$se
names(var_lin) <- NULL
var_non <- non$result$se
names(var_non) <- NULL
expect_equal(var_lin, var_non, tolerance=1e-2)
})
test_that("GLM full function -- linear (ANCOVA)", {
lin <- robincar_linear(
df=DATA,
response_col="y",
treat_col="A",
covariate_cols=c("x1"),
car_scheme="simple",
adj_method="ANCOVA")
non <- robincar_glm(
df=DATA,
response_col="y",
treat_col="A",
car_scheme="simple",
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A + x1")
expect_equal(class(non), "GLMModelResult")
# Check that the result from the linear and glm function is the same
# when using the identity link.
est_lin <- lin$result$estimate
names(est_lin) <- NULL
est_non <- non$result$estimate
names(est_non) <- NULL
expect_equal(est_lin, est_non, tolerance=1e-10)
# These won't be exactly equivalent, only asymptotically (?)
var_lin <- lin$result$se
names(var_lin) <- NULL
var_non <- non$result$se
names(var_non) <- NULL
expect_equal(var_lin, var_non, tolerance=1e-2)
})
test_that("GLM full function -- linear (ANHECOVA)", {
lin <- robincar_linear(
df=DATA,
response_col="y",
treat_col="A",
covariate_cols=c("x1"),
car_scheme="simple",
adj_method="ANHECOVA")
non <- robincar_glm(
df=DATA,
response_col="y",
treat_col="A",
car_scheme="simple",
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A * x1")
expect_equal(class(non), "GLMModelResult")
# Check that the result from the linear and glm function is the same
# when using the identity link.
est_lin <- lin$result$estimate
names(est_lin) <- NULL
est_non <- non$result$estimate
names(est_non) <- NULL
expect_equal(est_lin, est_non, tolerance=1e-10)
# These won't be exactly equivalent, only asymptotically (?)
var_lin <- lin$result$se
names(var_lin) <- NULL
var_non <- non$result$se
names(var_non) <- NULL
expect_equal(var_lin, var_non, tolerance=1e-2)
})
# LINEAR V. GLM WITH Z ----------------------------------- #
test_that("GLM full function -- linear (ANCOVA) with Z and simple randomization", {
lin <- expect_warning(robincar_linear(
df=DATA,
response_col="y",
treat_col="A",
covariate_cols=c("x1"),
car_strata_cols=c("z1"),
car_scheme="simple",
adj_method="ANCOVA"))
non <- expect_warning(robincar_glm(
df=DATA,
response_col="y",
treat_col="A",
car_scheme="simple",
car_strata_cols=c("z1"),
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A + x1"))
# Check that the result from the linear and glm function is the same
# when using the identity link.
est_lin <- lin$result$estimate
names(est_lin) <- NULL
est_non <- non$result$estimate
names(est_non) <- NULL
expect_equal(est_lin, est_non, tolerance=1e-10)
# These won't be exactly equivalent, only asymptotically (?)
var_lin <- lin$result$se
names(var_lin) <- NULL
var_non <- non$result$se
names(var_non) <- NULL
expect_equal(var_lin, var_non, tolerance=1e-2)
})
test_that("GLM full function -- linear (ANCOVA) with Z", {
lin <- robincar_linear(
df=DATA,
response_col="y",
treat_col="A",
covariate_cols=c("x1"),
car_strata_cols=c("z1"),
car_scheme="permuted-block",
adj_method="ANCOVA")
non <- robincar_glm(
df=DATA,
response_col="y",
treat_col="A",
car_scheme="permuted-block",
car_strata_cols=c("z1"),
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A + x1")
expect_equal(class(non), "GLMModelResult")
# Check that the result from the linear and glm function is the same
# when using the identity link.
est_lin <- lin$result$estimate
names(est_lin) <- NULL
est_non <- non$result$estimate
names(est_non) <- NULL
expect_equal(est_lin, est_non, tolerance=1e-10)
# These won't be exactly equivalent, only asymptotically (?)
var_lin <- lin$result$se
names(var_lin) <- NULL
var_non <- non$result$se
names(var_non) <- NULL
expect_equal(var_lin, var_non, tolerance=1e-2)
})
test_that("GLM full function -- linear (ANHECOVA) with Z", {
lin <- robincar_linear(
df=DATA,
response_col="y",
treat_col="A",
covariate_cols=c("x1", "z1"),
car_strata_cols=c("z1"),
car_scheme="permuted-block",
adj_method="ANHECOVA")
non <- robincar_glm(
df=DATA,
response_col="y",
treat_col="A",
car_scheme="permuted-block",
car_strata_cols=c("z1"),
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A * (x1 + z1)")
expect_equal(class(non), "GLMModelResult")
# Check that the result from the linear and glm function is the same
# when using the identity link.
est_lin <- lin$result$estimate
names(est_lin) <- NULL
est_non <- non$result$estimate
names(est_non) <- NULL
expect_equal(est_lin, est_non, tolerance=1e-10)
# These won't be exactly equivalent, only asymptotically (?)
var_lin <- lin$result$se
names(var_lin) <- NULL
var_non <- non$result$se
names(var_non) <- NULL
expect_equal(var_lin, var_non, tolerance=1e-2)
})
# GLM TESTS ---------------------------------------- #
n <- 1000
set.seed(10)
DATA2 <- data.frame(A=rbinom(n, size=1, prob=0.5),
y=rbinom(n, size=1, prob=0.2),
x1=rnorm(n),
x2=rnorm(n),
x3=as.factor(rbinom(n, size=1, prob=0.5)),
z1=rbinom(n, size=1, prob=0.5),
z2=rbinom(n, size=1, prob=0.5))
DATA2$A <- as.factor(DATA2$A)
DATA2$x1 <- DATA2$x1 - mean(DATA2$x1)
test_that("GLM full function -- NEGATIVE binomial, permuted block", {
# Known dispersion parameter
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_strata_cols=c("z1"),
car_scheme="permuted-block",
g_family=negative.binomial(1),
g_accuracy=7,
formula="y ~ A * (x1 + z1)")
expect_equal(class(non), "GLMModelResult")
# Known dispersion parameter
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_strata_cols=c("z1"),
car_scheme="permuted-block",
g_family="nb",
g_accuracy=7,
formula="y ~ A * (x1 + z1)")
expect_equal(class(non), "GLMModelResult")
non
# Test with formula
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_strata_cols=c("z1"),
formula="y ~ A + z1",
car_scheme="permuted-block",
g_family="nb",
g_accuracy=7)
non
})
test_that("GLM Settings", {
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_scheme="simple",
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A * x1")
expect_equal(non$settings$pu_joint_z, FALSE)
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_strata_cols=c("z1"),
car_scheme="biased-coin",
g_family=gaussian(link="identity"),
g_accuracy=7,
formula="y ~ A * (x1 + z1)")
expect_equal(non$settings$pu_joint_z, FALSE)
})
test_that("GLM full function -- binomial, permuted block", {
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_strata_cols=c("z1"),
car_scheme="permuted-block",
g_family=binomial(link="logit"),
g_accuracy=7,
formula="y ~ A * (x1 + z1)")
expect_equal(class(non), "GLMModelResult")
expect_equal(non$result$estimate,
c(X1=0.20774694, X2=0.15547416), tolerance=1e-5)
})
test_that("GLM full function -- binomial, pocock simon", {
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_strata_cols=c("z1"),
car_scheme="pocock-simon",
g_family=binomial(link="logit"),
g_accuracy=7,
formula="y ~ A * (x1 + z1)")
expect_equal(class(non), "GLMModelResult")
expect_equal(non$settings$pu_joint_z, TRUE)
expect_equal(non$result$estimate,
c(0.20774694, 0.15547416), tolerance=1e-5)
})
test_that("GLM -- no covariates", {
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_strata_cols=c("z1"),
car_scheme="biased-coin",
g_family=binomial(link="logit"),
g_accuracy=7,
formula="y ~ A")
expect_equal(class(non), "GLMModelResult")
expect_equal(length(non$mod$coefficients), 2)
})
# TEST FOR THE DMAT.
test_that("GLM -- no covariates except car_strata", {
non <- robincar_glm(
df=DATA2,
response_col="y",
treat_col="A",
car_scheme="biased-coin",
car_strata_cols=c("z1"),
g_family=binomial(link="logit"),
g_accuracy=7,
formula="y ~ A * z1")
expect_equal(length(non$mod$coefficients), 4)
})
n <- 2000
DATA4 <- data.frame(
y=rbinom(n=n, prob=0.5, size=1),
TRT01P=sample(1:3, replace=TRUE, size=n),
BWTGR1=rbinom(n=n, prob=0.1, size=1)
)
DATA4$TRT01P <- factor(DATA4$TRT01P)
test_that("GLM -- test g_family types in print function", {
# Test with character
res1 <- robincar_glm(
df=DATA4,
response_col="y",
treat_col="TRT01P",
car_scheme="simple",
g_family="binomial",
formula="y ~ TRT01P + BWTGR1"
)
# Test with function
res2 <- robincar_glm(
df=DATA4,
response_col="y",
treat_col="TRT01P",
car_scheme="simple",
g_family=binomial,
formula="y ~ TRT01P + BWTGR1"
)
# Test with object
res3 <- robincar_glm(
df=DATA4,
response_col="y",
treat_col="TRT01P",
car_scheme="simple",
g_family=binomial(link="logit"),
formula="y ~ TRT01P + BWTGR1"
)
expect_equal(res1$result, res2$result)
expect_equal(res1$result, res3$result)
})
DATA5 <- DATA4
DATA5$TRT01P <- factor(DATA5$TRT01P,
levels=1:3,
labels=c("placebo", "trt1", "trt2"))
test_that("GLM -- test that it does not matter if treatment levels
are labeled or not.", {
# Un-labeled treatment groups
res1 <- robincar_glm(
df=DATA4,
response_col="y",
treat_col="TRT01P",
car_scheme="simple",
g_family=binomial(link="logit"),
formula="y ~ TRT01P + BWTGR1"
)
# Labeled treatment groups
res2 <- robincar_glm(
df=DATA5,
response_col="y",
treat_col="TRT01P",
car_scheme="simple",
g_family=binomial(link="logit"),
formula="y ~ TRT01P + BWTGR1"
)
expect_equal(res1$result$estimate, res2$result$estimate)
expect_equal(res1$result$se, res2$result$se)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.