Nothing
# START
# Data with one region only -----------------------------------------------
# example data:
set.seed(123)
dt <- rdata(R=1, B=1, N=4)
expect_equal(
dt[, gerardi(p=price, q=quantity, r=region, n=product)],
c("1"=1)
)
expect_equal(
dt[, gerardi(p=price, q=quantity, r=region, n=product, settings=list("variant"="adjusted"))],
c("1"=1)
)
# Data with one product only ----------------------------------------------
# example data:
set.seed(123)
dt <- rdata(R=4, B=1, N=1)
expect_no_error(
dt[, gerardi(p=price, q=quantity, r=region, n=product)]
)
expect_no_error(
dt[, gerardi(p=price, q=quantity, r=region, n=product, settings=list("variant"="adjusted"))]
)
# Data with gaps ----------------------------------------------------------
# example data:
set.seed(123)
dt <- rdata(R=3, B=1, N=4, gaps=0.2)
# variant=original:
P.est <- dt[, gerardi(p=price, q=quantity, r=region, n=product, base=NULL)]
P.est1 <- dt[, gerardi(p=price, q=quantity, r=region, n=product, base="1")]
P.est2 <- dt[, gerardi(p=price, q=quantity, r=region, n=product, base="2")]
P.est3 <- dt[, gerardi(p=price, q=quantity, r=region, n=product, simplify=FALSE)]
expect_equal(is.vector(P.est1), TRUE)
expect_equal(is.vector(P.est2), TRUE)
expect_equal(is.vector(P.est3), TRUE)
expect_true(length(P.est3)>length(P.est1))
expect_equal(P.est1[1], c("1"=1))
expect_equal(P.est2[2], c("2"=1))
expect_equal(mean(P.est), 1)
expect_equal(P.est1, P.est/P.est[1])
expect_equal(P.est1, P.est2/P.est2[1])
# variant=adjusted:
P.est <- dt[, gerardi(p=price, q=quantity, r=region, n=product, base=NULL, settings=list("variant"="adjusted"))]
P.est1 <- dt[, gerardi(p=price, q=quantity, r=region, n=product, base="1", settings=list("variant"="adjusted"))]
P.est2 <- dt[, gerardi(p=price, q=quantity, r=region, n=product, base="2", settings=list("variant"="adjusted"))]
P.est3 <- dt[, gerardi(p=price, q=quantity, r=region, n=product, simplify=FALSE, settings=list("variant"="adjusted"))]
expect_equal(is.vector(P.est1), TRUE)
expect_equal(is.vector(P.est2), TRUE)
expect_equal(is.vector(P.est3), TRUE)
expect_true(length(P.est3)>length(P.est1))
expect_equal(P.est1[1], c("1"=1))
expect_equal(P.est2[2], c("2"=1))
expect_equal(mean(P.est), 1)
expect_equal(P.est1, P.est/P.est[1])
expect_equal(P.est1, P.est2/P.est2[1])
# test quantities versus shares as weights:
dt[, "share" := (price*quantity)/sum(price*quantity), by="region"]
expect_equal(
dt[, gerardi(p=price, q=quantity, r=region, n=product, base=NULL)],
dt[, gerardi(p=price, w=share, r=region, n=product, base=NULL)]
)
expect_equal(
dt[, gerardi(p=price, q=quantity, r=region, n=product, base=NULL, settings=list("variant"="adjusted"))],
dt[, gerardi(p=price, w=share, r=region, n=product, base=NULL, settings=list("variant"="adjusted"))]
)
# Settings ----------------------------------------------------------------
# missing quantities and weights:
expect_error(
dt[, gerardi(p=price, r=region, n=product)]
)
# connect not allowed:
expect_error(
dt[, gerardi(p=price, q=quantity, r=region, n=product, settings=list(connect="abc"))]
)
# variant not allowed:
expect_error(
dt[, gerardi(p=price, q=quantity, r=region, n=product, settings=list(variant="abc"))]
)
# Non-connected data ------------------------------------------------------
# example data:
set.seed(123)
dt1 <- pricelevels::rdata(R=3, B=1, N=5)
dt2 <- pricelevels::rdata(R=4, B=1, N=4)
dt2[, "region":=factor(region, labels=4:7)]
dt2[, "product":=factor(product, labels=6:9)]
dt <- rbind(dt1, dt2)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="1",
settings=list(chatty=FALSE, connect=TRUE))][1],
c("1"=1)
)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="1",
settings=list(chatty=FALSE, connect=TRUE))][4:7],
setNames(rep(NA_real_, 4), 4:7)
)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="4",
settings=list(chatty=FALSE, connect=TRUE))][1:3],
setNames(rep(NA_real_, 3), 1:3)
)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="4",
settings=list(chatty=FALSE, connect=TRUE))][4],
c("4"=1)
)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="1",
settings=list(chatty=FALSE, connect=TRUE, solve="matrix"))][1],
c("1"=1)
)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="1",
settings=list(chatty=FALSE, connect=TRUE, solve="matrix"))][4:7],
setNames(rep(NA_real_, 4), 4:7)
)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="4",
settings=list(chatty=FALSE, connect=TRUE, solve="matrix"))][1:3],
setNames(rep(NA_real_, 3), 1:3)
)
expect_equal(
dt[, gerardi(p=price, r=region, n=product, q=quantity, base="4",
settings=list(chatty=FALSE, connect=TRUE, solve="matrix"))][4],
c("4"=1)
)
# END
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.