This is a test version of Biostars. For the public version, visit https://www.biostars.org.
How to find Standard Error (SE) values when not provided in GWAS summary stats?

Hi everyone!

I'm trying to do a fixed effect meta-analysis on a couple of GWASes based on p-values, Standard error and effect estimates (Beta) using METAL genetics software. For one of my GWAS studies SE is not reported explicitly in the summary stats, I have Q-test value and I^2 value for heterogeneity in addition to Beta and p value. I was wondering how I could find SE from Q-value. I do not know the sample size or the degrees of freedom.

Another on of my studies mentions T-score in addition to number of samples, p-values and beta. How can I estimate SE based on Tscore? I read somewhere that SE can be estimated using T-scores and beta by the following formula: SE=abs(beta/sqrt(t-score)) But wasn't able to confirm the validity of such formula since T-score can also be negative and can't take square root of that. How could one apply that formula?

Any advice would help!

Thanks!

meta-analysis gwas metal plink standard error

2 answers

If you have beta, then I think you can backward engineer the SE as Z-score = Beta / SE and there is a 1-1 mapping from Z-score to p-value.

As pointed out by Martin, we can take into account of the tail of the statistics:

In R, it'd be something like

# 1 for one tailed and 2 for two tailed
tail <- 2
se <- abs(beta/ qnorm(p/tail))

Thank you very much! Could you please explain what you mean by taking care of the lower.tail ?

qnorm return a z-score, depending on the tail, the z-score will either be positive or negative. But in this case, I don't think that should be too much of a problem (because SE is not signed)

this solution is completely wrong unfortunately. I posted the correct formula.

Sam's answer is incorrect, as you need the coef's sign, and only half of the p-value... The correct answer is:

z = sign(beta) * abs( qnorm(p/2) )
se = beta/z

You shouldn't need the sign when computing the SE (because standard error is unsigned). However, depending on whether your p-value is a one tailed or two tailed test, you can do the division by 2. So the more compact solution will be

# 1 for one tailed and 2 for two tailed
tail <- 2
se <- abs(beta/ qnorm(p/tail))

Nice try for a save haha, but the OP's question was about GWAS, where the p is 2 tailed :P

Your original formulation of the z-score was definitely incorrect though, where you claimed that

z = qnorm(p), 
  • as z scores definitely have a sign. Thus, for completeness sake, in your current answer where you say that 'there is a 1-1 mapping from Z-score to p-value', this isn't quite right still, as you need the beta's sign!

z scores does have a sign. But as OP asked for SE, which equals to abs(beta/z), it doesn't matter what the sign of the z score are.

This solution is incorrect, as you do not need the coef's sign. The standard error is unsigned. This solution can give negative values for the standard error, which should be reported positive by definition.

Log in to answer this question.