Description Usage Arguments Details Value References Examples
Implement a number of modifications to the linearinmeans model to obtain different weighted versions of KatzBonacich centrality.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  net_dep(
formula = formula(),
data = list(),
G = list(),
model = c("model_A", "model_B"),
estimation = c("NLLS", "MLE"),
hypothesis = c("lim", "het", "het_l", "het_r", "par", "par_split_with",
"par_split_btw", "par_split_with_btw"),
endogeneity = FALSE,
correction = NULL,
first_step = NULL,
z = NULL,
formula_first_step = NULL,
exclusion_restriction = NULL,
start.val = NULL,
to_weight = NULL,
time_fixed_effect = NULL,
ind_fixed_effect = NULL,
mle_controls = NULL,
kappa = NULL,
delta = NULL
)

formula 
an object of class 
data 
an object of class 
G 
an object of class 
model 
string. One of 
estimation 
string. One of 
hypothesis 
string. One of 
endogeneity 
logical. Default is 
correction 
Default is 
first_step 
Default is NULL. If 
z 
numeric vector. It specifies the source of heterogeneity for peer effects when 
formula_first_step 
an optional object of class 
exclusion_restriction 
an object of class 
start.val 
an optional list containing the starting values for the estimations. Object names must match the names provided in 
to_weight 
an optional vector of weights to be used in the fitting process to indicate that different observations have different variances. Should be 
time_fixed_effect 
an optional string. It indicates the name of the time index used in formula. It is used for models with longitudinal data. 
ind_fixed_effect 
an optional string. Default is 
mle_controls 
a list allowing the user to set upper and lower bounds for control variables in MLE estimation and the variance for the ML estimator. See details. 
kappa 
a normalization level with default equals 1 used in MLE estimation. 
delta 
Default is 
Agent's parameterdependent centrality is obtained as a function of
the agent's characteristics and the performance of its socially connected peers, as in Battaglini, Leone Sciabolazza, Patacchini (2020), if model = "model_B"
;
the performance of its socially connected peers, as in Battaglini, Patacchini (2018), if model = "model_A"
.
Peer effects are assumed to be homogenous if hypothesis = "lim"
. They are assumed to be heterogenous by setting:
hypothesis = "het"
, when peers' performance is susceptible to agent's characteristics and model = "model_A"
.
hypothesis = "het_l"
, when peers' performance is susceptible to agent's characteristics and model = "model_B"
.
hypothesis = "het_r"
, when agent's performance is susceptible to peers' characteristics and model = "model_B"
.
hypothesis = "par"
, when model = "model_B"
, if the network is formed by interactions between and within two different groups.
hypothesis = "par_split_with"
, when model = "model_B"
, if the network is formed by interactions between and within two different groups, and interactions within each group are different from the other.
hypothesis = "par_split_btw"
, when model = "model_B"
, if the network is formed by interactions between and within two different groups, and interactions between groups are different according to their direction.
hypothesis = "par_split_with_btw"
, when model = "model_B"
, if the network is formed by interactions between and within two different groups, interactions within each group are different from the other, and interactions between groups are different according to their direction.
When hypothesis
is equal to "het"
, "het_l"
, or "het_r"
, the argument z
is used to specify the source of heterogeneity: i.e. the attribute affecting the ability of the agent to influence or be influenced by peers.
When hypothesis
is equal to "par"
, "par_split_with"
, "par_split_btw"
, or "par_split_with_btw"
the argument "z"
is used to partition observations in two groups: e.g. the generic element i of vector z
takes the value 1 if agent i is member of the first group, and it takes 2 otherwise.
If endogeneity = TRUE
, a twostep estimation is implemented to control for network endogeneity. The argument first_step
is used to control for the specification of the firststep model, e.g.:
first_step = "standard"
is used when agents' connection are predicted by the differences in their characteristics (i.e. those on the right hand side of formula
), and an exclusion_restriction
: i.e., their connections in a different network.
first_step = "fe"
adds to the standard
model, individual fixed effects, as in Graham (2017).
first_step = "shortest"
adds to the standard
model, the shortest distance between i and j, excluding the link between i and j itself, as in Fafchamps et al (2010).
first_step = "coauthor"
adds to the standard
model, the number of shared connections between i and j, as in Graham (2015).
first_step = "degree"
adds to the standard
model, the difference in the degree centrality of i and j.
The argument start.val
is used to specify starting estimates. This can be done with a named list. If a factor is present, a value for each treatment contrast
must be provided. Labels of treatment contrast
s must be assigned following R model design standards: e.g., a number is appended to contrast names as in contrasts()
.
The starting value referring to the intercept (constant) must be labelled as "alpha". The label(s) for decay parameter(s) must be:
"phi"
, if hypothesis="lim"
or hypothesis="het"
"theta_0","theta_1"
, if hypothesis="het_l"
"eta_0","eta_1"
, if hypothesis="het_r"
"phi_within","phi_between"
, if hypothesis="par"
"phi_within_0","phi_within_1","phi_between"
, if hypothesis="par_split_with"
"phi_within","phi_between_0","phi_between_1"
, if hypothesis="par_split_btw"
"phi_within_0","phi_within_1","phi_between_0","phi_between_1"
, if hypothesis="par_split_with_btw"
The interaction term when hypothesis="het"
must be labelled "gamma"
. The label to be used for unobservables when endogeneity = TRUE
is "unobservables"
. When estimation = "MLE"
, it is required to set also the starting value for the variance of the ML estimator. This should be labelled as "sigma".
The argument mle_controls
takes a list of two objects. The first is a named numeric vector used to set upper and lower bounds for control variables. The second object is a vector used to set upper (first value) and lower (second value) bounds for the variance of the Maximum Likelihood estimator.
Names in mle_controls
must be equal to those used in start.val
.
For additional details, see the vignette.
A list of three objects: i) Estimates of the main regression; ii) The vector of agents' parameterdependent centrality; iii) Estimates of the firststep regression (if endogeneity = TRUE
)
Battaglini M., E. Patacchini (2018), "Influencing Connected Legislators," Journal of Political Economy, 126(6): 22772322.
Battaglini M., V. Leone Sciabolazza, E. Patacchini (2020), "Effectiveness of Connected Legislators," American Journal of Political Science, forthcoming.
Battaglini M., V. Leone Sciabolazza, E. Patacchini, S. Peng (2020), "Econet: An R package for the Estimation of parameterdependent centrality measures", Mimeo.
Fafchamps, M., M. J. Leij and S. Goyal (2010), “Matching and network effects,” Journal of the European Economic Association, 8(1): 203231.
Graham B. (2015), “Methods of identification in social networks,” Annual Review of Economics, 7, 465  485.
Graham B. (2017), “An econometric model of network formation with degree heterogeneity,” Econometrica 85 (4), 1033  1063.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167  # Model A
# Load data
data("a_db_alumni")
data("a_G_alumni_111")
db_model_A < a_db_alumni
G_model_A < a_G_alumni_111
are_factors < c("party", "gender", "nchair", "isolate")
db_model_A[are_factors] < lapply(db_model_A[are_factors] ,factor)
db_model_A$PAC < db_model_A$PAC/1e+06
# Specify formula
f_model_A < formula("PAC ~ gender + party + nchair + isolate")
# Specify starting values
starting < c(alpha = 0.47325,
beta_gender1 = 0.26991,
beta_party1 = 0.55883,
beta_nchair1 = 0.17409,
beta_isolate1 = 0.18813,
phi = 0.21440)
# Fit Linearinmeans model
lim_model_A < net_dep(formula = f_model_A, data = db_model_A,
G = G_model_A, model = "model_A", estimation = "NLLS",
hypothesis = "lim", start.val = starting)
summary(lim_model_A)
lim_model_A$centrality
# Test Heterogeneity
# Heterogeneous factor
z < as.numeric(as.character(db_model_A$gender))
# Specify formula
f_het_model_A < formula("PAC ~ party + nchair + isolate")
# Specify starting values
starting < c(alpha = 0.44835,
beta_party1 = 0.56004,
beta_nchair1 = 0.16349,
beta_isolate1 = 0.21011,
beta_z = 0.26015,
phi = 0.34212,
gamma = 0.49960)
# Fit model
het_model_A < net_dep(formula = f_het_model_A, data = db_model_A,
G = G_model_A, model = "model_A", estimation = "NLLS",
hypothesis = "het", z = z, start.val = starting)
summary(het_model_A)
het_model_A$centrality
# Model B
# Load data
data("db_cosponsor")
data("G_alumni_111")
db_model_B < db_cosponsor
G_model_B < G_cosponsor_111
G_exclusion_restriction < G_alumni_111
are_factors < c("party", "gender", "nchair")
db_model_B[are_factors] < lapply(db_model_B[are_factors], factor)
# Specify formula
f_model_B < formula("les ~ gender + party + nchair")
# Specify starting values
starting < c(alpha = 0.23952,
beta_gender1 = 0.22024,
beta_party1 = 0.42947,
beta_nchair1 = 3.09615,
phi = 0.40038,
unobservables = 0.07714)
# Fit Linearinmeans model
lim_model_B < net_dep(formula = f_model_B, data = db_model_B,
G = G_model_B, model = "model_B", estimation = "NLLS",
hypothesis = "lim", endogeneity = TRUE,
correction = "heckman", first_step = "standard",
exclusion_restriction = G_exclusion_restriction,
start.val = starting)
summary(lim_model_B)
lim_model_B$centrality
summary(lim_model_B, print = "first.step")
# Test Heterogeneity
# Heterogeneous factor (node level)
z < as.numeric(as.character(db_model_B$gender))
# Specify formula
f_het_model_B < formula("les ~ party + nchair")
# Specify starting values
starting < c(alpha = 0.23952,
beta_party1 = 0.42947,
beta_nchair1 = 3.09615,
beta_z = 0.12749,
theta_0 = 0.42588,
theta_1 = 0.08007)
# Fit model
het_model_B_l < net_dep(formula = f_het_model_B,
data = db_model_B,
G = G_model_B, model = "model_B", estimation = "NLLS",
hypothesis = "het_l", z = z, start.val = starting)
# Store and print results
summary(het_model_B_l)
het_model_B_l$centrality
# Specify starting values
starting < c(alpha = 0.04717,
beta_party1 = 0.51713,
beta_nchair1 = 3.12683,
beta_z = 0.01975,
eta_0 = 1.02789,
eta_1 = 2.71825)
# Fit model
het_model_B_r < net_dep(formula = f_het_model_B,
data = db_model_B,
G = G_model_B, model = "model_B", estimation = "NLLS",
hypothesis = "het_r", z = z, start.val = starting)
# Store and print results
summary(het_model_B_r)
het_model_B_r$centrality
# Heterogeneous factor (edge level)
z < as.numeric(as.character(db_model_B$party))
# Specify starting values
starting < c(alpha = 0.242486,
beta_gender1 = 0.229895,
beta_party1 = 0.42848,
beta_nchair1 = 3.0959,
phi_within = 0.396371,
phi_between = 0.414135)
# Fit model
party_model_B < net_dep(formula = f_model_B, data = db_model_B,
G = G_model_B, model = "model_B",
estimation = "NLLS", hypothesis = "par",
z = z, start.val = starting)
# Store and print results
summary(party_model_B)
party_model_B$centrality
# WARNING, This toy example is provided only for runtime execution.
# Please refer to previous examples for sensible calculations.
data("db_alumni_test")
data("G_model_A_test")
db_model_A < db_alumni_test
G_model_A < G_model_A_test
f_model_A < formula("les ~ dw")
lim_model_A_test < net_dep(formula = f_model_A, data = db_model_A,
G = G_model_A, model = "model_A", estimation = "NLLS",
hypothesis = "lim", start.val = c(alpha = 0.09030594,
beta_dw = 1.21401940,
phi = 1.47140647))
summary(lim_model_A_test)

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.