jomulder / BFpack

BFpack can be used for testing statistical hypotheses using the Bayes factor, a Bayesian criterion originally developed by sir Harold Jeffreys.
https://bfpack.info/
14 stars 4 forks source link

Bug ivm missing data in BF.lm #19

Closed cjvanlissa closed 4 years ago

cjvanlissa commented 4 years ago

Beste Joris, hier is nog een bug: Eén van de voorbeelden uit de paper runt niet. Dit gebeurt als er missing data in het object voor BF.lm zitten. Zie de nieuwe test die ik heb aangemaakt. Hij test nu expect_error; die error moet gefixt worden.

Dit is de debug output voor de foutmelding:

Hij crasht op regel 303 van BF.lm:

Error in solve.default(SumSq[g, , ]) : system is computationally singular: reciprocal condition number = 5.92605e-17

En verder deze warnings:

Warning messages: 1: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 2: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 3: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 4: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 5: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 6: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 7: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 8: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 9: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 10: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 11: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 12: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 13: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 14: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 15: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 16: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 17: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 18: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 19: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 20: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 21: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 22: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 23: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 24: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 25: In dt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN) : NaNs produced 26: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 27: In pt((0 - meanN[k, 1])/sqrt(ScaleN[k, k]), df = dfN, ... : NaNs produced 28: In qt(p = 0.975, df = dfN) : NaNs produced 29: In qt(p = 0.025, df = dfN) : NaNs produced 30: In qt(p = 0.975, df = dfN) : NaNs produced 31: In qt(p = 0.025, df = dfN) : NaNs produced 32: In qt(p = 0.975, df = dfN) : NaNs produced 33: In qt(p = 0.025, df = dfN) : NaNs produced 34: In qt(p = 0.975, df = dfN) : NaNs produced 35: In qt(p = 0.025, df = dfN) : NaNs produced 36: In qt(p = 0.975, df = dfN) : NaNs produced 37: In qt(p = 0.025, df = dfN) : NaNs produced 38: In qt(p = 0.975, df = dfN) : NaNs produced 39: In qt(p = 0.025, df = dfN) : NaNs produced 40: In qt(p = 0.975, df = dfN) : NaNs produced 41: In qt(p = 0.025, df = dfN) : NaNs produced 42: In qt(p = 0.975, df = dfN) : NaNs produced 43: In qt(p = 0.025, df = dfN) : NaNs produced 44: In qt(p = 0.975, df = dfN) : NaNs produced 45: In qt(p = 0.025, df = dfN) : NaNs produced

jomulder commented 4 years ago

Hi Caspar, het probleem is dat nu (ik weet niet hoe het kan) na listwise deletion van de data op basis van de 10 random missings er 5 compleet geobserveerde rijen overblijven ipv 6 zoals het geval was na de listwise deletion van de random missings in het paper. De minimal sample size voor het berekenen van een BF is 6 complete observaties voor dit model. Kortom de fout lijkt zich niet voor te doen als de geïmputeerde data mbv mice wordt gerunt, alleen de analyse na listwise deletion, met de logische reden dat er dan te weinig data over blijft. Kortom de enige vraag is hoe het kan dat de nu andere random missings zijn gegeneerd dan eerder. Dit lijkt dus geen bug in BFpack zou ik zeggen.

cjvanlissa commented 4 years ago

OK! Ik pas het testje aan door 6 missing data te genereren ipv 10. Doe jij dat ook in de paper?

jomulder commented 4 years ago

Zal ik!

On Tue, Oct 29, 2019 at 5:38 PM C. J. van Lissa notifications@github.com wrote:

OK! Ik pas het testje aan door 6 missing data te genereren ipv 10. Doe jij dat ook in de paper?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/jomulder/BFpack/pull/19?email_source=notifications&email_token=AFZBLCBMPNNA6GHRBQ6SRLDQRBRI5A5CNFSM4JF6JFPKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECRG3LI#issuecomment-547515821, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFZBLCEO63C3PG3IYAF6VQ3QRBRI5ANCNFSM4JF6JFPA .

jomulder commented 4 years ago

Btw het punt is dus niet dat we 6 ipv 10 missing willen genereren maar dat we in ieder geval 6 complete rijen overhouden na listwise deletion. Dit was het geval op basis van de 10 random missings in het paper maar nu om een of andere reden niet meer. Maar lijkt me dus goed als we 6 (en niet meer) complete rijen overhouden na listwise deletion op basis van 10 random missings. Enige wat anders zou moeten zijn lijkt dat we de seed naar (bijvoorbeeld) 13 veranderen geloof ik. Ciao, Joris

On 29 Oct 2019, at 17:38, C. J. van Lissa notifications@github.com wrote:

OK! Ik pas het testje aan door 6 missing data te genereren ipv 10. Doe jij dat ook in de paper?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

cjvanlissa commented 4 years ago

Ja, het gedrag van dit voorbeeld is wat onvoorspelbaar.. hij faalt op sommige systemen, en niet op andere systemen :(

Dr. Caspar J. van Lissa Assistant professor of developmental data science Utrecht University, dept. Methodology & Statistics Sjoerd Groenmangebouw C1.19, 3584CH Utrecht, the Netherlands. Secretariat: +31 30 253 4438

From: jomulder notifications@github.com Sent: Tuesday, October 29, 2019 9:05 PM To: jomulder/BFpack BFpack@noreply.github.com Cc: Lissa, C.J. van (Caspar) C.J.vanLissa@uu.nl; State change state_change@noreply.github.com Subject: Re: [jomulder/BFpack] Bug ivm missing data in BF.lm (#19)

Btw het punt is dus niet dat we 6 ipv 10 missing willen genereren maar dat we in ieder geval 6 complete rijen overhouden na listwise deletion. Dit was het geval op basis van de 10 random missings in het paper maar nu om een of andere reden niet meer. Maar lijkt me dus goed als we 6 (en niet meer) complete rijen overhouden na listwise deletion op basis van 10 random missings. Enige wat anders zou moeten zijn lijkt dat we de seed naar (bijvoorbeeld) 13 veranderen geloof ik. Ciao, Joris

On 29 Oct 2019, at 17:38, C. J. van Lissa notifications@github.com wrote:

OK! Ik pas het testje aan door 6 missing data te genereren ipv 10. Doe jij dat ook in de paper?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/jomulder/BFpack/pull/19?email_source=notifications&email_token=AC3DLA66HDMKSEEFGLEQTXDQRCJPRA5CNFSM4JF6JFPKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECR4YZY#issuecomment-547605607, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC3DLA6RDWKWWN2UGBOMLPLQRCJPRANCNFSM4JF6JFPA.

jomulder commented 4 years ago

Hoi Caspar, ok good to know. Ik stel voor dat ik de code in het paper gewoon iets aanpas zodat dit het gewoon doet. Die hele missing data analyse is toch niet echt een directe analyse in BFpack. Dus als mensen hun data met missende waarden willen analyseren met BFpack zoals voorgesteld in het paper mbv mice dan kan dat gewoon zoals wordt voorgesteld in het paper. Dus wat mij betreft hoeft er verder niks gedaan worden behalve dat de boel het gewoon doet zoals beschreven in het paper. Ciao, Joris

On Tue, Oct 29, 2019 at 9:15 PM C. J. van Lissa notifications@github.com wrote:

Ja, het gedrag van dit voorbeeld is wat onvoorspelbaar.. hij faalt op sommige systemen, en niet op andere systemen :(

Dr. Caspar J. van Lissa Assistant professor of developmental data science Utrecht University, dept. Methodology & Statistics Sjoerd Groenmangebouw C1.19, 3584CH Utrecht, the Netherlands. Secretariat: +31 30 253 4438

From: jomulder notifications@github.com Sent: Tuesday, October 29, 2019 9:05 PM To: jomulder/BFpack BFpack@noreply.github.com Cc: Lissa, C.J. van (Caspar) C.J.vanLissa@uu.nl; State change < state_change@noreply.github.com> Subject: Re: [jomulder/BFpack] Bug ivm missing data in BF.lm (#19)

Btw het punt is dus niet dat we 6 ipv 10 missing willen genereren maar dat we in ieder geval 6 complete rijen overhouden na listwise deletion. Dit was het geval op basis van de 10 random missings in het paper maar nu om een of andere reden niet meer. Maar lijkt me dus goed als we 6 (en niet meer) complete rijen overhouden na listwise deletion op basis van 10 random missings. Enige wat anders zou moeten zijn lijkt dat we de seed naar (bijvoorbeeld) 13 veranderen geloof ik. Ciao, Joris

On 29 Oct 2019, at 17:38, C. J. van Lissa notifications@github.com wrote:

OK! Ik pas het testje aan door 6 missing data te genereren ipv 10. Doe jij dat ook in de paper?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub< https://github.com/jomulder/BFpack/pull/19?email_source=notifications&email_token=AC3DLA66HDMKSEEFGLEQTXDQRCJPRA5CNFSM4JF6JFPKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECR4YZY#issuecomment-547605607>, or unsubscribe< https://github.com/notifications/unsubscribe-auth/AC3DLA6RDWKWWN2UGBOMLPLQRCJPRANCNFSM4JF6JFPA>.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/jomulder/BFpack/pull/19?email_source=notifications&email_token=AFZBLCCHR4D732MQUKVQSKDQRCKVFA5CNFSM4JF6JFPKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECR5WAQ#issuecomment-547609346, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFZBLCFSJP6X7WTOS63OAX3QRCKVFANCNFSM4JF6JFPA .