Download presentation
Presentation is loading. Please wait.
Published byJohnathan Gallagher Modified over 6 years ago
1
Threshold Liability Models (Ordinal Data Analysis)
Frühling Rijsdijk MRC SGDP Centre, Institute of Psychiatry, King’s College London
2
Ordinal data Measuring instrument discriminates between two or a few ordered categories e.g.: Absence (0) or presence (1) of a disorder Score on a single Q item e.g. : 0 - 1, 0 - 4 In such cases the data take the form of counts, i.e. the number of individuals within each category of response
3
Analysis of ordinal variables
The session aims to show how we estimate correlations from count data (with the ultimate goal to estimate h2, c2, e2) For this we need to introduce the concept of ‘Liability’ or ‘liability threshold models’ This is followed by a more mathematical description of the model But its hard to see how we can go from count data to generating these tetrachoric correlations, when we are assessing complex disorders that are assessed as diagnoses (categorical variables) rather than quantitative dimension. The answer is to use LTM
4
Liability Liability is a theoretical construct. It’s the assumption
we make about the distribution of a variable which we were only able to measure in terms of a few ordered categories Assumptions: Categories reflect an imprecise measurement of an underlying normal distribution of liability (2) The liability distribution has 1 or more thresholds (cut-offs) to discriminate between the categories So if our trait of interest is categorical, it is useful to make some assumptions to help us analyse it. Firstly, that the ordered categories reflect an imprecise measurement of an underlying normal distribution of liability. Secondly, the liability distribution is assumed to have one or more thresholds (cut-offs) to discriminate between the categories.
5
For a single questionnaire item score e.g: 0 = not at all
For disorders: Affected individuals The risk or liability to a disorder is normally distributed, only when a certain threshold is exceeded will someone have the disorder. Prevalence: proportion of affected individuals. For a single questionnaire item score e.g: 0 = not at all 1 = sometimes 2 = always 1 2 Does not make sense to talk about prevalence: we simply count the endorsements of each response category
6
The Standard Normal Distribution
Liability is a latent variable, the scale is arbitrary, distribution is assumed to be a Standard Normal Distribution (SND) or z-distribution: Mathematically described by the SN Probability Density function ( =phi), a bell-shaped curve with: mean = 0 and SD = 1 z-values are the number of SD away from the mean Convenience: area under curve =1, translates directly to probabilities Since the liability is theoretical construct, a latent (unmeasured) variable, its scale is arbitrary, and it is customary to assume that the liability has a standard normal distribution (SND) or z-distribution which has a Mean of 0, and a Standard Deviation (SD) of 1. The z-distribution is described mathematically by the standard normal probability density function ( = phi), which is a bell-shaped curve. The z-values are the number of SDs away from the mean; The z-distribution is used because of its convenience: we can interpret the area under a curve between two z-values as a probability: e.g. the area between 1 and +1 SD around the mean corresponds to 68%; between 2 and +2 with 95%. -3 3 - 1 2 -2 68%
7
Standard Normal Cumulative Probability in right-hand tail
(For negative z values, areas are found by symmetry) -3 3 zT Area=P(z zT) Mathematically, the area under a curve can be worked out using integral calculus. This is the mathematical notation for integration. First: the integral symbol with the thresholds enclosing the area we are after (so to work out from Zt to infinity, i.e. all this shaded bit to the right of zt); Secondly, the function of the liability distribution, the PDF (probability density function), indicated by the phi symbol. Between brackets we indicate some distributional characteristics , mean=0, variance=1. Because we’re thinking of the area under the curve as probabilities, the total area under the curve will equal 1, and the probability of being to the right of the mean (zero) will be 0.5 (point to chart – the z-score of the threshold is zero, the area to the right of it is half of the total area under the curve, so the probability of being to the right of zero is 0.5) Given any threshold (z-value), it’s possible to determine the probability between the threshold and infinity, or the threshold and minus infinity (which is the mirror image of threshold to infinity, so calculated by working out that and taking it away from 1). However, we don’t need to worry about integration of the SND, it has already been done by statisticians and we can look up these values in standard statistical tables. Here is a table with areas for a couple of z-values. Values for negative z-values are found by symmetry.
8
Standard Normal Cumulative Probability in right-hand tail
(For negative z values, areas are found by symmetry) -3 3 zT Area=P(z zT)
9
Standard Normal Cumulative Probability in right-hand tail
(For negative z values, areas are found by symmetry) Z0 Area % % % % % % % % % % % % % % % % -3 3 zT Area=P(z zT)
10
Two ordinal traits: Data from twins
> Contingency Table with 4 observed cells: cell a: pairs concordant for unaffected cell d: pairs concordant for affected cell b/c: pairs discordant for the disorder Twin1 Twin2 1 a b c d What happens when we have Categorical Data for Twins ? When the measured trait is dichotomous i.e. a disorder is either present or not, we can partition our observations into pairs concordant for not having the disorder (a), pairs concordant for the disorder (d) and discordant pairs in which one is affected and one is unaffected (b and c). These frequencies are summarized in a 2x2 contingency table: 0 = unaffected 1 = affected
11
Joint Liability Model for twin pairs
Assumed to follow a bivariate normal distribution, where both traits have a mean of 0 and standard deviation of 1, but the correlation between them is variable. The shape of a bivariate normal distribution is determined by the correlation between the traits r =.00 r =.90 When we have twin pair data, the assumption now is that the joint distribution of liabilities of twin pairs follows a bivariate normal distribution, where both traits have a mean of 0 and standard deviation 1, but the correlation between them is unknown. The shape of such a bivariate normal distribution is determined by the correlation.
12
The observed cell proportions relate to the proportions of the BND with a certain correlation between the latent variables (y1 and y2), each cut at a certain threshold i.e. the joint probability of a certain response combination is the volume under the BND surface bounded by appropriate thresholds on each liability y2 y1 1 00 01 10 11
13
Expected cell proportions
Numerical integration of the BND over the two liabilities e.g. the probability that both twins are above Tc : Like the SND the expected proportion under the curve between any ranges of values of the two traits can be calculated by means of numerical integration. How is numerical integration performed? There are programmed mathematical subroutines that can do these calculations. OpenMx uses one of them. Φ is the bivariate normal probability density function, y1 and y2 are the liabilities of twin1 and twin2, with means of 0, and the correlation between the two liabilities Tc1 is threshold (z-value) on y1, Tc2 is threshold (z-value) on y2
14
Expected cell proportions
15
Estimation of Correlations and Thresholds
Since the BN distribution is a known mathematical distribution, for each correlation (∑) and any set of thresholds on the liabilities we know what the expected proportions are in each cell. Therefore, observed cell proportions of our data will inform on the most likely correlation and threshold on each liability. y2 y1 1 .87 .05 .03 r = 0.60 Tc1=Tc2 = 1.4 (z-value)
16
Bivariate Ordinal Likelihood
The likelihood for each observed ordinal response pattern is computed by the expected proportion in the corresponding cell of the BN distribution The maximum-likelihood equation for the whole sample is -2* log of of the likelihood of each vector of observation, and summing across all observations (pairs) This -2LL is minimized to obtain the maximum likelihood estimates of the correlation and thresholds Tetra-choric correlation if y1 and y2 reflect 2 categories (1 Threshold); Poly-choric when >2 categories per liability
17
Twin Models Estimate correlation in liabilities separately for MZ and DZ pairs from their Count data Variance decomposition (A, C, E) can be applied to the liability of the trait Correlations in liability are determined by path model Estimate of the heritability of the liability When data on MZ and DZ twin pairs are available, then of course we can estimate a correlation in liability for each type of twins. However, we can also go further by fitting a model for the liability that would explain these MZ and DZ correlations. We can decompose the liability correlation into A, C and E, as we do for continuous traits, where correlations in liability are determined by path model. This leads to an estimate of the heritability of the liability.
18
ACE Liability Model Variance constraint Threshold model 1 1/.5 E C A A
This is not a proper path diagram, in that the path tracing rules do not apply for the arrows below the latent liability circles. It shows the underlying assumptions of liability, thresholds etc. And shows that what we start from is just counts for pairs of twins. Threshold model Unaf Aff Unaf Aff Twin 1 Twin 2
19
Summary OpenMx models ordinal data under a threshold model
Assumptions about the (joint) distribution of the data (Standard Bivariate Normal) The relative proportions of observations in the cells of the Contingency Table are translated into proportions under the SBN The most likely thresholds and correlations are estimated Genetic/Environmental variance components are estimated based on these correlations derived from MZ and DZ data So that’s the theory behind how ordinal analysis works, Questions?? now I’ll describe some tips on how to do it for different types of data.
20
Power issues Ordinal data / Liability Threshold Model: less power than analyses on continuous data Neale, Eaves & Kendler 1994 Solutions: 1. Bigger samples 2. Use more categories Sometimes it is necessary to convert v skewed data into an ordinal scale, but if possible its better to analyse continuous data since using the LTM has lower power than analysing the same phenotype if you have continuous data. This means you’ll be less certain of your parameter estimates (because they will have larger confidence intervals). But there are some things you can do to get some of this power back. Firstly, you can get more people, but this can be expensive and you may have finished data collection by the time you realise your variable needs to be categorical. Rather than binary data, try using several categories, such as fine-graining your cases into those severely affected and those mildly affected (e.g. model 2 thresholds, which might separate people with no disease, moderate disease and severe disease) Neale, Eaves & Kendler 1994, The power of the classical twin study to resolve variation in threshold traits controls controls cases sub-clinical cases
21
Practical R Script: ThreshLiab.R Data File: CASTage8.csv
22
Sample & Measures Simulated data based on CAST data collected at age 8 in the TEDS sample Parent report of CAST: Childhood Autism Spectrum Test (Scott et al., 2002) Twin pairs: 501 MZ & 503 DZ males
23
Clinical Aspects of the CAST
The CAST score dichotomized at around 98% (i.e. scores of >15), is the clinical cut-off point for children at risk for Autism Spectrum Disorder However, for the purpose of this exercise, we use 2 cut offs to create 3 categories: <9 unaffacted (0) 9-15 sub-clinical (1) >15 ASD (2)
24
Inspection of the data CAST score categorized (0,1,2), the proportions: CAST | Freq. Percent 0 | 1 | 2 | Total | , -3 3 1.75 .84 4% 20% Z-values Z-value Th1 = .84 Z-value Th2 = 1.75
25
CTs of the MZ and DZ group
1 2 Tot 385 23 6 414 28 37 4 69 3 12 18 416 63 22 501 table(mzData$Ocast1, mzDataF$Ocast2 ) DZ 1 2 Tot 334 37 19 390 56 32 89 12 10 24 402 81 30 503 table(dzData$Ocast1, dzData$Ocast2 )
26
R Script: ThreshLiab.R Castdata <- read.table ('CASTage8.csv', header=T, sep=“,", na.strings=".", selVars <- c(‘Ocast1' , ‘Ocast2') # Declare variables to be ordered Factors for OpenMx Castdata$Ocast1 <-mxFactor(Castdata$Ocast1, levels=c(0:2) ) Castdata$Ocast2 <-mxFactor(Castdata$Ocast2, levels=c(0:2) ) # Select Data for Analysis mzData <- subset(Castdata, zyg==1, selVars) dzData <- subset(Castdata, zyg==2, selVars) # get CT for Ordinal variable table(mzData$Ocast1, mzData$Ocast2) table(dzData$Ocast1, dzData$Ocast2) ordered_result logical: should the result be an ordered factor?
27
# 1) Specify Saturated Model (max number of parameters: 2 cor, 8 TH)
# Matrices for expected Means (SND) & Tetrachoric correlations meanL <-mxMatrix( type="Zero", nrow=1, ncol=ntv, name="M" ) corMZ <-mxMatrix(type="Stand", nrow=ntv, ncol=ntv, free=T, values=.8, lbound=-.99, ubound=.99, name="expCorMZ") CorDZ <-mxMatrix(type="Stand", nrow=ntv, ncol=ntv, free=T, values=.8, lbound=-.99, ubound=.99, name="expCorDZ") 0,0 C1 C2 L1 L2 1 r 1 L L2 L1 L2 rMZ 1 L L2 L1 L2 rDZ
28
# Matrices & Algebra for expected Thresholds
Tmz <-mxMatrix (type="Full", nrow=nth, ncol=ntv, free=TRUE, values=c(.8, 1, .8, 1), lbound=c(-3, .001, -3, .001 ), ubound=(3), labels=c("Tmz11","imz11", "Tmz12","imz12"), name="ThMZ" ) Tmz11 Tmz21= Tmz11+ imz11 imz11 Tmz12 Tmz22= Tmz12+ imz12 imz12 Twin 1 Twin 2
29
A multiplication is used to ensure that any threshold is higher than the previous one. This is necessary for the optimization procedure involving numerical integration over the MVN Expected Thresholds: L %*% ThMZ 1 0 1 1 TMZ11 TMZ12 iMZ11 iMZ12 TMZ TMZ12 TMZ11 + iMZ11 TMZ iMZ12 expThmz = %*% Threshold 1 for twin 1 and twin2 TMZ11 TMZ12 TMZ21 TMZ22 Threshold 2 for twin 1 and twin2 Note: this only works if the increments are POSITIVE values, therefore a BOUND statement around the increments are necessary
30
Start Values & Bounds = TMZ11 TMZ12 iMZ11 iMZ12
Tmz <-mxMatrix (type="Full", nrow=nth, ncol=ntv, free=TRUE, values=c(.8, 1, .8, 1), lbound=c(-3, .001, -3, .001 ), ubound=(3), labels=c("Tmz11","imz11", "Tmz12","imz12"), name="ThMZ" ) TMZ TMZ12 iMZ iMZ12 = .8 ( to 3) .8 (-3 to 3) 1 (.001 to 3) 1 (.001 to 3) The positive bounds on the increments stop the thresholds going ‘backwards’, i.e. they preserve the ordering of the categories Z-value Th1 = .84 Z-value Th2 = 1.75
31
Sub1Model <- mxModel(SatModel, name=“sub1”)
# RUN SUBMODELS # SubModel 1: Thresholds across Twins within zyg group are equal Sub1Model <- mxModel(SatModel, name=“sub1”) Sub1Model <- omxSetParameters( Sub1Model, labels=c("Tmz11", "imz11", "Tmz12", "imz12"), newlabels=c("Tmz11", "imz11", "Tmz11", "imz11"), … # SubModel 3: Thresholds across Twins & zyg group are equal Sub3Model <- mxModel(Sub1Model, name=“sub3”) Sub3Model <- omxSetParameters( Sub3Model, labels=c("Tdz11", "idz11", "Tdz12", "idz12"), newlabels=c("Tmz11", "imz11", "Tmz11", "imz11"), … omxSetParameters: function to modify the attributes of parameters in a model Without having to re-specify the model
32
# ACE MODEL with one overall set of Thresholds
pathA <- mxMatrix( type="Full", nrow=1, ncol=1, free=TRUE, values=.6, label="a11", name="a" ) pathC <- mxMatrix( type="Full", nrow=1, ncol=1, free=TRUE, values=.6, label="c11", name="c" ) pathE <- mxMatrix( type="Full", nrow=1, ncol=1, free=TRUE, values=.6, label="e11", name="e" ) # Algebra for Matrices to hold A, C, and E Variance Components covA <- mxAlgebra( expression=a %*% t(a), name="A" ) covC <- mxAlgebra( expression=c %*% t(c), name="C" ) covE <- mxAlgebra( expression=e %*% t(e), name="E" ) covP <- mxAlgebra( expression=A+C+E, name="V" ) # Constrain Total variance of the liability to 1 matUnv <-mxMatrix( type="Unit", nrow=nv, ncol=1, name="Unv" ) varL <-mxConstraint( expression=diag2vec(V)==Unv, name="VarL" ) C A E L c11 e11 a11 1 A + C + E = 1
33
Practical Run first part of the script up to sub3Model
What are the conclusions about the thresholds, i.e. what is the best model? What kind of Genetic model would you run on this data given the correlations? Run the ACE model and check the parameter estimates (with 95% CI)
34
MODEL ep -2LL df 2(df) P-val
1 All TH free 10 2202.7 1998 - 2 Sub1: TH tw1=tw2 in MZ 8 2203.8 2000 1.01 (2) .61 ns 3 Sub2: TH tw1=tw2 in DZ 2206.0 3.24 (2) .20 ns 4 Sub3: One overall TH 4 2211.1 2004 8.40 (6) .21 ns 1 Thresh/Inc: MZ tw1 = .94, .84 MZ tw2 = .96, .73 DZ tw1 = .75, .91 DZ tw2 = .84, .71 2 Thresh/Inc: MZ = .95, .78 3 Thresh/Inc: MZ tw1 = .94, .84 MZ tw2 = .96, .73 DZ = .80, .81 4 Thresh/Inc: .86, .79 The Twin correlations for model 4 are: r MZM = 0.82 ( ) r DZM = 0.44 ( )
35
ACE Estimates for the ordinalized CAST score in Boys at age 8
.76 (.48/.87) .06 (0/.31) .18 (.13/.26) Name ep -2LL df AIC Model 1 : ACE
36
Age Effects on Thresholds
The effect of covariates like Age can be modelled in the Threshold model, similarly to the means model An example script is added to the folder in which Age is incorporated and its effects modelled in the thresholds (Age Regression on TH.R) T11 T12 T21 T22 BageTH*Age1 BageTH*Age2 + T11 T21 T12 T22
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.