Why Quantitative-Trait SKAT Uses a Linear Null Model
A gene can contain several rare variants whose effects on a quantitative phenotype differ in direction and magnitude. SKAT tests their joint contribution without requiring all variant effects to point in the same direction. For a quantitative outcome, the test starts with a linear model for the phenotype under the null hypothesis of no association between the gene’s variants and the outcome. Covariates such as age, sex, or ancestry variables are included in this null model so that the gene-level test targets association beyond those modeled covariate effects.
The test is a variance-component test: it asks whether the pattern of variant effects is more variable than expected when all effects are zero. Its statistic is a weighted quadratic form in the null-model residuals. Consequently, its null distribution is generally a mixture of chi-square distributions, not a single chi-square distribution. The covariate adjustment, variant weights, and mixture calibration must be kept together when calculating a p-value.
Quantitative-Trait Null Model and SKAT Statistic
The design matrix must contain the intended covariates, and the linear mean model and error assumptions must be adequate for the chosen calibration. In particular, unexplained relatedness or heteroscedasticity can invalidate the independent, constant-variance error model; such settings require an appropriate covariance model and corresponding test calibration. The genotype matrix and weights are treated as fixed for the null-distribution calculation. Usually the weights are selected before testing, based on the analysis plan and variant information.
Define the residual projection matrix \(P=I-X(X'X)^{-1}X'\) when \(X\) has full column rank. More generally, use the orthogonal projection onto the residual space, \(P=I-XX^+\), where \(X^+\) is the Moore–Penrose inverse. Then \(r=Py\), and the residual degrees of freedom are \(n-\operatorname{rank}(X)\). If estimating residual variance from the null model, the usual estimate is \(s^2=r'r/[n-\operatorname{rank}(X)]\), provided the residual degrees of freedom are positive. This rank-based statement also covers a rank-deficient design matrix.
This tutorial uses \(Q=r'GWG'r\), without a factor of one-half. Other presentations may include a constant factor in the statistic; that is valid only when the null-distribution eigenvalues are scaled by the same factor. Under the Gaussian null model, the relevant eigenvalues are those of \(\sigma^2 W^{1/2}G'PGW^{1/2}\). If \(\sigma^2\) is treated as known, \(Q\) has the mixture distribution given by those eigenvalues. When \(\sigma^2\) is unknown, it is commonly estimated under the null and used in the mixture calibration; the resulting calibration is a plug-in procedure, and software may use finite-sample refinements.
Fitting the Null Model
Worked Example: Residuals and Residual Degrees of Freedom
Suppose six hypothetical participants have quantitative phenotypes \(10,12,11,14,13,15\). The first three are from site A and the remaining three from site B. Fit a null model with an intercept and a site indicator. Assume independent errors with constant variance for this illustration.
The design matrix has two linearly independent columns, so \(\operatorname{rank}(X)=2\). With site as the only covariate besides the intercept, the fitted value for each participant is that site’s mean. The site A mean is \((10+12+11)/3=11\); the site B mean is \((14+13+15)/3=14\).
Thus the residual vector is \(r=(-1,1,0,0,-1,1)'\). The residual sum of squares is \(r'r=(-1)^2+1^2+0^2+0^2+(-1)^2+1^2=4\).
The residual degrees of freedom are \(6-2=4\), and the null-model variance estimate is \(s^2=4/4=1\) phenotype-unit squared. This calculation depends on the rank of the design matrix, not merely on how many columns were written down: if its columns were linearly dependent, the rank, rather than the column count, would determine the degrees of freedom.
Calculating the Gene Statistic and Its Null Distribution
The covariate adjustment removes the part of each genotype explained by the null-model covariates. Algebraically, \(G'PG\) is the matrix of cross-products among the residualized genotype columns. With weights, the matrix \(W^{1/2}G'PGW^{1/2}\) determines the mixture’s eigenvalues. If these eigenvalues are \(\lambda_1,\ldots,\lambda_m\), then under the null, \(Q\) has the distribution of \(\sigma^2\sum_{k=1}^{m}\lambda_k\chi^2_{1,k}\), where the \(\chi^2_{1,k}\) are independent chi-square random variables with one degree of freedom. Zero eigenvalues contribute nothing. In practice, the upper-tail probability is calculated using a mixture-distribution method, rather than by comparing \(Q\) with an ordinary chi-square distribution having \(m\) degrees of freedom.
Worked Example: Covariate-Adjusted SKAT for a Hypothetical Gene
Consider six hypothetical participants at two sites, three per site, with two gene variants. The covariates are an intercept and site. The genotype columns are \(g_1=(1,0,0,1,0,0)'\) and \(g_2=(0,1,0,0,1,2)'\). These are valid genotype dosages from 0 to 2. Suppose the observed phenotype residuals after fitting the site-adjusted null model are \(r=(1.75,0.25,-2,0.25,-1.25,1)'\). They sum to zero within each site, as required for residuals from this model. Assume the null error variance is known to be \(\sigma^2=1\) phenotype-unit squared for this worked calibration.
Use weights \(W=\operatorname{diag}(1,1/2)\). The genotype-residual cross-products are \(g_1'r=1.75+0.25=2\) and \(g_2'r=0.25-1.25+2(1)=1\). Therefore,
For the mixture calibration, center each genotype column within each site. The first site’s centered genotype vectors are \((2/3,-1/3,-1/3)'\) and \((-1/3,2/3,-1/3)'\). Their squared lengths are \(2/3\) each, and their cross-product is \(-1/3\). In the second site, the centered vectors are \((2/3,-1/3,-1/3)'\) and \((-1,0,1)'\). Their squared lengths are \(2/3\) and \(2\), and their cross-product is \(-1\). Adding the two site contributions gives
The weighted matrix is consequently
For a symmetric matrix with equal diagonal entries \(a\) and off-diagonal entries \(b\), the eigenvalues are \(a+b\) and \(a-b\). Here they are \(4/3+4/(3\sqrt{2})\approx2.2761\) and \(4/3-4/(3\sqrt{2})\approx0.3905\). Since \(\sigma^2=1\), the null distribution is approximately \(2.2761\chi^2_{1,1}+0.3905\chi^2_{1,2}\). Its upper-tail probability at \(Q=4.5\), evaluated with a mixture chi-square method, is approximately \(0.183\). This is not the tail probability from a two-degree-of-freedom ordinary chi-square distribution.
The example assumes a known variance to make the mixture calculation explicit. With unknown variance, one would estimate it under the null model and use the corresponding variance-scaled mixture calibration. One must not retain the known-variance p-value while silently substituting a different variance estimate.
Why the Mixture Appears
A short derivation shows why the eigenvalues, rather than simply the number of variants, determine the null distribution. Under \(H_0\), \(y=X\beta+\varepsilon\), and \(P X=0\). Therefore \(r=Py=P\varepsilon\). Write \(K=GWG'\). The statistic is \(Q=\varepsilon'PKP\varepsilon\). Since \(\varepsilon=\sigma z\) for \(z\sim N(0,I)\), it follows that \(Q=\sigma^2z'PKPz\).
The symmetric matrix \(PKP\) is positive semidefinite. Diagonalizing it gives nonnegative eigenvalues; an orthogonal transformation of \(z\) still has independent standard normal components. Each squared component is therefore an independent \(\chi^2_1\) random variable, weighted by its eigenvalue. The nonzero eigenvalues of \(PKP\) agree with those of \(W^{1/2}G'PGW^{1/2}\), so the two forms yield the same mixture. This justifies both the covariate adjustment and the eigenvalue-based calibration.
Worked Example: Rescaling All Variant Weights
In the preceding gene example, multiply every weight by \(c=2\). Then \(W_{\text{new}}=2W\), and the statistic becomes \(Q_{\text{new}}=r'G(2W)G'r=2Q=9.0\). Each eigenvalue also doubles, becoming approximately \(4.5522\) and \(0.7810\).
The calibrated tail probability is unchanged: comparing \(9.0\) with the mixture \(4.5522\chi^2_{1,1}+0.7810\chi^2_{1,2}\) is equivalent, after dividing both sides by two, to comparing \(4.5\) with the original mixture. This scale invariance holds only when the statistic and its null distribution are scaled together. Changing the relative weights of variants, in contrast, can change the test and its p-value.
Interpretation and Common Pitfalls
A small SKAT p-value is evidence against the null that the tested variants make no contribution to the quantitative phenotype, conditional on the modeled covariates and the assumptions used for calibration. It is a gene-level result. By itself, it does not establish that every variant is associated, identify a causal variant, or show that genetic variation causes a change in phenotype. Nor does the statistic give a single per-allele effect estimate: its purpose is to test a weighted collection of effects through their joint contribution.
- Using unadjusted genotype cross-products. The calibration must use \(G'PG\), not \(G'G\), when covariates are included in the null model.
- Using the wrong residual degrees of freedom. The correct count is \(n-\operatorname{rank}(X)\); it equals \(n-p\) only when \(X\) has full column rank.
- Comparing with an ordinary chi-square distribution. The eigenvalues generally differ, so use the weighted mixture distribution for the p-value.
- Rescaling only one part of the test. If all weights are rescaled, the statistic and all mixture eigenvalues must be rescaled together.
- Overstating the conclusion. A significant result supports gene-level association under the model; it does not prove causality or specify which variant is responsible.
Check Your Understanding
Use these questions to check the connection between the null model, the statistic, and its calibration.
- If \(X\) has six columns but rank four, what are the residual degrees of freedom for a sample of 30 participants?
- Why does \(G'PG\), rather than \(G'G\), enter the mixture calibration when covariates are included?
- For genotype-residual products \(g_1'r=3\) and \(g_2'r=-2\), with weights \(1\) and \(1/4\), calculate \(Q\).
- What does a small gene-level SKAT p-value establish, and what does it not establish about individual variants or causality?
- If every variant weight is multiplied by the same positive constant, what must happen to the statistic and the mixture eigenvalues for the calibrated p-value to remain unchanged?