5D Library › Early Experience, Epigenetic Methylation and the Limits of Intergenerational Transmission · 中文

Chapter 2 Twin Studies and the “Three Laws” of Behavioural Genetics

Why twins?

Identical (monozygotic, MZ) twins share almost all of their DNA sequence; fraternal (dizygotic, DZ) twins share on average half of their segregating genetic variation, like ordinary siblings. Both kinds usually grow up in the same family at the same age. If a trait is more alike in MZ than in DZ pairs, the extra resemblance points to the influence of genes.

The classical twin design splits individual differences (variance) into three parts: A, additive genetic influence; C, the shared environment, meaning everything in the environment that makes children raised in the same family more alike (family income, neighbourhood, parenting the children have in common, and so on); and E, the non-shared environment, meaning everything that makes children raised in the same family different (different friends, teachers, illnesses and chance events, and parents treating each child differently). Measurement error is also counted in E.

Note

C and E have misleading names. “Shared environment” is not the same as “family environment”: parents treating two children differently falls in E, while factors outside the family that the twins share (the same school, the same neighbourhood) fall in C. Nor is the “non-shared environment” merely “luck”: it includes peers, mentors and each person’s unique experiences, and much of the social-learning channel discussed in Chapters 4 to 6 lands here.

Falconer’s formulas

Calculation

Let rMZr_{MZ} and rDZr_{DZ} be the within-pair correlations of MZ and DZ twins. In a simple model with only additive genetic influence, shared environment and non-shared environment:

h2=2(rMZ−rDZ),c2=2rDZ−rMZ,e2=1−rMZh^2 = 2(r_{MZ} – r_{DZ}), \qquad c^2 = 2 r_{DZ} – r_{MZ}, \qquad e^2 = 1 – r_{MZ}

These are Falconer’s formulas (Falconer and Mackay 1996). The first two rows use the religiousness correlations reported by Koenig and colleagues for 169 MZ and 104 DZ adult male twin pairs, recalling their religiousness in adolescence and reporting it now (Koenig et al. 2005); the last two rows are illustrative patterns.

# Falconer's formulas: from twin correlations to a rough ACE split.
#   h2 = 2 (rMZ - rDZ)   additive genetic share (A)
#   c2 = 2 rDZ - rMZ     shared-environment share (C)
#   e2 = 1 - rMZ         non-shared environment plus measurement error (E)
# Religiousness rows: correlations reported by Koenig et al. (2005) for 169 MZ
# and 104 DZ adult male twin pairs. Other rows are ILLUSTRATIVE patterns.

def falconer(rmz, rdz):
    return 2 * (rmz - rdz), 2 * rdz - rmz, 1 - rmz

rows = [("religiousness, recalled adolescence", 0.69, 0.59),
        ("religiousness, current (age ~33)", 0.62, 0.42),
        ("illustrative: purely additive", 0.50, 0.25),
        ("illustrative: rDZ < half of rMZ", 0.50, 0.15)]
print(" trait                               | rMZ  | rDZ  |  h2   |  c2   |  e2")
for name, rmz, rdz in rows:
    h2, c2, e2 = falconer(rmz, rdz)
    print(f" {name:35s} | {rmz:.2f} | {rdz:.2f} | {h2:5.2f} | {c2:5.2f} |"
          f" {e2:5.2f}")
print("a negative c2 is impossible as a variance: it signals dominance,")
print("epistasis, contrast effects or sampling error - hence model fitting")
#  trait                               | rMZ  | rDZ  |  h2   |  c2   |  e2
#  religiousness, recalled adolescence | 0.69 | 0.59 |  0.20 |  0.49 |  0.31
#  religiousness, current (age ~33)    | 0.62 | 0.42 |  0.40 |  0.22 |  0.38
#  illustrative: purely additive       | 0.50 | 0.25 |  0.50 |  0.00 |  0.50
#  illustrative: rDZ < half of rMZ     | 0.50 | 0.15 |  0.70 | -0.20 |  0.50
# a negative c2 is impossible as a variance: it signals dominance,
# epistasis, contrast effects or sampling error - hence model fitting

