Coloc: a package for colocalisation analyses
Table of Contents
<!– %\VignetteEngine{knitr} %\VignetteIndexEntry{Colocalisation vignette} –>
1 A brief outline of colocalisation analysis
<font color="grey"> Chris Wallace / [web](http://chr1swallace.github.io) / [email](mailto:cew54 at cam.ac.uk) </font>
The coloc package can be used to perform genetic colocalisation analysis of two potentially related phenotypes, to ask whether they share common genetic causal variant(s) in a given region. There are a few key references which this vignette will not duplicate (see below), but, in brief, two approaches are implemented.
First, the proportional approach uses the fact that for two traits
sharing causal variants, regression coefficients for either trait
against any set of SNPs in the neighbourhood of those variants must be
proportional. This test was first proposed by Plagnol et al. 1
in the context of evaluating whether expression of the gene RPS26
mediated the association of type 1 diabetes to a region on chromosome
12q13 as had recently been proposed. The test addressed a common
issue in genetics, and meant researchers could avoid the need to
squint at parallel manhattan plots to decide whether two traits share
causal variants. The function coloc.test()
in this package evolved
from code released by Vincent, but no longer available.
However, choosing which SNPs to use for the test is a problem.
The obvious choice is to use those most strongly associated with one
or other trait to maximise information, but doing so induces bias in
the regression coefficients, which in turn leads to increased
likelihood of spuriously rejecting the null of colocalisation, ie
a quite substantially increased type 1 error rate 2. I proposed
two alternatives to address this problem, either using a principal
component summary of genetic variation in the region to overcome the
need to select a small set of test SNPs, implemented in coloc.pcs()
and associated functions, or to use the ideas of Bayesian model
averaging to average p values over SNP selections, generating
posterior predictive p values, implemented in coloc.bma()
.
Proportional testing, however, requires individual level genotype
data, which are not always available. Claudia Giambartolomei and
Vincent Plagnol have proposed an alternative method, which makes use
of Jon Wakefield's work on determining approximate Bayes Factors from
p values 3 to generate a Bayesian colocalisation analysis 4,
implemented in the function coloc.summaries()
. Note that it is
possible to use Bayesian analysis for proportional testing too, in
determining the posterior distribution of the proportionality
constant \(\eta\).
Function | Approach | Data required | Dependence |
---|---|---|---|
between datasets | |||
coloc.abf | Bayesian | summary statistics | independent |
coloc.abf.datasets | Bayesian | raw genotypes | independent |
coloc.bma | Proportional, averages | raw genotypes | independent |
over models | |||
coloc.pcs/coloc.test | Proportional, based on | raw genotypes | independent |
PC summary of genotypes |
2 Usage
Let's simulate a small dataset, and compare the three methods.
## Class "simdata" [in ".GlobalEnv"] ## ## Slots: ## ## Name: df1 df2 ## Class: data.frame data.frame
## Generate 1 small sets of data
If you are not familiar with the analysis of genetic data in R, I
would suggest beginning with the snpStats package, which has
functions for reading data in a variety of formats and contains a
vignette on data input. Once you have your genetic data loaded as a
SnpMatrix, X
, and phenotype information in a vector Y
, then
conversion to a data.frame
as used above follows
df <- as.data.frame(cbind(Y=Y, as(X,"numeric")))
3 An aside: fine mapping under a single causal variant assumption
The Approximate Bayes Factor colocalisation analysis described in the next section essentially works by fine mapping each trait under a single causal variant assumption and then integrating over those two posterior distributions to calculate probabilities that those variants are shared. Of course, this means we can look at each trait on its own quite simply, and we can do that with the function finemap.abf
.
First we analyse a single trait from our simulated data to generate summary statistics:
if(requireNamespace("snpStats")) { library(snpStats) Y1 <- data@df1$Y X1 <- new("SnpMatrix",as.matrix(data@df1[,-1])) p1 <- snpStats::p.value(single.snp.tests(phenotype=Y1, snp.data=X1),df=1) maf <- col.summary(X1)[,"MAF"] get.beta <- function(...) { tmp <- snpStats::snp.rhs.estimates(..., family="gaussian") beta <- sapply(tmp,"[[","beta") varbeta <- sapply(tmp, "[[", "Var.beta") return(list(beta=beta,varbeta=varbeta)) } b1 <- get.beta(Y1 ~ 1, snp.data=X1) } else { Y1 <- data@df1$Y X1 <- as.matrix(data@df1[,-1]) tests1 <- lapply(1:ncol(X1), function(i) summary(lm(Y1 ~ X1[,i]))$coefficients[2,]) p1 <- sapply(tests1,"[",4) maf <- colMeans(X2)/2 get.beta <- function(x) { beta <- sapply(x,"[",1) varbeta <- sapply(x, "[", 2)^2 return(list(beta=beta,varbeta=varbeta)) } b1 <- get.beta(tests1) }
## coercing object of mode numeric to SnpMatrix
Then we analyse them:
my.res <- finemap.abf(dataset=list(beta=b1$beta, varbeta=b1$varbeta, N=nrow(X1),sdY=sd(Y1),type="quant")) head(my.res)
## V. z. r. lABF. snp prior SNP.PP ## s1 0.03924328 5.78083831 0.7567274 11.9374068 SNP.1 1e-04 9.979937e-01 ## s2 0.03880072 4.01220890 0.7588092 5.3965036 SNP.2 1e-04 1.440289e-03 ## s3 0.04455547 -0.06333058 0.7326023 -0.6580400 SNP.3 1e-04 3.380608e-06 ## s4 0.04602953 0.83093858 0.7261782 -0.3969407 SNP.4 1e-04 4.389234e-06 ## s5 0.04237982 -1.83425483 0.7422945 0.5707526 SNP.5 1e-04 1.155188e-05 ## s6 0.04495749 -0.22493863 0.7308390 -0.6377335 SNP.6 1e-04 3.449958e-06
tail(my.res)
## V. z. r. lABF. snp prior ## s46 0.04560292 -0.00230155 0.7280258 -0.65102205 SNP.46 0.0001 ## s47 0.05248414 -1.20366960 0.6993259 -0.09426528 SNP.47 0.0001 ## s48 0.04101521 -0.03458088 0.7485056 -0.68971972 SNP.48 0.0001 ## s49 0.04530207 0.58219760 0.7293344 -0.52983015 SNP.49 0.0001 ## s50 0.04467786 -1.08347773 0.7320646 -0.22881057 SNP.50 0.0001 ## 1 NA NA NA 1.00000000 null 0.9950 ## SNP.PP ## s46 3.404416e-06 ## s47 5.940719e-06 ## s48 3.275190e-06 ## s49 3.843046e-06 ## s50 5.192862e-06 ## 1 1.774485e-05
The SNP.PP
column shows the posterior probability that exactly that SNP is causal. Note the last line in this data.frame does not correspond to a SNP, but to the null model, that no SNP is causal.
Finally, if you do have full genotype data as here, while this is a fast method for fine mapping, it can be sensible to consider multiple causal variant models too. One package that allows you to do this is GUESSFM, described in5
4 (Approximate) Bayes Factor colocalisation analyses
4.1 Introduction
The idea behind the ABF analysis is that the association of each trait with SNPs in a region may be summarised by a vector of 0s and at most a single 1, with the 1 indicating the causal SNP (so, assuming a single causal SNP for each trait). The posterior probability of each possible configuration can be calculated and so, crucially, can the posterior probabilities that the traits share their configurations. This allows us to estimate the support for the following cases:
- \(H_0\): neither trait has a genetic association in the region
- \(H_1\): only trait 1 has a genetic association in the region
- \(H_2\): only trait 2 has a genetic association in the region
- \(H_3\): both traits are associated, but with different causal variants
- \(H_4\): both traits are associated and share a single causal variant
4.2 The basic coloc.abf
function
The function coloc.abf
is ideally suited to the case when only
summary data are available, and requires, for each trait, either:
- p values for each SNP
- each SNP's minor allele frequency
- sample size
- ratio of cases:controls (if using a case-control trait)
or:
- regression coefficients for each SNP
- variance of these regression coefficients.
If regression coefficients and their variance are available, please use these, but we can also approximate Bayes Factors from p values and minor allele frequencies, although, note, such approximation can be less accurate when imputed data are used. NB, you can mix and match, depending on the data available from each study.
A wrapper function is avalailable to run all these steps but we will first generate the p values manually to give all the details. We use the snpStats library from Bioconductor to calculate the p values quickly. We will also calculate the coefficients and their standard errors to compare the two approaches (but you should use only one - the coefficients if available, otherwise the p values).
if(requireNamespace("snpStats")) { library(snpStats) Y1 <- data@df1$Y Y2 <- data@df2$Y X1 <- new("SnpMatrix",as.matrix(data@df1[,-1])) X2 <- new("SnpMatrix",as.matrix(data@df2[,-1])) p1 <- snpStats::p.value(single.snp.tests(phenotype=Y1, snp.data=X1),df=1) p2 <- snpStats::p.value(single.snp.tests(phenotype=Y2, snp.data=X2),df=1) maf <- col.summary(X2)[,"MAF"] get.beta <- function(...) { tmp <- snpStats::snp.rhs.estimates(..., family="gaussian") beta <- sapply(tmp,"[[","beta") varbeta <- sapply(tmp, "[[", "Var.beta") return(list(beta=beta,varbeta=varbeta)) } b1 <- get.beta(Y1 ~ 1, snp.data=X1) b2 <- get.beta(Y2 ~ 1, snp.data=X2) } else { Y1 <- data@df1$Y Y2 <- data@df2$Y X1 <- as.matrix(data@df1[,-1]) X2 <- as.matrix(data@df2[,-1]) tests1 <- lapply(1:ncol(X1), function(i) summary(lm(Y1 ~ X1[,i]))$coefficients[2,]) tests2 <- lapply(1:ncol(X2), function(i) summary(lm(Y2 ~ X2[,i]))$coefficients[2,]) p1 <- sapply(tests1,"[",4) p2 <- sapply(tests2,"[",4) maf <- colMeans(X2)/2 get.beta <- function(x) { beta <- sapply(x,"[",1) varbeta <- sapply(x, "[", 2)^2 return(list(beta=beta,varbeta=varbeta)) } b1 <- get.beta(tests1) b2 <- get.beta(tests2) }
## coercing object of mode numeric to SnpMatrix ## coercing object of mode numeric to SnpMatrix
Note that we are using the second dataset in that case to compute the minor allele frequencies. This is unlikely to make any significant difference but one could have used dataset 1 instead. It is now possible to compute the probabilities of interest.
With coefficients, and std. deviation of Y known, we have the most accurate inference. Note that if you have a case-control trait, set type="cc" and supply s, the proportion of samples in the dataset that are cases (from which sdY can be derived), instead of giving sdY directly.
my.res <- coloc.abf(dataset1=list(beta=b1$beta, varbeta=b1$varbeta, N=nrow(X1),sdY=sd(Y1),type="quant"), dataset2=list(beta=b2$beta, varbeta=b2$varbeta, N=nrow(X2),sdY=sd(Y2),type="quant"), MAF=maf)
## PP.H0.abf PP.H1.abf PP.H2.abf PP.H3.abf PP.H4.abf ## 2.92e-05 4.47e-04 6.73e-05 3.08e-05 9.99e-01 ## [1] "PP abf for shared variant: 99.9%"
print(my.res[[1]])
## nsnps PP.H0.abf PP.H1.abf PP.H2.abf PP.H3.abf ## 5.000000e+01 2.915837e-05 4.466024e-04 6.726224e-05 3.079177e-05 ## PP.H4.abf ## 9.994262e-01
When std. deviation of Y is unknown, coloc will try and estimate sdY from variance of beta and MAF, but this can be noisy, particularly for small datasets, and will produce a warning:
my.res <- coloc.abf(dataset1=list(beta=b1$beta, varbeta=b1$varbeta, N=nrow(X1),type="quant"), dataset2=list(beta=b2$beta, varbeta=b2$varbeta, N=nrow(X2),type="quant"), MAF=maf)
## Warning in sdY.est(d$varbeta, d$MAF, d$N): estimating sdY from maf and ## varbeta, please directly supply sdY if known ## Warning in sdY.est(d$varbeta, d$MAF, d$N): estimating sdY from maf and ## varbeta, please directly supply sdY if known
## PP.H0.abf PP.H1.abf PP.H2.abf PP.H3.abf PP.H4.abf ## 2.54e-06 1.48e-04 1.75e-05 2.00e-05 1.00e+00 ## [1] "PP abf for shared variant: 100%"
print(my.res[[1]])
## nsnps PP.H0.abf PP.H1.abf PP.H2.abf PP.H3.abf ## 5.000000e+01 2.535953e-06 1.476540e-04 1.751478e-05 1.997285e-05 ## PP.H4.abf ## 9.998123e-01
When only p values are available, we can use the form:
my.res <- coloc.abf(dataset1=list(pvalues=p1,N=nrow(X1),type="quant"), dataset2=list(pvalues=p2,N=nrow(X2),type="quant"), MAF=maf)
## PP.H0.abf PP.H1.abf PP.H2.abf PP.H3.abf PP.H4.abf ## 1.01e-05 2.61e-04 4.00e-05 2.71e-05 1.00e+00 ## [1] "PP abf for shared variant: 100%"
print(my.res[[1]])
## nsnps PP.H0.abf PP.H1.abf PP.H2.abf PP.H3.abf ## 5.000000e+01 1.014723e-05 2.605269e-04 3.998959e-05 2.705757e-05 ## PP.H4.abf ## 9.996623e-01
Here, as we have simulated full genotype data in snpStats format, we can use
the wrapper function coloc.abf.datasets()
to combine all the steps
shown above.
ct.abf <- coloc.abf.datasets(data@df1, data@df2, response1="Y", response2="Y", type1="quant", type2="quant")
## coercing object of mode numeric to SnpMatrix ## coercing object of mode numeric to SnpMatrix ## PP.H0.abf PP.H1.abf PP.H2.abf PP.H3.abf PP.H4.abf ## 1.08e-05 2.61e-04 4.25e-05 2.72e-05 1.00e+00 ## [1] "PP abf for shared variant: 100%"
5 Proportional testing
The code below first prepares a principal component object by combining the genotypes in the two dataset, then models the most informative components (the minimum set required to capture 80% of the genetic variation) in each dataset, before finally testing whether there is colocalisation between these models.
## run a coloc with pcs pcs <- pcs.prepare(data@df1[,-1], data@df2[,-1]) pcs.1 <- pcs.model(pcs, group=1, Y=data@df1[,1], threshold=0.8)
## selecting 38 components out of 50 to capture 0.8094953 of total variance.
pcs.2 <- pcs.model(pcs, group=2, Y=data@df2[,1], threshold=0.8)
## selecting 38 components out of 50 to capture 0.8094953 of total variance.
ct.pcs <- coloc.test(pcs.1,pcs.2)
The plot shows the estimated coefficients for each principal component modeled for traits 1 and 2 on the x and y axes, with circles showing the 95% confidence region. The points lie close to the line through the origin, which supports a hypothesis of colocalisation.
A little more information is stored in the ct.pcs
object:
ct.pcs
## eta.hat chisquare n p.value.chisquare ## 1.0346897 35.3484010 38.0000000 0.5465861
str(summary(ct.pcs))
## eta.hat chisquare n p.value.chisquare ## 1.0346897 35.3484010 38.0000000 0.5465861 ## Named num [1:4] 1.035 35.348 38 0.547 ## - attr(*, "names")= chr [1:4] "eta.hat" "chisquare" "n" "p.value.chisquare"
The best estimate for the coefficient of proportionality,
\(\hat{\eta}\), is 1.13, and the null hypothesis of colocalisation is
not rejected with a chisquare statistic of 5.27 based on 7 degrees of
freedom (\(n-1\) where the \(n\) is the number of components tested, and
one degree of freedom was used in estimating \(\eta\)), giving a p value
of 0.63. The summary()
method returns a named vector of length 4
containing this information.
If more information is needed about \(\eta\), then this is available if
the bayes
argument is supplied:
ct.pcs.bayes <- coloc.test(pcs.1,pcs.2, bayes=TRUE)
## ............
ci(ct.pcs.bayes)
## $eta.mode ## [1] 1.039993 ## ## $lower ## [1] 0.8445606 ## ## $upper ## [1] 1.274574 ## ## $level.observed ## [1] 0.9390264 ## ## $interior ## [1] TRUE
5.1 Using Bayes Factors to compare specific values of \(\eta\)
It may be that specific values of \(\eta\) are of interest. For example, when comparing eQTLs in two tissues, or when comparing risk of two related diseases, the value \(\eta=1\) is of particular interest. In proportional testing, we can use Bayes Factors to compare the support for different values of \(\eta\). Eg
## compare individual values of eta ct.pcs <- coloc.test(pcs.1,pcs.2, bayes.factor=c(-1,0,1))
## ............
bf(ct.pcs)
## values.against ## values.for -1 0 1 ## -1 1.000000e+00 4.495343e-33 9.816601e-73 ## 0 2.224524e+32 1.000000e+00 2.183727e-40 ## 1 1.018683e+72 4.579328e+39 1.000000e+00
## compare ranges of eta ct.bma <- coloc.bma(data@df1, data@df2, family1="gaussian", family2="gaussian", bayes.factor=list(c(-0.1,1), c(0.9,1.1)))
## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead.
## Fitting 97 multi SNP models to dataset 1
## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead.
## Fitting 97 multi SNP models to dataset 2
## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead. ## Warning in E1ot$app1 - E0ot$app1: Recycling array of length 1 in vector-array arithmetic is deprecated. ## Use c() or as.vector() instead.
## Averaging coloc testing over 3 models with posterior probabilities >= 1e-229 ## ...
bf(ct.bma)
## values.against ## values.for c(-0.1, 1) c(0.9, 1.1) ## c(-0.1, 1) 1.00000 0.08537724 ## c(0.9, 1.1) 11.71272 1.00000000
6 The difference between proportional and ABF approaches
So what are the differences between proportional and ABF approaches? Which should you choose?
Well, if you only have p values, then you must use ABF. But be aware that a single causal variant is assumed, and that for accurate inference, the causal variant needs to be included, so either very dense or imputed genotyping data is needed. The ABF approach has another big advantage over proportional testing: being Bayesian, it allows you to evaluate support for each hypothesis, whereas with proportional testing, when the null of colocalisation is not rejected, you cannot be sure whether this reflects true colocalisation or a lack of power. The proportional approach is much less affected by spareness of genotyping data, with power only slightly decreased, but type 1 error rates unaffected.
The behaviour of the two approaches only really differs when there are two or more causal variants. When both are shared, proportional testing has the same type 1 error rate, and whilst ABF tends to still favour \(H_4\) (shared variant), it tends to put some more weight on \(H_3\) (distinct variants). But when at least one is specific to one trait and at least one is shared, their behaviour differs more substantially. Of course, neither approach was designed with this case in mind, and so there is no "right" answer, but it is instructive to understand their expected behaviour. Proportional testing tends to reject colocalisation, whilst ABF tends to favour sharing. Until the methods are extended to incorporate this specific case, it can be useful to compare the two approaches when complete and dense genotyping data are available. When the results differ, we have tended to identify a combination of shared and distinct causal variants. The ABF approach can still be applied in this case, if p values are available conditioning on the strongest signal, as demonstrated in our paper 4.
You can see more about the ABF approach on this blogpost.