skip_if_not_installed("stats")
skip_if_not_installed("plm")
data(Crime, package = "plm")
data("Produc", package = "plm")
set.seed(123)
Crime$year <- as.factor(Crime$year)
m1 <- suppressWarnings(plm::plm(lcrmrte ~ lprbarr + year | . - lprbarr + lmix, data = Crime, model = "random"))
m2 <- suppressWarnings(plm::plm(
formula = log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,
data = Produc,
index = c("state", "year")
))
test3333 <- data.frame(
ID = c("TOM", "TOM", "TOM", "TOM", "MARY", "MARY", "MARY", "JOHN", "JOHN"),
Year = c(1992:1995, 1991:1993, 1993:1994),
ret = rnorm(9),
stringsAsFactors = FALSE
)
test3333 <- plm::pdata.frame(test3333)
test3333["lag"] <- lag(test3333$ret)
test3333 <- na.omit(test3333)
test3333model <- ret ~ lag
m3 <- suppressWarnings(plm::plm(
test3333model,
data = test3333,
model = "within",
effect = "individual",
index = c("ID", "Year")
))
test_that("ci", {
expect_equal(
ci(m1)$CI_low,
c(-3.73825, -0.12292, -0.05971, -0.13356, -0.18381, -0.17782, -0.11688, -0.03962),
tolerance = 1e-3
)
expect_equal(
ci(m2)$CI_low,
c(-0.08308, 0.2427, 0.70909, -0.00724),
tolerance = 1e-3
)
expect_equal(ci(m3)$CI_low, -2.60478, tolerance = 1e-3)
})
test_that("se", {
expect_equal(
standard_error(m1)$SE,
c(0.13223, 0.09221, 0.02684, 0.02679, 0.02704, 0.02671, 0.02663, 0.02664),
tolerance = 1e-3
)
expect_equal(
standard_error(m2)$SE,
c(0.029, 0.02512, 0.03009, 0.00099),
tolerance = 1e-3
)
expect_equal(standard_error(m3)$SE, 0.5166726, tolerance = 1e-3)
})
test_that("p_value", {
expect_equal(
p_value(m1)$p,
c(0, 0.5285, 0.79456, 0.00262, 0, 0, 0.01558, 0.63395),
tolerance = 1e-3
)
expect_equal(
p_value(m2)$p,
c(0.36752, 0, 0, 0),
tolerance = 1e-3
)
expect_equal(p_value(m3)$p, 0.53696, tolerance = 1e-3)
})
test_that("model_parameters", {
expect_equal(
model_parameters(m1)$Coefficient,
c(-3.47857, 0.05815, -0.00699, -0.08095, -0.13071, -0.12537, -0.06458, 0.01269),
tolerance = 1e-3
)
expect_equal(
model_parameters(m2)$Coefficient,
c(-0.02615, 0.29201, 0.76816, -0.0053),
tolerance = 1e-3
)
expect_equal(model_parameters(m3)$Coefficient, -0.381721, tolerance = 1e-3)
})
test_that("vcov standard errors", {
skip_if_not_installed("sandwich")
data("Grunfeld", package = "plm")
ran <- suppressWarnings(
plm::plm(value ~ capital + inv, data = Grunfeld, model = "random", effect = "twoways")
)
out1 <- standard_error(ran)
out2 <- standard_error(ran, vcov = "HC1")
validate1 <- coef(summary(ran))[, 2]
validate2 <- sqrt(diag(sandwich::vcovHC(ran, type = "HC1")))
expect_equal(out1$SE, validate1, tolerance = 1e-3, ignore_attr = TRUE)
expect_equal(out2$SE, validate2, tolerance = 1e-3, ignore_attr = TRUE)
expect_snapshot(print(model_parameters(ran)))
expect_snapshot(print(model_parameters(ran, vcov = "HC1")))
})
test_that("vcov standard errors, methods", {
data("Produc", package = "plm")
zz <- plm::plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,
data = Produc, model = "random"
)
out1 <- standard_error(zz, vcov = "HC1")
out2 <- standard_error(zz, vcov = "HC1", vcov_args = list(method = "white1"))
validate1 <- sqrt(diag(plm::vcovHC(zz, method = "arellano", type = "HC1")))
validate2 <- sqrt(diag(plm::vcovHC(zz, method = "white1", type = "HC1")))
expect_equal(out1$SE, validate1, tolerance = 1e-3, ignore_attr = TRUE)
expect_equal(out2$SE, validate2, tolerance = 1e-3, ignore_attr = TRUE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.