Hi Xia,<br><br>just gave your procedure a try -- and time-wise it works _incredibly_ fast (code attached FYI)! So, this sounds like a good way to go to speed up &#39;polygenic&#39; -- I thinking of writing a wrapper (say, &#39;polygenic_hglm&#39;) which will require(hglm), prepare the data, call hglm and the format the output to make a valid &#39;polygenic&#39; object.<br>
<br>Few things I could not see answer right away -- can you please help? -- it will save me quite some time!<br><br>1) do I understand correctly that fixed effects estimates are in hglm(...)$fixef<br>2) do I understand correctly that &#39;breeding values&#39; are in hglm(...)$ranef<br>
3) do I understand correctly that environmental residuals are in hglm(...)$resid<br>4) how can I get hold on the estimates of polygenic and environmental (residual) variances, and find out what was heritability estimate<br>
5) is there an easy way to get hold on inverse of variance-covariance matrix. I mean given parameters estimates, it is no problem to compute that, but just in case it is already hanging around would be stupid to do so<br>
<br>best, and many thanks for you efforts,<br>Yurii<br><br>[code]<br>library(GenABEL)<br>library(hglm)<br>data(ge03d2.clean)<br>df &lt;- ge03d2.clean[1:200,autosomal(ge03d2.clean)]<br>gkin &lt;- ibs(df,w=&quot;freq&quot;)<br>
<br>formula &lt;- as.formula(height ~ sex + age)<br>t0 &lt;- system.time(res0 &lt;- polygenic(formula,kin=gkin,df))<br><br>grel &lt;- gkin<br>grel[upper.tri(grel)] &lt;- t(grel)[upper.tri(grel)]<br>data &lt;- phdata(df)<br>
mf &lt;- model.frame(formula,data,na.action=na.omit,drop.unused.levels=TRUE)<br>y &lt;- model.response(mf)<br>desmat &lt;- model.matrix(formula,mf)<br>phids &lt;- rownames(data)[rownames(data) %in% rownames(mf)]<br>relmat &lt;- grel[phids,phids]*2.0<br>
s &lt;- svd(grel)<br>L &lt;- s$u %*% diag(sqrt(s$d))<br>t1 &lt;- system.time(res1 &lt;- hglm(y = y, X = desmat, Z = L, family = gaussian()))<br><br>[/code]<br><br><div class="gmail_quote">On Wed, Feb 16, 2011 at 2:11 PM, Xia Shen <span dir="ltr">&lt;<a href="mailto:xia.shen@lcb.uu.se">xia.shen@lcb.uu.se</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;">Hi Yurii,<div><br></div><div>Bad news and good news:</div>
<div><br></div><div>[BAD]</div><div>I cannot open the two links that you sent...</div><div><br></div><div>[GOOD]</div><div>One of my colleague happens to be playing with your &#39;polygenic&#39; function, and has got stuck by some binary trait because the numerical algorithm didn&#39;t converge. However, treating the trait as normal works. To fit the same mixed model, I tried my &#39;hglm&#39; package (published on the recent issue of The R Journal), it worked pretty well, and fitting binary, poisson, gamma, ... traits will all work.</div>
<div><br></div><div>The way to fit hglm using GenABEL results is straightforward:</div><div><br></div><div>1. create the IBS matrix G, has to be symmetric, just need to replicate the lower triangle of the IBS from GenABEL and overwrite the upper triangle</div>
<div>2. create L that satisfies LL&#39; = G by</div><div>   s &lt;- svd(G)</div><div>   L &lt;- s$u%*%diag(sqrt(s$d))</div><div>3. call hglm like</div><div>   hglm(y = phdata(...)$..., X = design matrix of fixed effects, Z = L, family = gaussian())</div>
<div>   where NA has to be removed before calling, gaussian() can be changed to binomial(link = &#39;logit&#39;), etc.</div><div><br>
The hglm function will return all the parameter estimates (fixed effects, variance components) and random effects predicts and residuals, etc. The algorithm is based on inter-connected GLMs (h-likelihood theory, the work by Lee &amp; Nelder in the last decade), efficient and stable, without establishing the likelihood and calling numeric algorithm like FGLS.</div>
<div><br></div><div>I think the residuals from the mixed model is the most interesting stuff that will be passed into the next GWAS in GenABEL.</div><div><br></div><div>Hopefully this can serve some help :)</div><div><br>
</div><div>Cheers</div><div><br></div><div>Xia</div></div><br></blockquote></div>