cran / MendelianRandomization

:exclamation: This is a read-only mirror of the CRAN R package repository. MendelianRandomization — Mendelian Randomization Package
42 stars 26 forks source link

Isq #2

Open emyanuthomas opened 4 years ago

emyanuthomas commented 4 years ago

Hi, I was trying to calculate I.sq, but noticed that I.sq reported by mr_egger() function and that manually calculated by the following code shows different results. Q = sum((Bxse/Byse)^-2*(Bx/Byse-weighted.mean(Bx/Byse, w=(Bxse/Byse)^-2))^2) Isq = max(0, (Q-(length(Bx)-1))/Q).

For eg. mr_egger(mr_input(bx = ldlc, bxse = ldlcse, by = chdlodds, byse = chdloddsse)) reports Isq = 91.9% while the following code report Isq= 0.9647499 Bx=ldlc Bxse = ldlcse By = chdlodds Byse = chdloddsse Q = sum((Bxse/Byse)^-2*(Bx/Byse-weighted.mean(Bx/Byse, w=(Bxse/Byse)^-2))^2) Isq = max(0, (Q-(length(Bx)-1))/Q)

Can you help me understand why this difference?

gaborcsardi commented 4 years ago

This is a read only mirror of CRAN, please see the DESCRIPTION file for the package authors.

sb452 commented 1 year ago

It is because some of your bx are positive and others are negative. If you replace with:

Bx=abs(ldlc) By = chdlodds*sign(ldlc)

then you should get Isq = 91.9%.