Learn R Programming

xoi (version 0.72)

fitStahl: Fit Stahl model

Description

Fit the Stahl model for crossover interference to data on crossover locations.

Usage

fitStahl(
  xoloc,
  chrlen = NULL,
  nu = c(1, 20),
  p = 0.02,
  max.conv = 25,
  integr.tol = 0.00000001,
  max.subd = 1000,
  min.subd = 10,
  verbose = TRUE,
  ...
)

Value

A vector with the estimates of \(\nu\) (interference parameter) and \(p\) (proportion of crossovers coming from the no interference pathway), the maximized log likelihood, the estimate of nu with p constrained to be 0, the maximized log likelihood in this case, and the log likelihood ratio for comparing the model with p allowed to vary freely versus contrained to be 0. (Note that it's the natural log of the likelihood ratio, and not twice that.)

Arguments

xoloc

A list of crossover locations (in cM), each component being a vector of locations for a different meiotic product.

chrlen

Chromosome length (in cM), either of length 1 or the same length as xoloc.

nu

Interference parameter (\(\nu\)). This should be a pair of values to be used as endpoints to first do a 1-dimensional optimization with \(p=0\).

p

Starting value for the proportion of crossovers from the no interference pathway, for the 2-dimensional optimization.

max.conv

Maximum limit for summation in the convolutions to get inter-crossover distance distribution from the inter-chiasma distance distributions. This should be greater than the maximum number of chiasmata on the 4-strand bundle.

integr.tol

Tolerance for convergence of numerical integration.

max.subd

Maximum number of subdivisions in numerical integration.

min.subd

Minimum number of subdivisions in numerical integration.

verbose

If TRUE, print tracing information. If "..." includes control, this is ignored.

...

Further arguments sent to stats::optim().

Author

Karl W Broman, broman@wisc.edu

Details

See Housworth and Stahl (2003) and Broman and Weber (2000) for details of the method.

We first use stats::optimize() to find the MLE with the contraint p=0, followed by use of stats::optim() to do a 2-dimensional optimization for the MLEs of the pair.

References

Housworth, E. A. and Stahl, F. W. (2003) Crossover interference in humans. Am. J. Hum. Genet. 73, 188--197.

Broman, K. W. and Weber, J. L. (2000) Characterization of human crossover interference. Am. J. Hum. Genet. 66, 1911--1926.

See Also

fitGamma(), stahlLoglik(), simStahl()

Examples

Run this code

data(bssbsb)
bssbsb <- bssbsb[,1:50]

xoloc <- find.breaks(bssbsb, chr=1)
L <- attr(xoloc, "L")

# get MLE (limiting maximum iterations to 10, just for speed in this example)
if (FALSE) mle <- fitStahl(xoloc, L, nu=c(9, 12), control=list(maxit=10))
mle <- fitStahl(xoloc, L, nu=c(9, 12), control=list(maxit=2))

Run the code above in your browser using DataLab