qdg.sem {qtlnet} | R Documentation |
Score directed graphs outputed by qdg using structural equation models (SEM)
Description
Score directed graphs (cyclic or acyclic) outputed by qdg function using the sem R package.
Usage
qdg.sem(qdgObject, cross)
## S3 method for class 'qdg.sem'
print(x, ...)
## S3 method for class 'qdg.sem'
summary(object, ...)
Arguments
qdgObject |
list containing the output of |
cross |
object of class |
x , object |
object of class |
... |
extra arguments to print or summary (ignored). |
Details
Fits a SEM to the phenotypes network. QTLs are not included as variables in the model. When additive covariates are used in qdg, qdg.sem fits a SEM model to the residuals of the variables after adjustment of the additive covariates.
Value
List object that inherits class "qdg.sem" and "qdg" composed by:
best.SEM |
Solution with lowest SEM BIC (best fit to the data). |
BIC.SEM |
Vector with the BIC values of all solutions from qdg. |
path.coeffs |
Path coefficients associated with the best SEM solution. |
Solutions |
Solutions of dependency graph after recheck step (output of steps 3, 4 and 5 of the QDG algorithm.) |
marker.names |
List of character strings, one for each of
|
phenotype.names |
Character string with names of phenotype nodes
corresponding to phenotypes in |
dropped |
Indexes of solutions that were dropped ( |
See Also
Examples
## simulate a genetic map (20 autosomes, 10 not equaly spaced markers per
## chromosome)
mymap <- sim.map(len=rep(100,20), n.mar=10, eq.spacing=FALSE, include.x=FALSE)
## simulate an F2 cross object with n.ind (number of individuals)
n.ind <- 200
mycross <- sim.cross(map=mymap, n.ind=n.ind, type="f2")
## produce multiple imputations of genotypes using the
## sim.geno function. The makeqtl function requires it,
## even though we are doing only one imputation (since
## we don't have missing data and we are using the
## genotypes in the markers, one imputation is enough)
mycross <- sim.geno(mycross,n.draws=1)
## sample markers (2 per phenotype)
genotypes <- pull.geno(mycross)
geno.names <- dimnames(genotypes)[[2]]
m1 <- sample(geno.names,2,replace=FALSE)
m2 <- sample(geno.names,2,replace=FALSE)
m3 <- sample(geno.names,2,replace=FALSE)
m4 <- sample(geno.names,2,replace=FALSE)
## get marker genotypes
g11 <- genotypes[,m1[1]]; g12 <- genotypes[,m1[2]]
g21 <- genotypes[,m2[1]]; g22 <- genotypes[,m2[2]]
g31 <- genotypes[,m3[1]]; g32 <- genotypes[,m3[2]]
g41 <- genotypes[,m4[1]]; g42 <- genotypes[,m4[2]]
## generate phenotypes
y1 <- runif(3,0.5,1)[g11] + runif(3,0.5,1)[g12] + rnorm(n.ind)
y2 <- runif(3,0.5,1)[g21] + runif(3,0.5,1)[g22] + rnorm(n.ind)
y3 <- runif(1,0.5,1) * y1 + runif(1,0.5,1) * y2 + runif(3,0.5,1)[g31] +
runif(3,0.5,1)[g32] + rnorm(n.ind)
y4 <- runif(1,0.5,1) * y3 + runif(3,0.5,1)[g41] + runif(3,0.5,1)[g42] +
rnorm(n.ind)
## incorporate phenotypes to cross object
mycross$pheno <- data.frame(y1,y2,y3,y4)
## create markers list
markers <- list(m1,m2,m3,m4)
names(markers) <- c("y1","y2","y3","y4")
## create qtl object
allqtls <- list()
m1.pos <- find.markerpos(mycross, m1)
allqtls[[1]] <- makeqtl(mycross, chr = m1.pos[,"chr"], pos = m1.pos[,"pos"])
m2.pos <- find.markerpos(mycross, m2)
allqtls[[2]] <- makeqtl(mycross, chr = m2.pos[,"chr"], pos = m2.pos[,"pos"])
m3.pos <- find.markerpos(mycross, m3)
allqtls[[3]] <- makeqtl(mycross, chr = m3.pos[,"chr"], pos = m3.pos[,"pos"])
m4.pos <- find.markerpos(mycross, m4)
allqtls[[4]] <- makeqtl(mycross, chr = m4.pos[,"chr"], pos = m4.pos[,"pos"])
names(allqtls) <- c("y1","y2","y3","y4")
## infer QDG
out <- qdg(cross=mycross,
phenotype.names = c("y1","y2","y3","y4"),
marker.names = markers,
QTL = allqtls,
alpha = 0.005,
n.qdg.random.starts=10,
skel.method="pcskel")
## Not run:
gr <- graph.qdg(out)
plot(gr)
## Following does not work. Not sure why.
out2 <- qdg.sem(out, cross=mycross)
out2
gr2 <- graph.qdg(out2)
plot(gr2)
## End(Not run)