Religiousness is a good example. For recalled adolescent religiousness the MZ and DZ correlations are close (0.69 and 0.59), and Falconer’s formulas put the shared environment at about 0.49; for current religiousness the MZ correlation is clearly higher than the DZ (0.62 and 0.42), genes account for about 0.40 and the shared environment falls to about 0.22. Koenig and colleagues’ formal model estimated genetic influence rising from 12 % to 44 % and the shared environment falling from 56 % to 18 %, in the same direction. The same trait can have a very different variance structure during the years at home and after leaving it.

The fourth row shows a weakness of Falconer’s formulas: when the DZ correlation is less than half the MZ correlation, they give a negative c2c^2. A variance cannot be negative; the pattern suggests dominance or epistatic genetic effects, contrast effects between twins, or simply sampling error. That is why researchers fit models instead.

Fitting the ACE model by maximum likelihood

Calculation

A maximum-likelihood fit of the ACE model with the standard library (Neale and Cardon 1992). We simulate 600 MZ and 600 DZ pairs with known true values A = 0.45, C = 0.10, E = 0.45 (illustrative). The model sets each twin’s variance to a+c+ea + c + e and the within-pair covariance to a+ca + c for MZ and a/2+ca/2 + c for DZ pairs; from each group’s 2 × 2 sample covariance matrix SS it writes the Gaussian log-likelihood

log⁡L=−n2[lndetΣ+tr(Σ−1S)]\log L = -\frac{n}{2}\left[\ln \det \Sigma + \operatorname{tr}\left(\Sigma^{-1} S\right)\right]

and maximises it with a simple pattern search. We then compare an AE model without C and a CE model without A, and finally repeat the simulation 200 times to see how stable the estimate of C is.

# Maximum-likelihood fit of the ACE twin model, standard library only.
# Pairs simulated with KNOWN shares A = .45, C = .10, E = .45 (illustrative).
# Twin variance a + c + e; pair covariance a + c (MZ) or a/2 + c (DZ). With a
# group's 2x2 sample covariance S: logL = -n/2 [ln det(Sigma) + tr(Sigma^-1 S)].
import math, random
random.seed(2015)
SA, SC, SE = math.sqrt(.45), math.sqrt(.10), math.sqrt(.45)

def group(n, r_gen):                 # returns (n, variance, covariance), k
    d = []
    for _ in range(n):
        g1 = random.gauss(0, 1)
        g2 = r_gen * g1 + math.sqrt(1 - r_gen ** 2) * random.gauss(0, 1)
        sh = random.gauss(0, 1)
        d.append((SA * g1 + SC * sh + SE * random.gauss(0, 1),
                  SA * g2 + SC * sh + SE * random.gauss(0, 1)))
    m = sum(x + y for x, y in d) / (2 * n)
    v = sum((x - m) ** 2 + (y - m) ** 2 for x, y in d) / (2 * n)
    return (n, v, sum((x - m) * (y - m) for x, y in d) / n), r_gen

def loglik(par, groups):
    a, c, e = (p * p for p in par); ll = 0.0
    for (n, v, cv), k in groups:
        s11, s12 = a + c + e, k * a + c; det = s11 * s11 - s12 * s12
        if det <= 1e-12: return -1e18
        ll -= n / 2 * (math.log(det) + (2 * s11 * v - 2 * s12 * cv) / det)
    return ll

def fit(groups, free=(1, 1, 1)):     # pattern search on sqrt(a), sqrt(c), sqrt(e)
    par = [0.6 * f for f in free]; best = loglik(par, groups); step = 0.25
    while step > 1e-5:
        moved = False
        for i in (i for i in range(3) if free[i]):
            for s in (step, -step):
                t = list(par); t[i] += s; ll = loglik(t, groups)
                if ll > best: par, best, moved = t, ll, True
        if not moved: step /= 2
    a, c, e = (p * p for p in par)
    return (a / (a + c + e), c / (a + c + e), e / (a + c + e)), best

