| response.zigp {ZIGP} | R Documentation |
'response.zigp' generates a ZIGP response vector for a given setting of linear predictors.
response.zigp(X, W, Z, beta, alpha, gamma)
X |
design matrix of dim (n x p) for modelling of mean |
W |
design matrix of dim (n x r) for modelling of overdispersion |
Z |
design matrix of dim (n x q) for modelling of zero inflation |
beta |
regression parameters for mean of length p |
alpha |
regression parameters for overdispersion of length r |
gamma |
regression parameters for zero inflation of length q |
Generates a ZIGP response vector of length n.
X <- matrix(c(1:3,4,3,5),3,2)
W <- c(3,-4,-1)
Z <- rep(1,3)
beta <- c(5,-2)
alpha <- 3.4
gamma <- -10
# set seed for random variable generator
set.seed(1)
response.zigp(X,W,Z,beta,alpha,gamma)
#[1] 0 55 132
## The function is currently defined as
function(X, W, Z, beta, alpha, gamma)
{
# get number of observations from X, W and Z
if(is.matrix(X)) {
nx <- dim(X)[1]
}
else {
nx <- length(X)
}
if(is.matrix(W)) {
nw <- dim(W)[1]
}
else {
nw <- length(W)
}
if(is.matrix(Z)) {
nz <- dim(Z)[1]
}
else {
nz <- length(Z)
}
if (nx==nz&nx==nw) {
n <- nx
mu <- double(n)
phi <- double(n)
omega <- double(n)
Y <- double(n)
if(is.matrix(X)) {
mu <- exp(X%*%beta)
}
else {
mu <- exp(X*beta)
}
if(is.matrix(W)) {
phi <- 1 + exp(W%*%alpha)
}
else {
phi <- 1 + exp(W*alpha)
}
if(is.matrix(Z)) {
omega <- exp(Z%*%gamma)/(1+exp(Z%*%gamma))
}
else {
omega <- exp(Z*gamma)/(1+exp(Z*gamma))
}
# create ZIGP response for all i
for(i in 1:n) {
Y[i] <- rzigp(1, mu[i], phi[i], omega[i])
}
return(Y)
}
else {
print("X, W and Z do not have the same numbers of rows!")
}
}