R: Fitting of Gaussian Ancestral Graph Models

fitAncestralGraph {ggm} | R Documentation

## Fitting of Gaussian Ancestral Graph Models

### Description

Iterative conditional fitting of Gaussian Ancestral Graph Models.

### Usage

    fitAncestralGraph(amat, S, n, tol = 1e-06)

### Arguments

`amat` | a square matrix, representing the adjacency matrix of an ancestral graph.
`S` | a symmetric positive definite matrix with row and col names, the sample covariance matrix.
`n` | the sample size, a positive integer.
`tol` | a small positive number indicating the tolerance used in convergence checks.

### Details

In the Gaussian case, the models can be parameterized using precision parameters, regression coefficients, and error covariances (compare Richardson and Spirtes, 2002, Section 8). This function finds the MLE L of the precision parameters by fitting a concentration graph model. The MLE B of the regression coefficients and the MLE O of the error covariances are obtained by iterative conditional fitting (Drton and Richardson, 2003, 2004). The three sets of parameters are combined to the MLE S of the covariance matrix by matrix multiplication:

S = B^(-1) (L+O) B^(-t).

Note that in Richardson and Spirtes (2002), the matrices L and O are defined as submatrices.

### Value

`Shat` | the fitted covariance matrix.
`Lhat` | matrix of the fitted precisions associated with undirected edges and vertices that do not have an arrowhead pointing at them.
`Bhat` | matrix of the fitted regression coefficients associated to the directed edges. Precisely said `Bhat` contains ones on the diagonal and the off-diagonal entry (i,j) equals the negated MLE of the regression coefficient for variable j in the regression of variable i on its parents. Note that this (i,j) entry in `Bhat` corresponds to a directed edge j -> i, and thus to a one as (j,i) entry in the adjacency matrix.
`Ohat` | matrix of the error covariances and variances of the residuals between regression equations associated with bi-directed edges and vertices with an arrowhead pointing at them.
`dev` | the ‘deviance’ of the model.
`df` | the degrees of freedom.
`it` | the iterations.

### Author(s)

Mathias Drton

### References

Drton, M. and Richardson, T. S. (2003). A new algorithm for maximum likelihood estimation in Gaussian graphical models for marginal independence. Proceedings of the Nineteenth Conference on Uncertainty in Artificial Intelligence, 184-191.

Drton, M. and Richardson, T. S. (2004). Iterative Conditional Fitting for Gaussian Ancestral Graph Models. Proceedings of the 20th Conference on Uncertainty in Artificial Intelligence, Department of Statistics, 130-137.

Richardson, T. S. and Spirtes, P. (2002). Ancestral Graph Markov Models. Annals of Statistics. 30(4), 962-1030.

### See Also

`fitCovGraph`, `icf`, `makeMG`, `fitDag`

### Examples

    ## A covariance matrix
    "S" <- structure(c(2.93, -1.7, 0.76, -0.06,
                      -1.7, 1.64, -0.78, 0.1,
                       0.76, -0.78, 1.66, -0.78,
                      -0.06, 0.1, -0.78, 0.81), .Dim = c(4,4),
                     .Dimnames = list(c("y", "x", "z", "u"), c("y", "x", "z", "u")))
    ## The following should give the same fit.
    ## Fit an ancestral graph y -> x <-> z <- u
    fitAncestralGraph(ag1 <- makeMG(dg=DAG(x~y,z~u), bg = UG(~x*z)), S, n=100)

    ## Fit an ancestral graph y <-> x <-> z <-> u
    fitAncestralGraph(ag2 <- makeMG(bg= UG(~y*x+x*z+z*u)), S, n=100)

    ## Fit the same graph with fitCovGraph
    fitCovGraph(ag2, S, n=100)

    ## Another example for the mathematics marks data

    data(marks)
    S <- var(marks)
    mag1 <- makeMG(bg=UG(~mechanics*vectors*algebra+algebra*analysis*statistics))
    fitAncestralGraph(mag1, S, n=88)

    mag2 <- makeMG(ug=UG(~mechanics*vectors+analysis*statistics),
                   dg=DAG(algebra~mechanics+vectors+analysis+statistics))
    fitAncestralGraph(mag2, S, n=88) # Same fit as above

[Package ggm version 2.3 Index]