## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----load-package-data-------------------------------------------------------- library(saeproj.multilevel) data("saeml_modelsvy") data("saeml_projsvy") ## ----inspect-data------------------------------------------------------------- dim(saeml_modelsvy) dim(saeml_projsvy) head(saeml_modelsvy) head(saeml_projsvy) ## ----model-survey-domain-count------------------------------------------------ model_domain_count <- table(saeml_modelsvy$kab_kota) c( n_domains = length(model_domain_count), min_units_per_domain = min(model_domain_count), max_units_per_domain = max(model_domain_count) ) ## ----projection-survey-domain-count------------------------------------------- proj_domain_count <- table(saeml_projsvy$kab_kota) c( n_domains = length(proj_domain_count), min_units_per_domain = min(proj_domain_count), max_units_per_domain = max(proj_domain_count) ) ## ----response-variable-check-------------------------------------------------- "Y" %in% names(saeml_modelsvy) "Y" %in% names(saeml_projsvy) ## ----fit-estimator------------------------------------------------------------ result <- sae_ml_linear( formula = Y ~ X1 + X2 + X3 + X4 + Z1 + Z2 + (1 | kab_kota), data_model = saeml_modelsvy, data_proj = saeml_projsvy, domain = "kab_kota", cluster_ids = ~1, weight = "WEIND", strata = "kab_kota", summary_function = "mean" ) ## ----estimator-summary-------------------------------------------------------- summary(result) ## ----final-estimates---------------------------------------------------------- head(result$estimates) ## ----estimates-data-frame----------------------------------------------------- estimates <- as.data.frame(result) head(estimates) ## ----estimation-components---------------------------------------------------- head(result$estimation_details) ## ----synthetic-component------------------------------------------------------ head( result$estimation_details[, c( "kab_kota", "estimate_synthetic", "variance_synthetic" )] ) ## ----correction-component----------------------------------------------------- head( result$estimation_details[, c( "kab_kota", "correction", "variance_correction" )] ) ## ----model-parameters--------------------------------------------------------- # Fixed-effect estimates result$model_parameters$fixed_effects # Random-effect and residual variance components result$model_parameters$variance_components # Residual variance result$model_parameters$residual_variance ## ----random-effects----------------------------------------------------------- head(result$model_parameters$random_effects$kab_kota) ## ----model-diagnostics-------------------------------------------------------- result$diagnostics ## ----diagnostics-table-------------------------------------------------------- data.frame( icc = result$diagnostics$icc, singular_fit = result$diagnostics$singular_fit, convergence = result$diagnostics$convergence, sigma = result$diagnostics$sigma, residual_variance = result$diagnostics$residual_variance, REML = result$diagnostics$REML, AIC = result$diagnostics$AIC, BIC = result$diagnostics$BIC ) ## ----fitted-model------------------------------------------------------------- fit <- result$fitted_model summary(fit) ## ----residual-plot, fig.width = 7, fig.height = 5----------------------------- plot( fitted(fit), resid(fit), xlab = "Fitted values", ylab = "Residuals", main = "Residuals versus Fitted Values" ) abline(h = 0, lty = 2) ## ----residual-qq-plot, fig.width = 7, fig.height = 5-------------------------- qqnorm(resid(fit)) qqline(resid(fit)) ## ----fitted-random-effects---------------------------------------------------- lme4::ranef(fit) ## ----keep-unit, eval = FALSE-------------------------------------------------- # result_unit <- sae_ml_linear( # formula = Y ~ X1 + X2 + X3 + X4 + Z1 + Z2 + (1 | kab_kota), # data_model = saeml_modelsvy, # data_proj = saeml_projsvy, # domain = "kab_kota", # cluster_ids = ~1, # weight = "WEIND", # strata = "kab_kota", # summary_function = "mean", # keep_unit = TRUE # ) # # head(result_unit$unit_projection) # # head(result_unit$unit_model_residual) ## ----direct-estimator, eval = FALSE------------------------------------------- # result_direct <- sae_ml_linear( # formula = Y ~ X1 + X2 + X3 + X4 + Z1 + Z2 + (1 | kab_kota), # data_model = saeml_modelsvy, # data_proj = saeml_projsvy, # domain = "kab_kota", # cluster_ids = ~1, # weight = "WEIND", # strata = "kab_kota", # summary_function = "mean", # return_direct = TRUE # ) # # head(result_direct$direct_estimator) ## ----multiple-domain-variables, eval = FALSE---------------------------------- # result_multi <- sae_ml_linear( # formula = Y ~ X1 + X2 + X3 + X4 + Z1 + Z2 + (1 | kab_kota), # data_model = saeml_modelsvy, # data_proj = saeml_projsvy, # domain = c("prov", "kab_kota"), # cluster_ids = ~1, # weight = "WEIND", # strata = "kab_kota", # summary_function = "mean" # ) # # head(result_multi$estimates) ## ----clustered-survey-design, eval = FALSE------------------------------------ # result_clustered <- sae_ml_linear( # formula = Y ~ X1 + X2 + X3 + X4 + Z1 + Z2 + (1 | kab_kota), # data_model = data_model, # data_proj = data_proj, # domain = "kab_kota", # cluster_ids = "psu_id", # weight = "survey_weight", # strata = "stratum", # summary_function = "mean", # nest = TRUE # ) ## ----output-structure--------------------------------------------------------- names(result)