
My phenotype is not normally distributed. I tried several transformations but none of them seems to improve the normality. 
I am now interested in an inverse normal transformation using R. 

Is something like the following correct, x being my phenotype?

    qx <- qnorm((rank(x)-0.5)/sum(x))

It is based on this paper:
> Yang, Jian, et al. "FTO genotype is associated with phenotypic
> variability of body mass index." Nature 490.7419 (2012): 267.


Histogram before transformation available here: https://imgur.com/a/BwednJB

More information about the raw data:

 - min: 10
 - max: 750
 - median: 54.75
 - mean: 86.18217
 - variance: 8428.881
 - standard deviation: 91.80894

Okay, yes, here is the page:

<a href="https://ibb.co/btWFyn"><img src="https://preview.ibb.co/mvNNdn/Screen_Shot_2018_05_03_at_16_52_01.png" alt="Screen_Shot_2018_05_03_at_16_52_01" border="0"></a>

Note that they are not transforming the original variable. What they do is the following (for height and weight):

 1. build a linear regression model `lm(height ~ age + age^2)`
 2. extract residuals from model with `residuals()`
 3. transform residuals by inverse norm function `y <‐ qnorm((rank(x,
    na.last="keep") ‐ 0.5) / sum(!is.na(x))`

The transformed residuals (squared) are then used in your association test, as follows:

    glm(y^2 ~ SNP)

Does that help?

Kevin
