varner {saeMSPE} | R Documentation |
Estimates of the variance component using several methods for Nested error regression model.
Description
This function returns the estimate of variance component with several existing method for Nested error regression model. This function does not accept missing values.
Usage
varner(ni, X, Y, method)
Arguments
ni |
(vector). It represents the sample number for every small area. |
X |
(matrix). Stands for the available auxiliary values. |
Y |
(vector). It represents the response value for Nested error regression model. |
method |
The variance component estimation method to be used. See "Details". |
Details
Default value for method
is 1, It represents the moment estimator, Also called ANOVA estimator, The available variance component estimation method are list as follows:
method = 1
represents the MOM estimator;
method = 2
represents the restricted maximum likelihood (REML) estimator;
method = 3
represents the maximum likelihood (ML) estimator;
method = 4
represents the empirical bayesian (EB) estimator;
Value
This function returns a list with components:
bhat |
(vector) Estimates of the unknown regression coefficients. |
sigvhat2 |
(numeric) Estimates of the area-specific variance component. |
sigehat2 |
(numeric) Estimates of the random error variance component. |
Author(s)
Peiwen Xiao, Xiaohui Liu, Yuzi Liu, Jiming Jiang, and Shaochu Liu
References
J. Jiang. Linear and Generalized Linear Mixed Models and Their Applications. 2007.
Examples
### parameter setting
Ni = 1000; sigmaX = 1.5; m = 10
beta = c(0.5, 1)
sigma_v2 = 0.8; sigma_e2 = 1
ni = sample(seq(1,10), m,replace = TRUE); n = sum(ni)
p = length(beta)
### population function
pop.model = function(Ni, sigmaX, beta, sigma_v2, sigma_e2, m){
x = rnorm(m * Ni, 1, sqrt(sigmaX)); v = rnorm(m, 0, sqrt(sigma_v2)); y = numeric(m * Ni)
theta = numeric(m); kk = 1
for(i in 1 : m){
sumx = 0
for(j in 1:Ni){
sumx = sumx + x[kk]
y[kk] = beta[1] + beta[2] * x[kk] + v[i] + rnorm(1, 0, sqrt(sigma_e2))
kk = kk + 1
}
meanx = sumx/Ni
theta[i] = beta[1] + beta[2] * meanx + v[i]
}
group = rep(seq(m), each = Ni)
x = cbind(rep(1, m*Ni), x)
data = cbind(x, y, group)
return(list(data = data, theta = theta))
}
### sample function
sampleXY = function(Ni, ni, m, Population){
Indx = c()
for(i in 1:m){
Indx = c(Indx, sample(c(((i - 1) * Ni + 1) : (i * Ni)), ni[i]))
}
Sample = Population[Indx, ]; Nonsample = Population[-Indx, ]
return(list(Sample, Nonsample))
}
### data generation process
Population = pop.model(Ni, sigmaX, beta, sigma_v2, sigma_e2, m)$data
XY = sampleXY(Ni, ni, m, Population)[[1]]
X = XY[, 1:p]
Y = XY[, p+1]
### variance component estimate
varner(ni,X,Y,1)