ld.sim {ldDesign}R Documentation

Functions to simulate populations with a bi-allelic marker and QTL in linkage disequilibrium and test for association.

Description

For a bi-allelic marker and QTL, with given allele frequencies, linkage disequilibrium, and QTL heritability, multiple replicate populations with marker, QTL, and trait values are simulated and tested for a marker-trait association. Results can be used to estimate the power of an experimental design for detecting linkage disequilibrium.

Usage

ld.sim(nsim, n, p, q, D, h2, Vp, phi, missclass.rate = 0, sim.chunk = 100, 
       method = 1, print.it = TRUE, data.only=FALSE)
ld.sim1(n, p, q, D, d, h, sig2.error, missclass.rate = 0, nreps = 1, 
        method = 2, print.it = TRUE, data.only=FALSE)

Arguments

nsim Number of replicate simulations to do
n The sample size, i.e. number of individuals genotyped and tested for the trait of interest
p Bi-allelic marker allele frequency
q Bi-allelic QTL allele frequency
D Linkage disequilibrium coefficient
h2 QTL `heritability', i.e. proportion of total or phenotypic variance explained by the QTL
Vp ld.sim: Total or phenotypic variance: an arbitrary value may be used
phi ld.sim: Dominance ratio: phi = 0 denotes purely additive gene action, phi = 1 denotes completely dominant gene action
d ld.sim1: Expected value for trait when QTL genotype is QQ,qq respectively is d,-d
h ld.sim1: Expected value for trait when QTL genotype is Qq is h
sig2.error ld.sim1: Error variance when QTL genotype known and modelled
missclass.rate Proportion of marker values which are missclassified, i.e. incorrect
sim.chunk ld.sim: Number of replicates to do in a `chunk' in each call to ld.sim1
nreps ld.sim1: Number of replicate simulations to do for the given set of marker genotypes
method If method=1 simulate random QTL genotypes conditional on marker values in ld.sim1; if method=2 simulate markers and QTL directly from table of joint probabilities. With method=1, a common set of marker values are used for each of the nreps replicates per call to ld.sim1, enabling MANOVA to be used.
print.it if TRUE, print results
data.only if TRUE, just return the simulated trait and marker genotype data

Details

Marker, QTL, and trait values are simulated according to the genetic model with normal errors. In ld.sim, QTL parameters d,h are determined from the parameters h2,q,phi, and Vq, and the main simulation done for each chunk of replicates by a call to ld.sim1. Marker-trait association is tested by a one-way analysis of variance of trait values in terms of marker classes. The proportion of results with P-value over a given threshold gives a stochastic estimate of the power calculated by luo.ld.power.

Value

If data.only=FALSE, an array with 1 row per simulation run, and 4 columns with values for each run:

MS.beta Between marker classes mean square
MS.within Within marker classes mean square
F.value F value
P.value P value
marker Marker genotype indicator with values {1,2,3}, corresponding to genotypes {MM,Mm,mm}
y trait values
replicate Replicate population indicator. Each blocks of rows with a given replicate number is a simulated population with the given parameters

Author(s)

Rod Ball rod.ball@forestresearch.co.nz www.forestresearch.co.nz

References

Luo, Z.W. 1988 Detecting linkage disequilibrium between a polymorphic marker locus and a trait locus in natural populations. Heredity 80, 198–208.

See Also

luo.ld.power

Examples

# Power from stochastic simulation for Luo's population 12
data(luo.ld.populations)
luo.pop12.sim <- ld.sim(nsim=3000,
                        n=luo.ld.populations[12,"n"],
                        p=luo.ld.populations[12,"p"],
                        q=luo.ld.populations[12,"q"],
                        D=luo.ld.populations[12,"D"],
                        h2=luo.ld.populations[12,"h2"],
                        phi=luo.ld.populations[12,"phi"],
                        Vp=100)
# power
table(luo.pop12.sim[,4] < 0.05)[2]/sum(table(luo.pop12.sim[,4] < 0.05))
# Cf power from deterministic calculation
luo.ld.power(n=luo.ld.populations[12,"n"],
             p=luo.ld.populations[12,"p"],
             q=luo.ld.populations[12,"q"],
             D=luo.ld.populations[12,"D"],
             h2=luo.ld.populations[12,"h2"],
             phi=luo.ld.populations[12,"phi"],
             Vp=100,
             alpha=0.05)

[Package ldDesign version 1.1-0 Index]