Investigating height in relation to number of live births

library(TwoSampleMR)
## TwoSampleMR version 0.5.6 
## [>] New: Option to use non-European LD reference panels for clumping etc
## [>] Some studies temporarily quarantined to verify effect allele
## [>] See news(package='TwoSampleMR') and https://gwas.mrcieu.ac.uk for further details

Sitting height

d <- make_dat("ukb-b-16881", "ukb-b-1209")
## API: public: http://gwas-api.mrcieu.ac.uk/
## Extracting data for 602 SNP(s) from 1 GWAS(s)
## Harmonising Sitting height || id:ukb-b-16881 (ukb-b-16881) and Number of live births || id:ukb-b-1209 (ukb-b-1209)
## Removing the following SNPs for incompatible alleles:
## rs4651157, rs872937
d_mr<-mr(d)
## Analysing 'ukb-b-16881' on 'ukb-b-1209'
d_mr
##   id.exposure id.outcome                                outcome
## 1 ukb-b-16881 ukb-b-1209 Number of live births || id:ukb-b-1209
## 2 ukb-b-16881 ukb-b-1209 Number of live births || id:ukb-b-1209
## 3 ukb-b-16881 ukb-b-1209 Number of live births || id:ukb-b-1209
## 4 ukb-b-16881 ukb-b-1209 Number of live births || id:ukb-b-1209
## 5 ukb-b-16881 ukb-b-1209 Number of live births || id:ukb-b-1209
##                           exposure                    method nsnp           b
## 1 Sitting height || id:ukb-b-16881                  MR Egger  602 -0.05189472
## 2 Sitting height || id:ukb-b-16881           Weighted median  602 -0.05045782
## 3 Sitting height || id:ukb-b-16881 Inverse variance weighted  602 -0.05611316
## 4 Sitting height || id:ukb-b-16881               Simple mode  602 -0.07066038
## 5 Sitting height || id:ukb-b-16881             Weighted mode  602 -0.07695555
##           se         pval
## 1 0.02497578 3.815225e-02
## 2 0.01495977 7.438068e-04
## 3 0.01094723 2.962999e-07
## 4 0.04407421 1.094128e-01
## 5 0.02675565 4.167190e-03
mr_scatter_plot(d_mr,d)
## $`ukb-b-16881.ukb-b-1209`

## 
## attr(,"split_type")
## [1] "data.frame"
## attr(,"split_labels")
##   id.exposure id.outcome
## 1 ukb-b-16881 ukb-b-1209
d <- make_dat("ukb-b-1209", "ukb-b-16881")
## Extracting data for 11 SNP(s) from 1 GWAS(s)
## Harmonising Number of live births || id:ukb-b-1209 (ukb-b-1209) and Sitting height || id:ukb-b-16881 (ukb-b-16881)
d_mr<-mr(d)
## Analysing 'ukb-b-1209' on 'ukb-b-16881'
d_mr
##   id.exposure  id.outcome                          outcome
## 1  ukb-b-1209 ukb-b-16881 Sitting height || id:ukb-b-16881
## 2  ukb-b-1209 ukb-b-16881 Sitting height || id:ukb-b-16881
## 3  ukb-b-1209 ukb-b-16881 Sitting height || id:ukb-b-16881
## 4  ukb-b-1209 ukb-b-16881 Sitting height || id:ukb-b-16881
## 5  ukb-b-1209 ukb-b-16881 Sitting height || id:ukb-b-16881
##                                 exposure                    method nsnp
## 1 Number of live births || id:ukb-b-1209                  MR Egger   11
## 2 Number of live births || id:ukb-b-1209           Weighted median   11
## 3 Number of live births || id:ukb-b-1209 Inverse variance weighted   11
## 4 Number of live births || id:ukb-b-1209               Simple mode   11
## 5 Number of live births || id:ukb-b-1209             Weighted mode   11
##              b         se       pval
## 1 -2.275236596 0.89828842 0.03208459
## 2 -0.008219910 0.04033566 0.83851942
## 3 -0.195200627 0.12988639 0.13287600
## 4  0.016916871 0.04681329 0.72534182
## 5  0.008762991 0.04577546 0.85201647
mr_scatter_plot(d_mr,d)
## $`ukb-b-1209.ukb-b-16881`

## 
## attr(,"split_type")
## [1] "data.frame"
## attr(,"split_labels")
##   id.exposure  id.outcome
## 1  ukb-b-1209 ukb-b-16881

Standing height

d <- make_dat("ukb-b-10787", "ukb-b-1209")
## Extracting data for 773 SNP(s) from 1 GWAS(s)
## Finding proxies for 1 SNPs in outcome ukb-b-1209
## Extracting data for 1 SNP(s) from 1 GWAS(s)
## Harmonising Standing height || id:ukb-b-10787 (ukb-b-10787) and Number of live births || id:ukb-b-1209 (ukb-b-1209)
## Removing the following SNPs for incompatible alleles:
## rs1019075, rs11051456, rs34773647, rs664317, rs7978217
d_mr<-mr(d)
## Analysing 'ukb-b-10787' on 'ukb-b-1209'
d_mr
##   id.exposure id.outcome                                outcome
## 1 ukb-b-10787 ukb-b-1209 Number of live births || id:ukb-b-1209
## 2 ukb-b-10787 ukb-b-1209 Number of live births || id:ukb-b-1209
## 3 ukb-b-10787 ukb-b-1209 Number of live births || id:ukb-b-1209
## 4 ukb-b-10787 ukb-b-1209 Number of live births || id:ukb-b-1209
## 5 ukb-b-10787 ukb-b-1209 Number of live births || id:ukb-b-1209
##                            exposure                    method nsnp           b
## 1 Standing height || id:ukb-b-10787                  MR Egger  772 -0.03819174
## 2 Standing height || id:ukb-b-10787           Weighted median  772 -0.03518700
## 3 Standing height || id:ukb-b-10787 Inverse variance weighted  772 -0.03997508
## 4 Standing height || id:ukb-b-10787               Simple mode  772 -0.06638393
## 5 Standing height || id:ukb-b-10787             Weighted mode  772 -0.05189244
##            se         pval
## 1 0.019541100 5.101177e-02
## 2 0.012993964 6.770035e-03
## 3 0.009654704 3.465848e-05
## 4 0.033323589 4.671233e-02
## 5 0.021592120 1.648286e-02
mr_scatter_plot(d_mr,d)
## $`ukb-b-10787.ukb-b-1209`

