From 867cb215bc2363bc5853ab9e6a415937c7345704 Mon Sep 17 00:00:00 2001 From: Imad Ali Date: Fri, 28 Oct 2016 02:58:17 -0400 Subject: [PATCH] debug beta_rng issue with print/while --- .DS_Store | Bin 14340 -> 0 bytes .gitignore | 1 - R/stan_betareg.fit.R | 2 +- exec/continuous.stan | 18 +++++++++++++++--- inst/.DS_Store | Bin 8196 -> 8196 bytes 5 files changed, 16 insertions(+), 5 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index a565bfa992e65e9460207e8a63901f371f1a4340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14340 zcmeHNYitx%6h5a9*lkBTEg-N+x=?L-6zQ85qb#L>2!z@eS_CP(J0nb(&eWZ03s$uH zN6~9C~;xoQtjER5LMB^*Qcik05TL@OECJ-?0fb3Twv`m`&P$IqdB3n_V&1`_jDOnr(771>hT^uYOBk1 zy;ZwTC0&6PPnf#iY+4#S&87}p-DR`3Ax#}uS!Tjs&QI1U%RQFbqSCpvUbTtNXmx0G zNj6Z%;HQ%cLCjEqu}ZMKukVHFm_!t}fNEt*r|6UK_RS_1&tWDx2Bi@`Orz zrOl$@8}w*Q)!TMzhSJ{aJX4zy?NYa}j_XWCyGB!$6VqpeW?nE$D&9cd)Lk3;G{xSr zDQd-4L(z=w?Y)|%#dKAkScv7p0Pj6}PI0juklzhBhoxn7m?gg?4i}UcOLDdx4Fq}T zib|MB@#C)AzDL_f2luN2O z5`rZW_E*og0L+3aXo9t{4HD1~```c^h8N)o9EJDb1Na7hfS=(H_!}o+K2FEkScVI6 zF)qbr*n}%^C9cOSu@&2J18&7_7{fR!*o7uuiwU&wdb|M#@Fu(&Z^wOj2i}Qy;k|et zK7bG6L--^f#;5TaJc38@WqbvX;c+~HA3C>|#k`VjYaHS3@yoocTgky%?Wo;jHAWMg z`H`lmF;Q=h+B@8On`!FFdNj6?+_6)hvfMQ6sAi}M&(JOH^d`-|MzhCItSzn1`P$iQ z?UbhqPi~GH>PGfvHC?lJla=Y$DNpb3udJ&q4_8&!?&^yKxa6hxH1Za zg8b?4qtrm>wg>?6x}5CJTt?9il?WH)T5w1g6* z!L($UE^d;-&VtYq>$6-=;7>O_`P73c^78ZY<-)O++09^?U0p+YxVpZ2Ftw|$%beQ1 z$x=7=xZ>{#(o?&4SR=G}tw)EhrT9>28BroP%IGTzwKBjkLSIi!nsxz)UGn z2XY)aG0lQumfHUe^F@)H!y!e3OBH*B83~MsZHSq8kVGR1D7pL zVIA^I9d^Kdt0VSK#twV}-@^CsBm4q?orE1|A%1}Q<2H;EKd_Ut1Ks48*Ku~>M&bwd za&}-p@dF1qJ8(bo1BZrT2flFbJn5xF*a62&)8be*SQNqH<2MQ|t|fw@x}oAcJ2+LJu9Y1T{UG@YJ+0lnXY&CyVx$_pg_!P5SAn>LB!jMu5wpF}5?(6Tto$ zKQM|2@|v3Z@^EEU-C+DWD}p?OY0^yXdY3OxZGkD&B?lCm`?DcBZe6UZvW{G=rgqT9 zh6C!SIR_&Q;>G7lE2ViG)2qaln7;J@7!8s%NV@g7m4;YPOm~f2>y6X-zfsQHlSz7p z1m4fv)AM$hHj0SZjO48S_@j-IQ`bIus+;ht^Zpw{QCd@MM!J@}cqRR^Y^`0G$~G!& zWBmpk$%oKREXU&&wiK_PN^+z22s 2) target += normal_lpdf(y | exp(eta), dispersion); else target += normal_lpdf(y | divide_real_by_vector(1, eta), dispersion); @@ -446,6 +446,7 @@ generated quantities { } { + real yrep; // for the beta_rng underflow issue #include "make_eta.stan" // defines eta if (t > 0) eta = eta + csr_matrix_times_vector(N, q, w, v, u, b); if (has_intercept == 1) { @@ -502,8 +503,19 @@ generated quantities { else if (family == 4 && link_phi > 0) { eta = linkinv_beta(eta, link); eta_z = linkinv_beta_z(eta_z, link_phi); - for (n in 1:N) - mean_PPD = mean_PPD + beta_rng(eta[n] * eta_z[n], (1 - eta[n]) * eta_z[n]); + for (n in 1:N) { + if (link_phi == 3) { // workaround beta_rng underflow issue + yrep = beta_rng(eta[n] * eta_z[n], (1 - eta[n]) * eta_z[n]); + while (is_nan(yrep) == 1) { + print("warning: beta_rng() generated a value that is NaN."); + yrep = beta_rng(eta[n] * eta_z[n], (1 - eta[n]) * eta_z[n]); + } + mean_PPD = mean_PPD + yrep; + } + else { + mean_PPD = mean_PPD + beta_rng(eta[n] * eta_z[n], (1 - eta[n]) * eta_z[n]); + } + } } mean_PPD = mean_PPD / N; } diff --git a/inst/.DS_Store b/inst/.DS_Store index e03e5b7f982f65463a3b04d9dc81406674c0e071..7b4e7792b4542c8d2019fb4dfe01700c0c528b56 100644 GIT binary patch delta 14 VcmZp1XmQvOB*@6PIaqKb9{?mf1atrZ delta 14 VcmZp1XmQvOB*@6HIaqKb9{?mZ1aklY