R/margins.R
compute_margins.Rd
These functions allows checking a fit in terms of the original input data.
compute_margins(ml_problem, weights, verbose = FALSE)
margin_to_df(controls, count = NULL, verbose = FALSE)
A fitting problem created by
ml_problem()
or returned by flatten_ml_fit_problem()
.
A vector with one entry per row of the original reference sample
If TRUE
, print diagnostic output.
Margins as returned by compute_margins
or as passed
to the controls
parameter of ml_problem()
.
Name of control total column, autodetected by default.
compute_margins()
returns a named list with two components,
individual
and group
. Each contains a list of margins as data.frame
s.
margins_to_df()
returns a data frame with the following columns:
..control.type..
Type of the control total: either individual
or group
.
..control.name..
Name of the control total, if exists.
..id..
Name of the control category.
..count..
Count of the control category.
compute_margins()
computes margins in the format used for the input
controls (i.e., as expected by the controls
parameter of the
ml_problem()
function), based on a reference sample and a weight vector.
margins_to_df()
converts margins to a data frame for easier comparison.
path <- toy_example("Tiny")
problem <- readRDS(path)
fit <- ml_fit(ml_problem = problem, algorithm = "entropy_o")
margins <- compute_margins(problem, fit$weights)
margins
#> $individual
#> $individual$IND
#> WKSTAT N
#> 1 1 91
#> 2 2 65
#> 3 3 104
#>
#>
#> $group
#> $group$GROUP
#> CAR N
#> 1 0 35
#> 2 1 65
#>
#>
margin_to_df(problem$controls)
#> ..control.type.. ..control.name.. ..id.. ..count..
#> 1 individual IND 1 91
#> 2 individual IND 2 65
#> 3 individual IND 3 104
#> 4 group GROUP 0 35
#> 5 group GROUP 1 65
margin_to_df(margins)
#> ..control.type.. ..control.name.. ..id.. ..count..
#> 1 individual IND 1 91
#> 2 individual IND 2 65
#> 3 individual IND 3 104
#> 4 group GROUP 0 35
#> 5 group GROUP 1 65