mipfp (version 3.2.1)

vcov.mipfp: Calculate variance-covariance matrix for mipfp objects

Description

This function determines the (asymptotic) covariance matrix of the estimates in an mipfp object using either the Delta formula designed by Little and Wu (1991) or Lang's formula (2004).

Usage

# S3 method for mipfp
vcov(object, method.cov = "delta", seed = NULL, 
     target.data = NULL, target.list = NULL, replace.zeros = 1e-10, ...)

Arguments

object

An object of class mipfp.

method.cov

Select the method to use for the computation of the covariance. The available methods are delta and lang.

seed

The initial multi-dimensional array used to create object (optional).

target.data

A list containing the data of the target margins used to create object. Each component of the list is an array storing a margin. The list order must follow the one defined in target.list (optional).

target.list

A list of the target margins used to create object function. Each component of the list is an array whose cells indicates which dimension the corresponding margin relates to (optional).

replace.zeros

If 0-cells are to be found, then their values are replaced with this value.

...

Not used.

Value

A list with the following components:

x.hat.cov

A covariance matrix of the estimated counts (last index move fastest) computed using the method specified in cov.method.

p.hat.cov

A covariance matrix of the estimated probabilities (last index move fastest) computed using the method specified in cov.method.

x.hat.se

The standard deviation of the estimated counts (last index move fastest) computed using the method specified in cov.method.

p.hat.se

The standard deviation of the estimated probabilities (last index move fastest) computed using the method specified in cov.method.

df

Degrees of freedom of the estimates.

method.cov

The method used to compute the covariance matrix.

Details

The asymptotic covariance matrix of the estimates probabilities using Delta's formula has the form (Little and Wu, 1991) $$K(K^T D1^{-1} K)^{-1} K^T D2^{-1} K (K^T D1^{-1} K)^{-1} K^T$$ where

  • K is the orthogonal complement of the marginal matrix, i.e. the matrix \(A\) required to obtain the marginal frequencies \(m\);

  • D1 and D2 are two diagonal matrices whose components depends on the estimation process used to generate object.

If the estimation process has been done using

  • ipfp then \(diag(D1) = \hat{p}\) and \(diag(D2) = p_*\);

  • ml then \(diag(D1) = \frac{\hat{p}^2}{p_*}\) and \(diag(D2) = diag(D1)\);

  • chi2 then \(diag(D1) = \frac{\hat{p}^4}{p_*^3}\) and \(diag(D2) = diag(D1)\);

  • lsq then \(diag(D1) = p_*\) and \(diag(D2) = \frac{p_*3}{\hat{p}^2}\);

where \(\hat{p}\) is the vector of estimated probabilities and \(p_*\) is the vector of the seed probabilities.

Using Lang's formula (2004), the covariance matrix becomes $$\frac{1}{N} \left( D - \hat{p}\hat{p}^T - D H(H^T D H)^{-1} H^T D \right)$$ where

  • D is a diagonal matrix of the estimated probabilities \(\hat{p}\);

  • H denotes the Jacobian evaluated in \(\hat{p}\) of the function \(h(p) = A^T p - m\).

References

Lang, J.B. (2004) Multinomial-Poisson homogeneous models for contingency tables. Annals of Statistics 32(1): 340-383.

Little, R. J., Wu, M. M. (1991) Models for contingency tables with known margins when target and seed populations differ. Journal of the American Statistical Association 86 (413): 87-95.

See Also

Estimate function to create an object of class mipfp and to update an initial multidimensional array with respect to given constraints.

Examples

Run this code
# NOT RUN {
# true contingency (2-way) table
true.table <- array(c(43, 44, 9, 4), dim = c(2, 2))
# generation of sample, i.e. the seed to be updated
seed <- ceiling(true.table / 10)
# desired targets (margins)
target.row <- apply(true.table, 2, sum)
target.col <- apply(true.table, 1, sum)
# storing the margins in a list
target.data <- list(target.col, target.row)
# list of dimensions of each marginal constrain
target.list <- list(1, 2)
# calling the Estimate function
res <- Estimate(seed, target.list, target.data)
# printing the variance-covariance matrix
print(vcov(res))
# }

Run the code above in your browser using DataLab