Nothing
library(survey)
library(testthat)
test_that("Bell-McCaffrey standard errors run and are greater than linearized",
{
data(api)
# Bell-McCaffrey standard errors are expected to increase
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
expect_no_error( summ_d1_bmcaff_lin <- { svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey") |> summary() } )
expect_no_error( summ_d1_bmcaf2_lin <- { svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey-2") |> summary() } )
summ_d1_taylor_lin <- svyglm(api00 ~ api99 + stype,
design=dclus1) |> summary()
testthat::expect_equal(all(SE(summ_d1_bmcaff_lin)>SE(summ_d1_taylor_lin)),TRUE)
testthat::expect_equal(all(SE(summ_d1_bmcaf2_lin)>SE(summ_d1_taylor_lin)),TRUE)
testthat::expect_equal(SE(summ_d1_bmcaff_lin),SE(summ_d1_bmcaf2_lin))
summ_d1_taylor_logit <- svyglm(as.factor(sch.wide)~api99+stype, design=dclus1,
family="binomial") |> summary()
expect_no_error( summ_d1_bmcaff_logit <- svyglm(as.factor(sch.wide)~api99+stype,
design=dclus1, family="binomial", std.errors="Bell-McCaffrey") |> summary() )
expect_no_error( summ_d1_bmcaf2_logit <- svyglm(as.factor(sch.wide)~api99+stype,
design=dclus1, family="binomial", std.errors="Bell-McCaffrey-2") |> summary() )
testthat::expect_equal(all(SE(summ_d1_bmcaff_logit)>SE(summ_d1_taylor_logit)),TRUE)
testthat::expect_equal(all(SE(summ_d1_bmcaf2_logit)>SE(summ_d1_taylor_logit)),TRUE)
testthat::expect_equal(SE(summ_d1_bmcaff_logit),SE(summ_d1_bmcaf2_logit))
dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2)
summ_d2_taylor_lin <- svyglm(api00 ~ api99 + stype,
design=dclus2) |> summary()
expect_no_error( summ_d2_bmcaff_lin <- svyglm(api00 ~ api99 + stype,
design=dclus2, std.errors="Bell-McCaffrey") |> summary() )
testthat::expect_equal(all(SE(summ_d2_bmcaff_lin)>SE(summ_d2_taylor_lin)),TRUE)
# snapshot including numeric values of the standard errors
testthat::expect_snapshot({
svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey")|> summary()})
})
test_that("Bell-McCaffrey degrees of freedom go down",
{
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
# Bell-McCaffrey standard errors are expected to increase
expect_no_error( summ_d1_bmcaff_lin <- { svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey") |> summary() } )
summ_d1_taylor_lin <- svyglm(api00 ~ api99 + stype,
design=dclus1) |> summary()
expect_no_error( summ_d1_bmcdof_lin <- { svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey", degf=TRUE) |> summary() } )
expect_no_error( summ_d1_bmcdf2_lin <- { svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey-2", degf=TRUE) |> summary() } )
# match degrees of freedom with degf=FALSE, default
expect_identical(summ_d1_bmcaff_lin$df.residual, summ_d1_taylor_lin$df.residual)
# Bell-McAffredy dfs are going to be lower
expect_lt(summ_d1_bmcdof_lin$df.residual, summ_d1_taylor_lin$df.residual)
expect_lt(summ_d1_bmcdf2_lin$df.residual, summ_d1_taylor_lin$df.residual)
summ_d1_taylor_logit <- svyglm(as.factor(sch.wide)~api99+stype, design=dclus1,
family="binomial") |> summary()
expect_no_error( summ_d1_bmcaff_logit <- svyglm(as.factor(sch.wide)~api99+stype,
design=dclus1, family="binomial", std.errors="Bell-McCaffrey") |> summary() )
expect_no_error( summ_d1_bmcdof_logit <- svyglm(as.factor(sch.wide)~api99+stype,
design=dclus1, family="binomial", std.errors="Bell-McCaffrey", degf=TRUE) |> summary() )
expect_no_error( summ_d1_bmcdf2_logit <- svyglm(as.factor(sch.wide)~api99+stype,
design=dclus1, family="binomial", std.errors="Bell-McCaffrey-2", degf=TRUE) |> summary() )
# match degrees of freedom with degf=FALSE, default
expect_identical(summ_d1_bmcaff_logit$df.residual, summ_d1_taylor_logit$df.residual)
# Bell-McAffredy dfs are going to be lower
expect_lt(summ_d1_bmcdof_logit$df.residual, summ_d1_taylor_logit$df.residual)
expect_lt(summ_d1_bmcdf2_logit$df.residual, summ_d1_taylor_logit$df.residual)
# snapshot including numeric values of the standard errors
expect_snapshot({
svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey", degf=TRUE)|> summary()})
expect_snapshot({
svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey-2", degf=TRUE)|> summary()})
})
test_that("Bad standard errors break as expected",
{
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
expect_error( svyglm(api00 ~ api99 + stype, design=dclus1, std.errors="blah"),
'\'arg\' should be one of')
})
test_that("Bell-McCaffrey degf work with confint.svyglm()",
{
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
d1_bmcaff_logit <- svyglm(as.factor(sch.wide)~api99+stype,
design=dclus1, family="quasibinomial", std.errors="Bell-McCaffrey", degf=TRUE)
ci_d1_bmcaff_logit <- confint(d1_bmcaff_logit)
expect_false(is.null(attr(ci_d1_bmcaff_logit, "degf")))
expect_identical(attr(ci_d1_bmcaff_logit, "degf"), d1_bmcaff_logit$df.coef)
# you can pick up parameters
expect_no_error(confint(d1_bmcaff_logit, parm=c(1,3)))
# likelihood works and is tighter than df=Inf
expect_no_error(cilik_d1_bmcaff_logit <- confint(d1_bmcaff_logit,
method="likelihood", level=0.9))
expect_no_error(ciInf_d1_bmcaff_logit <- confint(d1_bmcaff_logit,
method="likelihood", ddf=Inf, level=0.9))
expect_equal(
all(cilik_d1_bmcaff_logit[,"5 %"] < ciInf_d1_bmcaff_logit[,"5 %"])
&
all(cilik_d1_bmcaff_logit[,"95 %"] > ciInf_d1_bmcaff_logit[,"95 %"]),
TRUE
)
expect_snapshot({
svyglm(api00 ~ api99 + stype,
design=dclus1, std.errors="Bell-McCaffrey", degf=TRUE)|> confint()})
expect_snapshot({
svyglm(as.factor(sch.wide)~api99+stype,
design=dclus1, family="quasibinomial",
std.errors="Bell-McCaffrey", degf=TRUE) |> confint()
})
})
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.