g = [group(600, 1.0), group(600, 0.5)]
rmz, rdz = (cv / v for (_, v, cv), _ in g)
print("one study: 600 MZ + 600 DZ pairs; truth A = .45, C = .10, E = .45")
print(f"  Falconer: h2 = {2 * (rmz - rdz):.2f}, c2 = {2 * rdz - rmz:.2f},"
      f" e2 = {1 - rmz:.2f}")
(ace, l1), (_, l_ae), (_, l_ce) = fit(g), fit(g, (1, 0, 1)), fit(g, (0, 1, 1))
print("  ML ACE:   a2 = {:.2f}, c2 = {:.2f}, e2 = {:.2f}".format(*ace))
print(f"  drop C: chi2 = {2 * (l1 - l_ae):.2f}; drop A: chi2 ="
      f" {2 * (l1 - l_ce):.2f}  (1 df; 5 % cut-off 3.84)")
c_est, keep = [], 0
for _ in range(200):
    g = [group(600, 1.0), group(600, 0.5)]
    (est, l1), (_, l0) = fit(g), fit(g, (1, 0, 1))
    c_est.append(est[1]); keep += 2 * (l1 - l0) > 3.84
m = sum(c_est) / 200; sd = math.sqrt(sum((x - m) ** 2 for x in c_est) / 199)
print(f"200 replications: ML c2 mean {m:.2f}, SD {sd:.2f};"
      f" C judged significant in {keep / 2:.0f} %")
# one study: 600 MZ + 600 DZ pairs; truth A = .45, C = .10, E = .45
#   Falconer: h2 = 0.48, c2 = 0.10, e2 = 0.42
#   ML ACE:   a2 = 0.49, c2 = 0.09, e2 = 0.42
#   drop C: chi2 = 1.49; drop A: chi2 = 35.29  (1 df; 5 % cut-off 3.84)
# 200 replications: ML c2 mean 0.11, SD 0.07; C judged significant in 30 %

In this simulation Falconer’s formulas and maximum likelihood give almost the same answer (genes about 0.48–0.49, shared environment about 0.09–0.10). Dropping A makes the fit much worse (chi-square 35.29), while dropping C does not (chi-square 1.49, below the usual cut-off of 3.84). Over 200 repetitions the estimate of C averages 0.11 with a standard deviation of 0.07, yet only about 30 % of studies would judge C “significant”.

This illustrates a point that is often missed: in twin studies of moderate size, “C is not significant” is often just a lack of power, not evidence that C is zero. The true C here is 0.10, yet most studies would drop it from the model.

The three laws and fifty years of data

Evidence

The three laws. Turkheimer summarised the results of behavioural genetics as three “laws”: first, all human behavioural traits are heritable; second, the effect of being raised in the same family is smaller than the effect of genes; and third, a substantial portion of the variation in complex human behavioural traits is not accounted for by the effects of genes or families (Turkheimer 2000).

Evidence

Fifty years of twin studies. Polderman and colleagues pooled 2,748 twin studies published from 1958 to 2012, covering 17,804 traits and about 14.56 million (partly overlapping) twin pairs. The average heritability across all traits was 49 % and the reported shared environment averaged 0.174; for 69 % of traits the twin correlations were consistent with a simple model of additive genetic influence alone; but for eight traits, including conduct disorders, height, higher-level cognitive functions and hyperkinetic disorders, the weighted estimate of the shared environment was significantly different from zero (Polderman et al. 2015).

Evidence

