Nothing
## -----------------------------------------------------------------------------
library(gpindex)
p2 <- price6[[2]]
p1 <- price6[[1]]
q2 <- quantity6[[2]]
q1 <- quantity6[[1]]
rel <- p2 / p1
s1 <- scale_weights(p1 * q1)
s2 <- scale_weights(p2 * q2)
quadratic_mean <- generalized_mean(2)
quadratic_decomposition <- transmute_weights(2, 1)
v <- quadratic_decomposition(rel, s1)
all.equal(
quadratic_mean(rel, s1),
arithmetic_mean(rel, v)
)
## -----------------------------------------------------------------------------
(v - s1)[order(rel)]
## -----------------------------------------------------------------------------
all.equal(
transmute_weights(1, 0)(rel, v),
transmute_weights(2, 0)(rel, s1)
)
## -----------------------------------------------------------------------------
v1 <- nested_transmute(0, c(1, -1), 1)(rel, s1, s2)
all.equal(fisher_mean(rel, s1, s2), arithmetic_mean(rel, v1))
all.equal(
v1,
quadratic_decomposition(rel, nested_transmute(0, c(1, -1), 2)(rel, s1, s2))
)
## -----------------------------------------------------------------------------
v2 <- nested_transmute2(0, c(1, -1), 1)(rel, s1, s2)
all.equal(fisher_mean(rel, s1, s2), arithmetic_mean(rel, v2))
all.equal(
v2,
quadratic_decomposition(rel, nested_transmute2(0, c(1, -1), 2)(rel, s1, s2))
)
## -----------------------------------------------------------------------------
summary(v1 - v2)
## -----------------------------------------------------------------------------
group <- rep(c("a", "b"), each = 3)
s1_by_group <- split(s1, group)
rel_by_group <- split(rel, group)
index_a <- quadratic_mean(rel_by_group$a, s1_by_group$a)
index_b <- geometric_mean(rel_by_group$b)
quadratic_mean(c(index_a, index_b), sapply(s1_by_group, sum))
decomp_a <- quadratic_decomposition(rel_by_group$a, s1_by_group$a)
decomp_b <- transmute_weights(0, 1)(rel_by_group$b)
v <- Map(
`*`,
quadratic_decomposition(c(index_a, index_b), sapply(s1_by_group, sum)),
list(decomp_a, decomp_b)
) |>
unlist()
arithmetic_mean(rel, v)
## -----------------------------------------------------------------------------
V <- sum(p2 * q2) / sum(p1 * q1)
v <- nested_transmute2(0, c(1, -1), -1)(rel, s1, s2)
all.equal(
arithmetic_mean(V / rel, v),
fisher_mean(q2 / q1, s1, s2)
)
V / rel * v
## -----------------------------------------------------------------------------
# Arithmetic hybrid index
all.equal(
arithmetic_mean(p2 / p1, p2 * q1),
contraharmonic_mean(p2 / p1, p1 * q1)
)
# Palgrave index
all.equal(
arithmetic_mean(p2 / p1, p2 * q2),
contraharmonic_mean(p2 / p1, p1 * q2)
)
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.