## 
## attr(,"split_type")
## [1] "data.frame"
## attr(,"split_labels")
##   id.exposure id.outcome
## 1 ukb-b-10787 ukb-b-1209
d <- make_dat("ukb-b-1209", "ukb-b-10787")
## Extracting data for 11 SNP(s) from 1 GWAS(s)
## Harmonising Number of live births || id:ukb-b-1209 (ukb-b-1209) and Standing height || id:ukb-b-10787 (ukb-b-10787)
d_mr<-mr(d)
## Analysing 'ukb-b-1209' on 'ukb-b-10787'
d_mr
##   id.exposure  id.outcome                           outcome
## 1  ukb-b-1209 ukb-b-10787 Standing height || id:ukb-b-10787
## 2  ukb-b-1209 ukb-b-10787 Standing height || id:ukb-b-10787
## 3  ukb-b-1209 ukb-b-10787 Standing height || id:ukb-b-10787
## 4  ukb-b-1209 ukb-b-10787 Standing height || id:ukb-b-10787
## 5  ukb-b-1209 ukb-b-10787 Standing height || id:ukb-b-10787
##                                 exposure                    method nsnp
## 1 Number of live births || id:ukb-b-1209                  MR Egger   11
## 2 Number of live births || id:ukb-b-1209           Weighted median   11
## 3 Number of live births || id:ukb-b-1209 Inverse variance weighted   11
## 4 Number of live births || id:ukb-b-1209               Simple mode   11
## 5 Number of live births || id:ukb-b-1209             Weighted mode   11
##             b         se       pval
## 1 -1.39413170 0.71236130 0.08203146
## 2 -0.03944005 0.04101988 0.33630779
## 3 -0.06640983 0.09587033 0.48849492
## 4 -0.28575794 0.15354985 0.09236161
## 5  0.09997563 0.08443615 0.26377808
mr_scatter_plot(d_mr,d)
## $`ukb-b-1209.ukb-b-10787`

## 
## attr(,"split_type")
## [1] "data.frame"
## attr(,"split_labels")
##   id.exposure  id.outcome
## 1  ukb-b-1209 ukb-b-10787

Height is highly negatively associated with number of children.

Is it explained by BMI?

BMI is weight/height^2, so as high BMI -> more children, you’d expect either: * higher weight to associate with more children (no evidence), or * higher height to associate with less children (evidence above) Which is most important, BMI or height?

d <- mv_extract_exposures(c("ukb-b-19953", "ukb-b-10787"))
## Please look at vignettes for options on running this locally if you need to run many instances of this command.
## Clumping 1, 1226 variants, using EUR population reference
## Removing 486 of 1226 variants due to LD with other variants or absence from LD reference panel
## Extracting data for 740 SNP(s) from 2 GWAS(s)
## Warning in .fun(piece, ...): Duplicated SNPs present in exposure data for phenotype 'Body mass index (BMI) || id:ukb-b-19953. Just keeping the first instance:
## rs11252860
## rs34773647
## Harmonising Body mass index (BMI) || id:ukb-b-19953 (ukb-b-19953) and Standing height || id:ukb-b-10787 (ukb-b-10787)
## Removing the following SNPs for incompatible alleles:
## rs11252860, rs34773647
## Removing the following SNPs for being palindromic with intermediate allele frequencies:
## rs11664336, rs12507026, rs12572775, rs13102005, rs1467847, rs2396625, rs3771382, rs3790086, rs3812163, rs418280, rs4302014, rs5759006, rs6464921, rs7652177, rs832806, rs9352895, rs9976812
o <- extract_outcome_data(d$SNP, "ukb-b-1209")
## Extracting data for 738 SNP(s) from 1 GWAS(s)
d <- mv_harmonise_data(d, o)
## Harmonising Body mass index (BMI) || id:ukb-b-19953 (ukb-b-19953) and Number of live births || id:ukb-b-1209 (ukb-b-1209)
## Removing the following SNPs for being palindromic with intermediate allele frequencies:
## rs11664336, rs12507026, rs12572775, rs13102005, rs1467847, rs2396625, rs3771382, rs3790086, rs3812163, rs418280, rs4302014, rs5759006, rs6464921, rs7652177, rs832806, rs9352895, rs9976812
mv_multiple(d)
## $result
##   id.exposure                                exposure id.outcome
## 1 ukb-b-10787       Standing height || id:ukb-b-10787 ukb-b-1209
## 2 ukb-b-19953 Body mass index (BMI) || id:ukb-b-19953 ukb-b-1209
##                                  outcome nsnp            b         se
## 1 Number of live births || id:ukb-b-1209  650 -0.040102960 0.01065365
## 2 Number of live births || id:ukb-b-1209  103  0.009416381 0.01948035
##           pval
## 1 0.0001670531
## 2 0.6288270939

Affect of BMI attenuates when height is added to the model.