Heritability that rises with age. In about 11,000 twin pairs from four countries, Haworth and colleagues found that the heritability of general cognitive ability rose from 41 % in childhood (age 9) to 55 % in adolescence (age 12) and 66 % in young adulthood (age 17), while the shared environment fell from 33 % to 18 %, and was about 16 % in young adulthood (Haworth et al. 2010). Briley and Tucker-Drob’s meta-analysis of longitudinal studies suggests that the rise is driven mainly by new genetic influences in early childhood and later mainly by the amplification of existing ones, which the authors see as consistent with people increasingly selecting and shaping environments that fit their dispositions (Briley and Tucker-Drob 2013). Plomin and colleagues list “the heritability of intelligence increases throughout development” among the ten most replicated findings of behavioural genetics (Plomin et al. 2016).

Evidence

The shared environment in childhood. Burt’s meta-analysis of child and adolescent psychopathology found shared-environment influences that are usually non-zero and fairly consistent for conduct problems, oppositional behaviour, anxiety and depression, but essentially zero for attention-deficit/hyperactivity disorder (Burt 2009).

So “the family environment doesn’t matter” is a misreading of these results. A more accurate statement is: for many personality and cognitive traits measured in adulthood, the part of the environment that makes children of the same family more alike has a small effect; in childhood, and for some behaviour problems and attitudes, it is not small. Nor does a small C mean that parents are unimportant: parents treating each child differently falls in E; parents’ choices (which neighbourhood to live in, which school to choose) may act through the peer environment; and research samples usually contain few cases of extreme neglect or abuse, so a small effect of family differences “within the normal range” says nothing about whether extreme situations matter.

Heritability changes with the environment

Calculation

Heritability is not a fixed property of a trait. Below, the variance components depend on family socioeconomic status (SES, 0 = poorest, 1 = richest). In the “moderated” scenario A grows and C shrinks with SES, in a shape that imitates the pattern reported by Turkheimer and colleagues (parameters illustrative); in the “constant” scenario no component changes with SES. Falconer’s formulas are applied within each fifth of SES.

# Heritability is not fixed: a gene x SES interaction. Variance components
# depend on family SES s (0 = poorest, 1 = richest); ILLUSTRATIVE values
# shaped like the US pattern of Turkheimer et al. (2003):
#   "moderated": A = 0.05 + 0.75 s, C = 0.60 - 0.50 s, E = 0.30
#   "constant":  A = 0.45, C = 0.20, E = 0.30 (no interaction)
# Falconer's formulas are applied within each fifth of SES.
import math, random
random.seed(2003)

def comps(s, kind):
    if kind == "moderated": return 0.05 + 0.75 * s, 0.60 - 0.50 * s, 0.30
    return 0.45, 0.20, 0.30

def twin(r_gen, s, kind):
    a, c, e = comps(s, kind)
    g1 = random.gauss(0, 1)
    g2 = r_gen * g1 + math.sqrt(1 - r_gen ** 2) * random.gauss(0, 1)
    sh = random.gauss(0, 1)
    return (math.sqrt(a) * g1 + math.sqrt(c) * sh
            + math.sqrt(e) * random.gauss(0, 1),
            math.sqrt(a) * g2 + math.sqrt(c) * sh
            + math.sqrt(e) * random.gauss(0, 1))

def r(d):
    n = len(d); m = sum(x + y for x, y in d) / (2 * n)
    v = sum((x - m) ** 2 + (y - m) ** 2 for x, y in d) / (2 * n)
    return sum((x - m) * (y - m) for x, y in d) / n / v

def by_fifth(kind, n_per_zyg):
    out = []
    for q in range(5):
        lo = q / 5
        mz = [twin(1.0, lo + random.random() / 5, kind) for _ in range(n_per_zyg)]
        dz = [twin(0.5, lo + random.random() / 5, kind) for _ in range(n_per_zyg)]
        rm, rd = r(mz), r(dz)
        out.append((q + 1, 2 * (rm - rd), 2 * rd - rm))
    return out

