Learn R Programming

mets (version 1.3.4)

twinlm: Classic twin model for quantitative traits

Description

Fits a classical twin model for quantitative traits.

Usage

twinlm(
  formula,
  data,
  id,
  zyg,
  DZ,
  group = NULL,
  group.equal = FALSE,
  strata = NULL,
  weights = NULL,
  type = c("ace"),
  twinnum = "twinnum",
  binary = FALSE,
  ordinal = 0,
  keep = weights,
  estimator = NULL,
  constrain = TRUE,
  control = list(),
  messages = 1,
  ...
)

Value

Returns an object of class twinlm.

Arguments

formula

Formula specifying effects of covariates on the response

data

data.frame with one observation pr row. In addition a column with the zygosity (DZ or MZ given as a factor) of each individual much be specified as well as a twin id variable giving a unique pair of numbers/factors to each twin pair

id

The name of the column in the dataset containing the twin-id variable.

zyg

The name of the column in the dataset containing the zygosity variable

DZ

Character defining the level in the zyg variable corresponding to the dyzogitic twins. If this argument is missing, the reference level (i.e. the first level) will be interpreted as the dyzogitic twins

group

Optional. Variable name defining group for interaction analysis (e.g., gender)

group.equal

If TRUE marginals of groups are asummed to be the same

strata

Strata variable name

weights

Weights matrix if needed by the chosen estimator. For use with Inverse Probability Weights

type

Character defining the type of analysis to be performed. Can be a subset of "aced" (additive genetic factors, common environmental factors, unique environmental factors, dominant genetic factors). Other choices are:

  • "0" (or "sat"): Saturated model where twin 1 and twin 2 within each twin pair may have a different marginal distribution.

  • "1" (or "flex","zyg"): Within twin pairs the marginal distribution is the same, but the marginal distribution may differ between MZ and DZ twins. A free correlation structure within MZ and DZ twins.

  • "2" (or "u", "eqmarg"): All individuals have the same marginals but a free correlation structure within MZ and DZ twins.

The default value is an additive polygenic model type="ace".

twinnum

The name of the column in the dataset numbering the twins (1,2). If it does not exist in data it will automatically be created.

binary

If TRUE a liability model is fitted. Note that if the right-hand-side of the formula is a factor, character vector, og logical variable, then the liability model is automatically chosen (wrapper of the bptwin function).

ordinal

If non-zero (number of bins) a liability model is fitted.

keep

Vector of variables from data that are not specified in formula, to be added to data.frame of the SEM

estimator

Choice of estimator/model

constrain

Development argument

control

Control argument parsed on to the optimization routine

messages

Control amount of messages shown

...

Additional arguments parsed on to lower-level functions

Author

Klaus K. Holst

See Also

bptwin, twinlm.time, twinlm.strata, twinsim

Examples

Run this code
## Simulate data
set.seed(1)
d <- twinsim(1000,b1=c(1,-1),b2=c(),acde=c(1,1,0,1))
## E(y|z1,z2) = z1 - z2. var(A) = var(C) = var(E) = 1

## E.g to fit the data to an ACE-model without any confounders we simply write
ace <- twinlm(y ~ 1, data=d, DZ="DZ", zyg="zyg", id="id")
ace
## An AE-model could be fitted as
ae <- twinlm(y ~ 1, data=d, DZ="DZ", zyg="zyg", id="id", type="ae")
## LRT:
lava::compare(ae,ace)
## AIC
AIC(ae)-AIC(ace)
## To adjust for the covariates we simply alter the formula statement
ace2 <- twinlm(y ~ x1+x2, data=d, DZ="DZ", zyg="zyg", id="id", type="ace")
## Summary/GOF
summary(ace2)
 ## Reduce Ex.Timings
## An interaction could be analyzed as:
ace3 <- twinlm(y ~ x1+x2 + x1:I(x2<0), data=d, DZ="DZ", zyg="zyg", id="id", type="ace")
ace3
## Categorical variables are also supported 
d2 <- transform(d,x2cat=cut(x2,3,labels=c("Low","Med","High")))
ace4 <- twinlm(y ~ x1+x2cat, data=d2, DZ="DZ", zyg="zyg", id="id", type="ace")

Run the code above in your browser using DataLab