uniNetRand {netcmc} | R Documentation |
A function that generates samples for a univariate network group model.
Description
This function generates samples for a univariate network group model, which is given by
The covariates for the th individual in the
th spatial unit or other grouping are included in a
vector
. The corresponding
vector of fixed effect parameters are denoted by
, which has an assumed multivariate Gaussian prior with mean
and diagonal covariance matrix
that can be chosen by the user. A conjugate Inverse-Gamma prior is specified for
, and the corresponding hyperparamaterers (
,
) can be chosen by the user.
The vector of random effects for the groups are collectively denoted by
, and each element is assigned an independent zero-mean Gaussian prior distribution with a constant variance
. A conjugate Inverse-Gamma prior is specified for
. The corresponding hyperparamaterers (
,
) can be chosen by the user.
The vector of alter random effects are denoted by
and modelled as independently Gaussian with mean zero and a constant variance, and due to the row standardised nature of
,
represents the average (mean) effect that the peers of individual
in spatial unit or group
have on that individual.
is an isolation effect, which is an effect for individuals who don't nominate any friends. This is achieved by setting
if individual
nominates no peers and
otherwise, and if
then clearly
as
is the empty set. A conjugate Inverse-Gamma prior is specified for the random effects variance
, and the corresponding hyperparamaterers (
,
) can be chosen by the user.
The exact specification of each of the likelihoods (binomial, Gaussian, and Poisson) are given below:
Usage
uniNetRand(formula, data, trials, family, groupAssignment, W, numberOfSamples = 10,
burnin = 0, thin = 1, seed = 1, trueBeta = NULL,
trueGroupRandomEffects = NULL, trueURandomEffects = NULL,
trueTauSquared = NULL, trueSigmaSquaredU = NULL,
trueSigmaSquaredE = NULL, covarianceBetaPrior = 10^5, a1 = 0.001, b1 = 0.001,
a2 = 0.001, b2 = 0.001, a3 = 0.001, b3 = 0.001,
centerGroupRandomEffects = TRUE, centerURandomEffects = TRUE)
Arguments
formula |
A formula for the covariate part of the model using a similar syntax to that used in the lm() function. |
data |
An optional data.frame containing the variables in the formula. |
trials |
A vector the same length as the response containing the total number of trials
|
family |
The data likelihood model that must be “gaussian", “poisson" or “binomial". |
W |
A matrix |
groupAssignment |
The binary matrix of individual's assignment to groups used in the model fitting process. |
numberOfSamples |
The number of samples to generate pre-thin. |
burnin |
The number of MCMC samples to discard as the burn-in period. |
thin |
The value by which to thin |
seed |
A seed for the MCMC algorithm. |
trueBeta |
If available, the true value of |
trueGroupRandomEffects |
If available, the true value of |
trueURandomEffects |
If available, the true value of |
trueTauSquared |
If available, the true value |
trueSigmaSquaredU |
If available, the true value |
trueSigmaSquaredE |
If available, the true value |
covarianceBetaPrior |
A scalar prior |
a1 |
The shape parameter for the Inverse-Gamma distribution
relating to the group random effects |
b1 |
The shape parameter for the Inverse-Gamma distribution
relating to the group random effects |
a2 |
The shape parameter for the Inverse-Gamma distribution
relating to the network random effects |
b2 |
The scale parameter for the Inverse-Gamma distribution
relating to the network random effects |
a3 |
The shape parameter for the Inverse-Gamma distribution
relating to the error terms |
b3 |
The scale parameter for the Inverse-Gamma distribution
relating to the error terms |
centerGroupRandomEffects |
A choice to center the group random effects after each iteration of the MCMC sampler. |
centerURandomEffects |
A choice to center the network random effects after each iteration of the MCMC sampler. |
Value
call |
The matched call. |
y |
The response used. |
X |
The design matrix used. |
standardizedX |
The standardized design matrix used. |
groupAssignment |
The group assignment matrix used. |
W |
The network matrix used. |
samples |
The matrix of simulated samples from the posterior distribution of each parameter in the model (excluding random effects). |
betaSamples |
The matrix of simulated samples from the posterior
distribution of |
tauSquaredSamples |
The vector of simulated samples from the posterior
distribution of |
sigmaSquaredUSamples |
The vector of simulated samples from the posterior
distribution of |
sigmaSquaredESamples |
The vector of simulated samples from the posterior
distribution of |
groupRandomEffectsSamples |
The matrix of simulated samples from the posterior
distribution of spatial/grouping random effects |
uRandomEffectsSamples |
The matrix of simulated samples from the posterior
distribution of network random effects |
acceptanceRates |
The acceptance rates of parameters in the model (excluding random effects) from the MCMC sampling scheme . |
groupRandomEffectsAcceptanceRate |
The acceptance rates of spatial/grouping random effects in the model from the MCMC sampling scheme. |
uRandomEffectsAcceptanceRate |
The acceptance rates of network random effects in the model from the MCMC sampling scheme. |
timeTaken |
The time taken for the model to run. |
burnin |
The number of MCMC samples to discard as the burn-in period. |
thin |
The value by which to thin |
DBar |
DBar for the model. |
posteriorDeviance |
The posterior deviance for the model. |
posteriorLogLikelihood |
The posterior log likelihood for the model. |
pd |
The number of effective parameters in the model. |
DIC |
The DIC for the model. |
Author(s)
George Gerogiannis
Examples
#################################################
#### Run the model on simulated data
#################################################
#### Load other libraries required
library(MCMCpack)
#### Set up a network
observations <- 200
numberOfMultipleClassifications <- 50
W <- matrix(rbinom(observations * numberOfMultipleClassifications, 1, 0.05),
ncol = numberOfMultipleClassifications)
numberOfActorsWithNoPeers <- sum(apply(W, 1, function(x) { sum(x) == 0 }))
peers <- sample(1:numberOfMultipleClassifications, numberOfActorsWithNoPeers,
TRUE)
actorsWithNoPeers <- which(apply(W, 1, function(x) { sum(x) == 0 }))
for(i in 1:numberOfActorsWithNoPeers) {
W[actorsWithNoPeers[i], peers[i]] <- 1
}
W <- t(apply(W, 1, function(x) { x / sum(x) }))
#### Set up a single level classification
numberOfSingleClassifications <- 20
factor = sample(1:numberOfSingleClassifications, observations, TRUE)
V = matrix(NA, ncol = numberOfSingleClassifications, nrow = observations)
for(i in 1:length(factor)){
for(j in 1:numberOfSingleClassifications){
if(factor[i] == j){
V[i, j] = 1
} else {
V[i, j] = 0
}
}
}
#### Generate the covariates and response data
X <- matrix(rnorm(2 * observations), ncol = 2)
colnames(X) <- c("x1", "x2")
beta <- c(1, -0.5, 0.5)
tauSquared <- 0.5
vRandomEffects <- rnorm(numberOfSingleClassifications, mean = 0,
sd = sqrt(tauSquared))
sigmaSquaredU <- 1
uRandomEffects <- rnorm(numberOfMultipleClassifications, mean = 0,
sd = sqrt(sigmaSquaredU))
logTheta <- cbind(rep(1, observations), X) %*% beta + V %*% vRandomEffects
+ W %*% uRandomEffects
Y <- rpois(n = observations, lambda = exp(logTheta))
data <- data.frame(cbind(Y, X))
#### Run the model
formula <- Y ~ x1 + x2
## Not run: model <- uniNetRand(formula = formula, data = data, family="poisson",
W = W, groupAssignment = V,
numberOfSamples = 10000, burnin = 10000,
thin = 10, seed = 1)
## End(Not run)