sar {CDatanet}  R Documentation 
sar
is used to estimate peer effects continuous variables (see details). The model is presented in Lee(2004).
sar(
formula,
contextual,
Glist,
lambda0 = NULL,
fixed.effects = FALSE,
optimizer = "optim",
opt.ctr = list(),
print = TRUE,
cov = TRUE,
data
)
formula 
an object of class formula: a symbolic description of the model. The 
contextual 
(optional) logical; if true, this means that all individual variables will be set as contextual variables. Set the

Glist 
the adjacency matrix or list subadjacency matrix. 
lambda0 
(optional) starting value of 
fixed.effects 
logical; if true, group heterogeneity is included as fixed effects. 
optimizer 
is either 
opt.ctr 
list of arguments of nlm or optim (the one set in 
print 
a Boolean indicating if the estimate should be printed at each step. 
cov 
a Boolean indicating if the covariance should be computed. 
data 
an optional data frame, list or environment (or object coercible by as.data.frame to a data frame) containing the variables
in the model. If not found in data, the variables are taken from 
The variable \mathbf{y}
is given for all i as
y_i = \lambda \mathbf{g}_i y + \mathbf{x}_i'\beta + \mathbf{g}_i\mathbf{X}\gamma + \epsilon_i,
where \epsilon_i \sim N(0, \sigma^2)
.
A list consisting of:
info 
list of general information on the model. 
estimate 
Maximum Likelihood (ML) estimator. 
cov 
covariance matrix of the estimate. 
details 
outputs as returned by the optimizer. 
Lee, L. F. (2004). Asymptotic distributions of quasimaximum likelihood estimators for spatial autoregressive models. Econometrica, 72(6), 18991925, doi:10.1111/j.14680262.2004.00558.x.
# Groups' size
M < 5 # Number of subgroups
nvec < round(runif(M, 100, 1000))
n < sum(nvec)
# Parameters
lambda < 0.4
beta < c(2, 1.9, 0.8)
gamma < c(1.5, 1.2)
sigma < 1.5
theta < c(lambda, beta, gamma, sigma)
# X
X < cbind(rnorm(n, 1, 1), rexp(n, 0.4))
# Network
Glist < list()
for (m in 1:M) {
nm < nvec[m]
Gm < matrix(0, nm, nm)
max_d < 30
for (i in 1:nm) {
tmp < sample((1:nm)[i], sample(0:max_d, 1))
Gm[i, tmp] < 1
}
rs < rowSums(Gm); rs[rs == 0] < 1
Gm < Gm/rs
Glist[[m]] < Gm
}
# data
data < data.frame(x1 = X[,1], x2 = X[,2])
rm(list = ls()[!(ls() %in% c("Glist", "data", "theta"))])
ytmp < simsar(formula = ~ x1 + x2  x1 + x2, Glist = Glist,
theta = theta, data = data)
y < ytmp$y
# plot histogram
hist(y, breaks = max(y))
data < data.frame(yt = y, x1 = data$x1, x2 = data$x2)
rm(list = ls()[!(ls() %in% c("Glist", "data"))])
out < sar(formula = yt ~ x1 + x2, contextual = TRUE,
Glist = Glist, optimizer = "optim", data = data)
summary(out)