Description Usage Arguments Details Value Author(s) Examples
Performs a stepwise downward “model selection” in which SNPs are iteratively removed from the risk score until the heterogeneity test is no longer significant at the specified threshold.
1 | grs.filter.Qrs(w, b, s, p.thresh = 0.05)
|
w |
coefficients for the risk score |
b |
aligned beta coefficients in the testing dataset |
s |
standard errors |
p.thresh |
P-value threshold |
When there are m SNPs in the risk score, the heterogeneity
test is an (m-1) d.f. LRT comparing the 1 d.f. risk score model
against the unconstrained m d.f. model, as reported by the Qrs
element of grs.summary
. At each iteration, if the
risk score model has a significant heterogeneity test (at p.thresh
), the
SNP is removed that gives the greatest decrease in the heterogeneity
test statistic.
No guarantee is given about the performance of this procedure. Intuitively, it is expected to work when the majority of SNPs in the risk score only affect the outcome with effects proportional to their weights in the score (including the possibility of zero effects), and a minority of SNPs affect the outcome with non-proportional effects.
When using a risk score to make causal inference, the application of this procedure (and indeed of any use of the heterogeneity test) should not be viewed as a replacement for detailed biological knowledge about the mechanisms of action of the causal genetic variants tagged by the SNPs used in the risk score.
Compared with iteratively calculating the heterogeneity test using
grs.summary
and removing SNPs based on inspection of
grs.plot
, the grs.filter.Qrs
procedure offers
only convenience and (a modicum of) objectivity, and nothing more.
A logical vector of the same length as w
, set TRUE or FALSE
respectively for SNPs included or excluded at the end of the model
selection procedure.
Toby Johnson Toby.x.Johnson@gsk.com
1 2 3 4 5 6 7 8 | data(magic.scores)
score1 <- subset(magic.scores, score == "FG2010")
score1 <- within(score1, okay <- grs.filter.Qrs(coef, beta_TG, se_TG))
with(score1, {grs.plot(coef, beta_TG, se_TG, locus);
title(xlab = "FG effect", ylab = "TG effect")})
with(score1, locus[!okay]) # loci removed
with(subset(score1, okay), {grs.plot(coef, beta_TG, se_TG, locus);
title(xlab = "FG effect", ylab = "TG effect")})
|
Loading required package: survival
[1] "GCKR" "FADS1" "SLC2A2"
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.