if __name__ == "__main__":
    print("10,000 MZ + 10,000 DZ pairs per SES fifth (to show the pattern)")
    print(" SES fifth | moderated: h2   c2 | constant: h2   c2")
    rows = zip(by_fifth("moderated", 10000), by_fifth("constant", 10000))
    for (q, h1, c1), (_, h2, c2) in rows:
        print(f"     {q}     |        {h1:5.2f} {c1:5.2f} |"
              f"       {h2:5.2f} {c2:5.2f}")
    est = [by_fifth("moderated", 32)[0][1] for _ in range(300)]
    m = sum(est) / 300; sd = math.sqrt(sum((x - m) ** 2 for x in est) / 299)
    print("with only 32 MZ + 32 DZ pairs in the poorest fifth,")
    print(f"  h2 estimates have SD {sd:.2f}")
# 10,000 MZ + 10,000 DZ pairs per SES fifth (to show the pattern)
#  SES fifth | moderated: h2   c2 | constant: h2   c2
#      1     |         0.15  0.55 |        0.47  0.21
#      2     |         0.26  0.44 |        0.46  0.23
#      3     |         0.40  0.33 |        0.45  0.23
#      4     |         0.51  0.23 |        0.47  0.21
#      5     |         0.64  0.10 |        0.47  0.21
# with only 32 MZ + 32 DZ pairs in the poorest fifth,
#   h2 estimates have SD 0.28
An illustrative model of SES moderating heritability (parameters illustrative). Solid lines: the shares of genetic and shared-environment variance change with SES; the shared environment dominates in the poorest fifth and genes in the richest. Dashed lines: with no interaction, both stay roughly constant across SES.

In the moderated scenario the same trait has a heritability of only about 0.15 in the poorest families, with the shared environment at about 0.55; in the richest families heritability is about 0.64 and the shared environment about 0.10. An intuitive explanation is that when environments are severely restricted, environmental differences dominate individual differences; when environments are good enough, the remaining differences reflect genetic differences more. The program’s last line is a reminder that with only 32 MZ and 32 DZ pairs per fifth, the standard deviation of the heritability estimate is about 0.28, too large to discern any pattern; such studies need very large samples or continuous moderation models.

Evidence

SES and heritability inside and outside the United States. Among 7-year-old twins in the US National Collaborative Perinatal Project, Turkheimer and colleagues found that the genetic and environmental shares of IQ variance changed non-linearly with SES: in impoverished families the shared environment accounted for about 60 % of the variance and the genetic contribution was close to zero; in affluent families the result was almost exactly the reverse (Turkheimer et al. 2003). Tucker-Drob and Bates pooled 14 studies with 24,926 pairs of twins and siblings: the interaction was present in US samples but not supported in samples from Western Europe and Australia, and in the Netherlands there was even evidence in the opposite direction (Tucker-Drob and Bates 2016). One explanation is that stronger social-welfare and education systems in these countries reduce the constraints that poverty places on development.

This result is itself one of the strongest arguments against genetic determinism: the size of a heritability depends on the population and its social institutions, and changing the environment can change the heritability.

Limits of the twin design

Note

Some limits that must be stated. First, the equal-environments assumption: the model assumes that MZ and DZ twins experience equally similar environments. MZ twins are indeed often treated more alike, but tests suggest that, for several psychiatric disorders, this similar treatment does not explain their higher concordance (Kendler et al. 1993); whether the assumption holds for other traits is still debated. Second, E contains measurement error: with a scale reliability of 0.8, 20 % of the total variance is measurement error, all of it counted in E, so at least a fifth (and usually more) of the “non-shared environment” is error. Third, sample representativeness: participants come mostly from high-income countries and particular eras, so the range of environments is limited and the results cannot simply be extrapolated. Fourth, the classical model assumes no gene–environment correlation or interaction, and the next chapter shows that both are common.

Note

Heritability is not a personal proportion. A heritability of 0.5 does not mean that a particular person’s trait comes “half from genes and half from the environment”. It is a statistical decomposition of differences between individuals in a population and has no meaning for a single person; nor does it say whether a trait can change: myopia is highly heritable, and glasses work all the same.

Chapter summary

