Visibility from aggregate relational data
vis_aggregate.RdUses respondents' estimated personal network sizes — the output of the known-population scale-up method — as the basis for visibility. It is the bridge between this package's two halves: the ARD / scale-up side estimates how many people a respondent knows, and the estimator spine needs to know how many people could have reported an alter.
Arguments
- degree.var
name of the column in the donor frame holding each donor's estimated degree, as from
kp.degree.estimator()- frame.ratio
the share of the population that is in the frame population,
N_F / N. Required whendegree.counts = "population"- degree.counts
does
degree.varcount connections to the whole population ("population", the default, and whatkp.degree.estimator()returns) or only to frame members ("frame", where no conversion is needed)?- donor
"egos"to use the survey respondents, or a data frame- statistic
how to summarise donors' degrees:
"harmonic"(the default, for the reason given invis_from_donor()),"arithmetic"or"median"- match_on
optional covariates to match alters to donors on, as in
vis_from_donor()- label
optional short name for provenance
What it assumes, and why one argument has no default
kp.degree.estimator() returns each respondent's degree with respect to the
whole population: how many people they know, full stop. Visibility is a
narrower thing — how many frame-population members could report an alter.
Converting one into the other needs the share of the population that is in
the frame, and nothing in the data supplies it. That is frame.ratio, and it
deliberately has no default, for the same reason tie_config() has no
default structure: getting it wrong scales every estimate by a constant and
nothing complains.
Two further assumptions come with the method rather than with this function, and are recorded in the provenance:
the tie is roughly symmetric, so that an alter's connections to frame members can be inferred from respondents' connections in general;
respondents' degrees stand in for alters'. Where the two populations differ — and for mortality they differ in the most relevant way, since the alters include the dead — this is the same substitution
vis_from_donor()makes, with the same direction of error.
Why the frame split still matters here
This assigns what is essentially one number per matched cell, and a visibility constant within a cell cancels out of a rate. Preserving the on-frame / off-frame asymmetry is therefore not a refinement: without it this rule reduces exactly to the aggregate estimator, and the ARD does no work at all.
Examples
# respondents know ~250 people; a fifth of the population is in the frame
vis_aggregate("d.hat", frame.ratio = 0.2)
#> <visibility_rule: ard(d.hat)>
#> requires: .sib.in.F
#> is_estimated: TRUE (refit within each bootstrap replicate)
#> parameters:
#> degree.var = d.hat
#> frame.ratio = 0.2
#> degree.counts = population
#> statistic = harmonic
#> match_on = NULL
#> label = NULL
#> assumptions:
#> - visibility comes from respondents' estimated degrees in 'd.hat', summarised by their weighted harmonic mean
#> - degrees count connections to the whole population and are scaled by frame.ratio = 0.2 to get frame-member connections
#> - the tie is roughly symmetric, so alters' connections to frame members can be inferred from respondents' connections in general
#> - respondents' degrees stand in for alters'; for mortality the alters include the dead, so this substitution errs in the same direction as any donor rule