Falconer’s formulas are simple but can give negative values, so maximum likelihood is preferable; in moderate samples “C is not significant” is often a matter of power. Fifty years of data give an average heritability of about 49 % and a shared environment of about 0.17; the heritability of intelligence rises with age, and the shared environment is not small for some childhood behaviour problems or adolescent religiousness. Heritability changes with the environment: the SES interaction appears in US samples but not in Western Europe or Australia. Heritability is a population statistic, not a personal proportion, and does not mean a trait cannot change.

References

Briley, Daniel A., and Elliot M. Tucker-Drob. 2013. “Explaining the Increasing Heritability of Cognitive Ability Across Development: A Meta-Analysis of Longitudinal Twin and Adoption Studies.” Psychological Science 24 (9): 1704–13. https://doi.org/10.1177/0956797613478618.
Burt, S. Alexandra. 2009. “Rethinking Environmental Contributions to Child and Adolescent Psychopathology: A Meta-Analysis of Shared Environmental Influences.” Psychological Bulletin 135 (4): 608–37. https://doi.org/10.1037/a0015702.
Falconer, Douglas S., and Trudy F. C. Mackay. 1996. Introduction to Quantitative Genetics. 4th ed. Longman.
Haworth, Claire M. A., Margaret J. Wright, Michelle Luciano, Nicholas G. Martin, et al. 2010. “The Heritability of General Cognitive Ability Increases Linearly from Childhood to Young Adulthood.” Molecular Psychiatry 15 (11): 1112–20. https://doi.org/10.1038/mp.2009.55.
Kendler, Kenneth S., Michael C. Neale, Ronald C. Kessler, Andrew C. Heath, and Lindon J. Eaves. 1993. “A Test of the Equal-Environment Assumption in Twin Studies of Psychiatric Illness.” Behavior Genetics 23 (1): 21–27. https://doi.org/10.1007/BF01067551.
Koenig, Laura B., Matt McGue, Robert F. Krueger, and Jr. Bouchard Thomas J. 2005. “Genetic and Environmental Influences on Religiousness: Findings for Retrospective and Current Religiousness Ratings.” Journal of Personality 73 (2): 471–88. https://doi.org/10.1111/j.1467-6494.2005.00316.x.
Neale, Michael C., and Lon R. Cardon. 1992. Methodology for Genetic Studies of Twins and Families. Kluwer Academic.
Plomin, Robert, John C. DeFries, Valerie S. Knopik, and Jenae M. Neiderhiser. 2016. “Top 10 Replicated Findings from Behavioral Genetics.” Perspectives on Psychological Science 11 (1): 3–23. https://doi.org/10.1177/1745691615617439.
Polderman, Tinca J. C., Beben Benyamin, Christiaan A. de Leeuw, et al. 2015. “Meta-Analysis of the Heritability of Human Traits Based on Fifty Years of Twin Studies.” Nature Genetics 47 (7): 702–9. https://doi.org/10.1038/ng.3285.
Tucker-Drob, Elliot M., and Timothy C. Bates. 2016. “Large Cross-National Differences in Gene Socioeconomic Status Interaction on Intelligence.” Psychological Science 27 (2): 138–49. https://doi.org/10.1177/0956797615612727.
Turkheimer, Eric. 2000. “Three Laws of Behavior Genetics and What They Mean.” Current Directions in Psychological Science 9 (5): 160–64. https://doi.org/10.1111/1467-8721.00084.
Turkheimer, Eric, Andreana Haley, Mary Waldron, Brian D’Onofrio, and Irving I. Gottesman. 2003. “Socioeconomic Status Modifies Heritability of IQ in Young Children.” Psychological Science 14 (6): 623–28. https://doi.org/10.1046/j.0956-7976.2003.psci_1475.x.

Fan, Y. (2026). Early Experience, Epigenetic Methylation and the Limits of Intergenerational Transmission: From Glucocorticoid-Receptor Programming and Twin Variance Decomposition to Social-Learning Channels, Read Beside Classical Chinese Family Instruction [早期经验、表观遗传甲基化与跨代行为先验的传递边界] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23761337 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).