From 9ddbc432d84f42f2a3a7fdd76cbb4fa8d0c33510 Mon Sep 17 00:00:00 2001 From: komalnpn Date: Mon, 27 Jul 2026 21:10:47 +0545 Subject: [PATCH 1/4] changed examples 1,2,4,5 and 6, added the labor research part in examples 5,6 and 7 --- .Rbuildignore | 4 + .gitignore | 6 + vignettes/examples-figures/monet-kappa-1.png | Bin 0 -> 108808 bytes vignettes/examples-figures/ppc-lim-1.png | Bin 0 -> 15749 bytes .../examples-figures/unnamed-chunk-12-1.png | Bin 1917 -> 15749 bytes .../examples-figures/unnamed-chunk-19-1.png | Bin 9141 -> 0 bytes .../examples-figures/unnamed-chunk-33-1.png | Bin 9566 -> 98786 bytes .../examples-figures/unnamed-chunk-41-1.png | Bin 9708 -> 0 bytes .../examples-figures/weight-dissim-1.png | Bin 0 -> 34577 bytes vignettes/examples.Rmd | 136 ++++---- vignettes/examples.Rmd.orig | 33 +- vignettes/fit_models.R | 314 ++++++++++++++---- 12 files changed, 360 insertions(+), 133 deletions(-) create mode 100644 vignettes/examples-figures/monet-kappa-1.png create mode 100644 vignettes/examples-figures/ppc-lim-1.png delete mode 100644 vignettes/examples-figures/unnamed-chunk-19-1.png delete mode 100644 vignettes/examples-figures/unnamed-chunk-41-1.png create mode 100644 vignettes/examples-figures/weight-dissim-1.png diff --git a/.Rbuildignore b/.Rbuildignore index 9bff1d1..e617e8d 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -20,3 +20,7 @@ ^bml-brms-alignment-plan\.md$ ^micro_macro_framework_slides\.qmd$ ^data/.*\.feather$ +^vignettes/\.fits +^vignettes/examples\.html$ +^vignettes/\.fits +^vignettes/examples\.html$ diff --git a/.gitignore b/.gitignore index 39cdd5e..1adf676 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,9 @@ inst/doc /.quarto/ /backup/ data/*.feather +vignettes/.fits/ +vignettes/examples.html +.Renviron +vignettes/.fits/ +vignettes/examples.html +.Renviron diff --git a/vignettes/examples-figures/monet-kappa-1.png b/vignettes/examples-figures/monet-kappa-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4feac630461575131123bd2c625c8f1796364547 GIT binary patch literal 108808 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 LDNBAAH}?O35<#xB literal 0 HcmV?d00001 diff --git a/vignettes/examples-figures/unnamed-chunk-12-1.png b/vignettes/examples-figures/unnamed-chunk-12-1.png index 3875260247f8021a8b0be1416fab230cebf59a3e..e437fcde9903564bcb8b488d4af0b47ed2f93b15 100644 GIT binary patch literal 15749 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 LDNBAAH}?O35<#xB literal 1917 zcmbVN2~ZPP7+%yw4r8cRiZqfsf+!ors$no5*dj`#(PG(yJ}fItL7)B>?WAk!isfFNoF#St|we#H}W z#A2~RtiWXgj!cWA5P%{GiV_7yr-&$uPAJyZhS82RenAqYw)eghne<;JB)z zTaAEf1X2_8;<#2O(Be2T3$763Y6MrK1VoH+oZwE`3FDia3uY3#u{!9>{|o?Z=1jd7 z4>Ttx0Dv6G-uPa?ku0OeCMJaoAlf2TM}E{t(cSuG2TZLJPnQFg>SE&vjz_GboVvWh z*W0qQdw5;)nEiIFi$b&X-+bkggK?Y+XFA(6)idFCqN|GV99Id2N$isAWz|7v}W;Pucnl1(6E1D2i!XZ_v7>jnRZRatHgG1g)?Q{mMA zBmc+#g;>3=X&0+zSTvZ&)Y$M>E1L$;9!>MPInu(Rf-X z`$ba$A&`SuRkYWv*-^u$1g+fklX>~twvZ}1d77V8MbGY}W}fJsj7;u~VVR%z$sZWs zCEN^}i8aPVPR6p#BO_0q4emO674{aakK<6AyYiaMh6~Yj>034)-`Wk=t+;Y~>%Q9+ z36u(@8S9$q(v^IDop4pqttE4XZ5(Q#qpk4A5J!4Z?5QokMgDJb(TYf}i+@X<-&5nS z1aK85k-(?^`>_{Y+x}HpT%6l{E02j8JryC;OK`TGG1ijQvr1lG8i_4Pz66IzDc`{D ze>zcJk3Se5VnBVSwSZG*i8um^KWZ*aJ)J33chDOew?ITI#Xs??2qe$(?@ zZr@Wcmp6rltm%FwS=?g1kN;4!6aS|$UQ?~)OO0#$!)xZ^-VCOdPACXv=bAscYZO-iZ0wcf~ue4pbhwF)erpS)C<&;;@`2dFIl07!+Da({h-n-%Y33G43VrW7g3cYjay> z7M{$^x!&Pf((kZ@cgU@!`c^rtlr!(743f(2tL)&>hL+ExZY<4VhPB_1b}!pxTn`;Vs_c3H^ZJ$C+(FU&SF1C3)IWbm;rH#D6>Vgyw; zJ^t9q2D=m7&{BGK;tV;$V;1(v=U}5fcQX6hQ+Yd*uZ-X{RArg0iq?KwnCH2==7H)& zz}e7%!PA>GKJUk1O5r2@$ePPT0C%$Sa)p1E+Qb&rI)qv`hF?~uCb9$_i+G2;S7hw` z2y%1gD+m(xNWDY6D7Ax=0w%un&((bw? z4%}BYP<;j?gIcz8UvO_suR`0Jw(7X|J9pQ_Ip2GlPfPO>zTuNL;NL7sODxoes3?<< zM0@(u&wDzW=HoxeOV;=EE5EP2$dE=Q<=5ovpE-SrMx*_?8SI03ne&?2I@YTJ3^&uUG-Ot@J#Ac_N$9?F*qc0Njw&AAT-flfKgTa4nJUOJa3{8r3 z9K4!t*xUD%Pk;Mkeis~>lOJAV2y@4u@1<6am|E%sj|;!un;l>C+{$3!dnG7d8ut6H zv5%tG%cOasi|dnKxZg7VY}>iQL~CtkZyqvN8@m}ObkVtFX?vQN)v?*vHGkfxsb#g| XP=TpBT20$C^&4gTY~5J$J}mkbx2lQ3 diff --git a/vignettes/examples-figures/unnamed-chunk-19-1.png b/vignettes/examples-figures/unnamed-chunk-19-1.png deleted file mode 100644 index fb871f870b3d3edb3bea9e3112dd6c9190ba0d72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9141 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 diff --git a/vignettes/examples-figures/unnamed-chunk-41-1.png b/vignettes/examples-figures/unnamed-chunk-41-1.png deleted file mode 100644 index 22df8e04d7700e3ba5b430d4f81bf5b0fe829ce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9708 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 Yp>>T~Fp9v=-&0#=##UD<4c#9950T=$DF6Tf diff --git a/vignettes/examples-figures/weight-dissim-1.png b/vignettes/examples-figures/weight-dissim-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4101ecc63cdcb0ea622c227b14d86580030eecd8 GIT binary patch literal 34577 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�Z5etuFy|7|ryv@Tnd$Zh}P z&%N7gbYscV_0O3oj1sDR-TdJKv3K*IOvm6#b$P7VyZ7S*O8u7>0$|a0LSPrSu$&Z_ zt)3poy)*Ioc41JT+Yb@?m2Z_xru@bTUaeKQY3Hn@YIN+xG%Ag>H7-_~Yn`UP9afpn z7qH^870#xKs8YYq8tNqG-K3FgPTik3(dSpJCz(j$#NB0Zk>i7HoLMXGhHj1&oh2J| zo^4VFz_xzS5?DT!v)?}~)_^V#xB;FWvw zDt^wUdGXm2;&wqIy!-NowbW&PUxCzgPSY{SX%D;}l zcR%?)fMi#h)FZm_Btk4N#PkJ}{ff-H?=EEgd6wPsrr>6&t!&~_O@sN5#t1kut(QIxVz$d&tqvlxp&W zlxwP`AEs1LjhVM-_V8wP|L@{2c>XHdX+TLxj1bXY=aUcbzNjl)2XT#p6=sg6TtK4{ zoxL+2tpMZF{)eJeCL1S!RJjXWplDc8YF8*9TeSLOq{XJHg%uo>yh^a@wJ|J+ACBE_ z>1eO4m>W?W3$3d1-Mi%n*Aijl%Q06*m-T#7vxX&ib?fD z_e=g!K*IRh@_rMhM6_chJsL5ci!nm;Q7x6-&F<;IwLibd^p7;mD0af0%u0GBw`~QB zgT?L5k+f#D0kccJv!pC*e?2SD%S)o;YMbPg^k=q$^OviXoAP5qnFe~Tj5GHVjUPuT z=!cQ+I&!eHS0mt@+d5SG12St%F|e`&`8r;8a*00mwx|Z50v6|{8^Vd&_!0` ztN6}mQt>44k>hbd)GWq+djJIFzy}iSAIIMx`S#^s|K%(?wil4$Oot}zJwo3>ft*Dj zECh-a@Dp7Gz_78`JpVF-?Mf&g17Q~h@Ug!>hwD)x-tF^OUzJrpIJnJG} zz~1#l;AbNBTX3I2$C7aR$xVtU`Jgb5SU98-CTnlk=YHZwZPRfvmsK~NZd(hUOyb0uOCAW6NR^@B9JO%?s;3td1`-pYSimHYP6mN{7ppSvF(^)c2h$9 z%1QZTcqXBXj9Gnkh9}o?q2IzUUMh^G_FiPvk1Iu$A*DCg1`&I#nB_*xuh&LA{dC8@ zQ0gW6DSvm#{Pn=+6dRh2;pLMfOFvI+ZU>6})=f-G*m%^cF#kt6c`?7~mw$QIjMpfD z63M;Z$FIN-54l5k6Cikz!9nHJ+z1lD{;R0l?U!CD?w!rmPl9>`w@B2K(~T#~TAWJ; zZ(Dmei&1!{hKQdj)+aqN0ONBM#u+d(^Ou_RyZ?TTC)mb`NKfbwzNcc6VG&1tNx#_| z8=GzHiE4CbMn@CRXgW6qe)W9W%}`rG-fYxbtO)&+)6&%e>*0ku?lfV#o1@z(@%2<~ zRoYbirQy`vQ2lLMX-UAczt*NWSfqtMQ|eD}=7WUuFwq8l3*-mGtrkDiA?4cwUo zx?GH3b#%$o!pnb{CbLoUT>>w`1hOq-uA8m~W8`UiTil$5Tr_vW2Lr30Rh~3vBq&jn z+mF*6X39GC$h`e->zn>)OO9>oE$pT$kIPZVGd(ztKHy`6yFD8vC_!p278{$K(`~gq zm$Ol+{tICGYi6YsIrN}21AdA0j#J~YVb1XQ@K>!)FFLVb5)QJd(PT^;dTsv10T)KX zB%-%JhpzZur}=hS@nd{Xk1iIGChVAyU%@lL#mmKdq#g+P>QxI{=FbsRNSJCpgRws* z@9-lM=sjjG@94H98c?HciYqLH_~tV;sErkrW}u*+w5Mg>qza*O!e(yrYL4UdRkwesp=0Y z&3YBtJRKcl|2=~CiSgr154!jL@w{{Hn7cJ6jU~$@YV)&Ni-gzA2xYYz94T(?RYf*; z`&1>6aW15+1?DG)X-p^>&tN7d*hUd;_dlacUuI&e3hGo|O`?+^kad}qgceg-PuonA$N*`oT|e+ZNI8T<3}8%2G5z`O%BFhgael zHW;NbQ!CE+`|J}?2TTbWx2x`D`GlO$2!NO)?69lL>ozgPk#!%3RIiXqsc>X)sclET z8H|N*i~daSXsQ5ES}>1+#xj%6y@K*~JA3KT1Xuis@mK=6p>)2MMwI9s$jGxBFn&~H zyw4{qfovcug*e}_n3Db$aS#8$T?!&I$i}K-!i{p8d+Su+5!3CbGTjz?*{tmcyz=&j zW(-@{tX;VAMg)lkmlqEDM=+ib`J`q_y(FUX8NR_Wh!J-6sG6Y`z}hV}(tMdyTxDjz zEOzYcayJbqBn(UXBQak7XKyyKOeX4ENv6iDt&@8h>I5`u2^^1F`p%$n(ntaj42qiD~maJby5@DO?zv5UZvi!}Ey zx8f+`hq+yT5D?Fs3cBe?Y8;~SUO~T(N6$w(`&cKbjW#qGh{C7v0KWC!!A9E&?P3UPs`fw1yxUs1B96*aT&rQ#&ZS`(=6qV;H%xn%g1yuL*!+GmXRVI<*PT|V7>E_QP-w(TLL~W0gYAzZMS9#oEUKRtLNd;P5gV3N&}qL zQff(S?2VC=;(Z+b)pEHkuj;IF+c#agwhlQHnc`0b%oO>nCNdH=B^>ROX)5{hvu%#d zv{TFVUXrOD&p$Y%!aMa!Z7s&2s{J(W`YNaR{x${5#;+4^XgGL^9`Zsjd9gmVe;?C- zVsy}2RRU{_5ir7v9_EhYF;b3qk$%!gfj)Snun6}P#1NCh8uz2(aJwbO8Ix=C+EBO! zMUSVqMia0K6T8lYPyTjpQ{;$GbEVnQ!!10@WLtiTLZ%`=3N5iMbLBD$Rtq5G(Dy%a z{_t!!@#KdUgU?Fi`f>39*M2+QbFXOCTO>vyQK{%n$NjW!5hKs)P43_})$-5aYuy7= zEQ$^*4rZ)SIEr30ySqn6E+iq%jK}Xg%i*p3(rHrJui{~e<&q8S&th&~PEONL3l^8V z5`VvH)U)xZg7jEF&MRQ^IXk9m#%PTvT0m?hNKUnCm$)`*7pg9oOc>uj9`qoJwa8>8 zvz5COi$jcgK|LvGrsM9X*!#W9Va`j@f)VTR1(iE2vw+MHz&CK&bJ6B%{4wtp2x&Rb ztZ0bYuY(6k*~^$T$=+QR;kT8Ho-3{Hb9YIKD#CA+D8iI_&ld}-7sSA0^tIECXF%^( zlM5(|-Z+0KSUQPeo>nfv;)jvGMANwuC+75bsuPxR*>o}@|IQ+O=C z%+{hS_6j9aNJIr|k`R!{46>be{pB6=f#ie!t?qlyJ}~g z+V14pe9`)u88K3~$->FaO*{d+*~v;ni#(R7xgS&Y+B%9iA+!8Vx5HXXqrKftXC={E zeRMF#BU>qiH%y_~DP~roHB^tu`l*~=j%&^%@50$FxFHL zORK;gk7J*mNtGX0f=nXtoerb$QVi#*-v{dN?}`?CgS8=aBdb+Dudoua za33kSP5Jt% zgm^|>fT!(jgC#9`lb59|=bn>I3EJ|LdLuEFz{57`xD)YgTBUdxp`NI9udFJ7{Jao&_ymT5z@kJiZn5~*w zLtA^-GLNG3uJgAnmLHC(j7{C;@Y*t2{yTm7hqL&*%oM7UvC8Mu6pvP#x1F=07b4b+ z(G)UkseN~?-0Hh7bPvCUbaDe_!8X&vd-QO{6oET6J zm~|aayhIasK|aUQ0x$cc-(vbK74Uo{CWUvZR5gHCrVw5CLZq;4DyXv3SWEB;O@rbRV z<_OJ_`DP{K${DuF!f~aQc$ygw*OvvBViFei7*h80x{8qPm-RS`B^}Sqi>>!H%JA}f zRijis_lh^d_pMT8!!Kj$VN9Low~Z?I4l)QYTFdepqJWCZsmytZC#-}f32r;w_w4E*ugaijVi zk~-yJ>(zpz_alefv-g)Xhg*%dx4-jY@1*StD=wlSHw5S6<_E|aWg4581)9x6VFg^( zwy07R!?*XlF{r*0nuu*tJT=%)=(%>*{EU4lng-_xhGA8ha=8?~YL&gdp(a%#(kJLA z+Erortch5;Y8aMfaR=2!la>6?pH>?7??*jqfc8C~W%Re$=sdQMq%F(5X1R~Qd#szA zd9UmbIHl?GIdn2fu6)?XG|Rk|Wq+{ok|bX*q#Ea*tUnxYIp)?CnOo7C+m7UlEbAJy z`5>D0p(DLe^8lB<#`Jx7^cIHz^<4Dn{^vk+*Xnw*Yys@yEpM~FUKb0xuE(lsJUQPI zXfr18uea-71cdkHimt;s{d=ZuZ|lfoPUPPomnan(&o0)C_a4}EmwaPfQQGrs(lGb0 zF}nRI9sGYf&Mp+iIh+5$JP66AfhFS9Z*xIvv&7bKABw*#Pdz!^aEJ~Fe=PS2W&I+U zC2y|aBY>hbqqGJvqmwpY%!s2uYrtus_(>s;geN;p6th_5^A5c<1B~FtM$ga- zGUuV_Hc`io;*^}v0Geu|ucG&hh3OM_rLt>GehbMJ58{Tg?JO_)rpJ}* z@wXe%Kkp|OeBSN9ay!muo?fb+S1KY7v+S}~5d4zVda{xhDnvi%xuiq%qXJ?jXpeP%gaqFUY4>29?A>Xv9Q3fAdA7m z(b}z)5|TsKl8Zsx>sgDRB5fDFr4Ruso>H5NNc)?(Izh2_1 zfEP|qIOz(GAu>mAA@>cOh#bYZgQ;)LED`S`*Ie01W)9>Pydig!`2oM%iV}Sbs(Vo{ zbl}1#(!HdSO0#E&CrRo<)gog6j8z~>-NQ==oB_GC;O2! z6=^<0l%;>np>kKJ0b`)^xgB@_B_MwzTc<%K@jsFizFx>V!N>!gvUn*7P%GM z@+FI+zk%lEcTFI*I#At3N#KVBvR6$rW;1yWi0K9)T^wlNwB+x$q$1(S))4RNIRL2v z0ctC^x_}Ak<7sdfyitzikL>ay46%<Bff^;v{AofWP<8@6Fv2!HQ-{{d!1}r6>G!pxZ+RZ%)F(LZn*DD<=KC zPh{~zk{)Loj9z1c<0G#VjfW6RmWd+Q$H&5tgBDGbt5vrdy;*CAYyx)mSB-BGS4mTq^!^_!6thrG)< zOlHTmpAnr`B*te?A0cSqW;0nJ#33i22T6D2ihDm*<^=?N8t9iXCPZnn7{dP#GWE!~Up>Pk;FtCc( zI1Z|31PIXe!r57IUA$(A(Ut@dNK+y!`aMKZx=v7uJAR+gm#lOkD5W-7q=@p>u;VCM zOmRqVPJPKu^lDXbz!rOBxTbB5+poTjo#8HjV2f#da#^vM$tOTjMIpY|3p{6O zSdbC^9|+A)GAdLEhy=*#yL)Rzg~wo}X-uRX@*sSS7z9hc%b8h5}MkFbp?Cq_rPH414SxGOU#G^ ziww8v@1L3QsZwA&{}N)-PgB86>epvu*!FnTTapOkTFtdmtV{Bq;s(o$f-1j)u@(h? zrHIa-@_@~P>}xx>}#a!*XN+W5T*-f;1{^4j^U(QN4|CH=!_KC)vY(?v093TCH zjeHztlklP;N0cl;F|c}=pZ^m`d53$f_z zd7|$aWJ0;bD(sh1*CLIud4Y2xe+jSS(9fs13tx!vy(CFlz@50Q6BB};1$28plG1$^ z2U?hYWKkN7ffL8Ad;mQMGHU&0MB^;G8YH>`DWoIcdDUzqDfgQO!V_g_`bKAU_h#A&4U*(H{Pg`FnKOH)qzd!=G|1*v%zv@@6m zmU@KQyTKG#FP4p5qEh%c9zJJ#cVlOY;nKZ=SWGbIhxjy1qTof)d)nD`_Wot;4fl5SS-lE z?--EE%*0HPAE*Gh9Vb`t@s_*eu7{|2rm82(T2|84Iyo_umHoB9_vO|7kT^;4hGx{)9&7|IR^}L=ReptQn*Je`ll*tK^AhpieytV#q~K5n3IA z5=@33{+?o@Q|t>$98Kq=2&rb%tAQsCOMApM3V^3rVm}ts)7HxYUCk>&&y}J3?hgO= z{C=}Tnh2akgsd|DJ6k}|^8q@%6X$m{UC94_x(&ntdHnxERZhJSau3kkqt`1s-ZZkX%`TOyPU8|mY0MOV+q=j}>e_Vf2z4xQ z^ZzEoK!_;m*miwn!Z`_4pemrXxytaJ=Y%KLBlCZM$Ei)#T^79%1HDFj?0_0zd6`vs8Nd@Ng+mfGlWv zntGh3*gcK2&1oK2{yZZ=)H2+4`Q0pDxU$E z!`Qx0Rd@gw{>Rx$Q}vfgU^#yq!1*(&+rwGAk0dkxxSds{|Hg=6FAU55u;F(G_=Ka4 za{;9!QUmbMHvvYO?g#=N4Uxnpb~R9$^0g7P3M*9@T+s^Rd~fn?YqFAh(X2q{P=$sV z1}35+(NMXzxv?7FojNhDk1?^)IKsc~&j5Xd0&xsgI&4rSg#F*KXhf_Bofr_!!~Wj^ zQX~lskfUl~FJGRnuos?;qK^NUtJDd-s{c$59pHr90CY>LLRVi$KJjWoRCx{@QeQkuVzcb!=GHMZt>mA8%9o+$f6+h*z)#`d zcv)&3?}Y1qfcf+5V~lx~=%hPNzq)CL@|6&p6KcyLYZ1y%Vy}qySY1WNJvz5@Ku|!t z>ULb-mic&yogcxz);Rxq5lA^Y)o8cft!baxK=+y&m2cDjSdiq+x7gx%R9u+o3=A`! z@kY?~ej!P`4uDrEa&K9DfldB27h0akImBEVF%fIxg;ovtk(&UPOqXj;%rU^gUOjC& zZ~p-l-8lh9p+xf9pPe)tfNiCL?vGn11PnNFEtSKepiHy>8j#UVSOdDof7DV3pbP&= zNuZ~WI(ZFl#UMnNvXoY}UM{>WQqK49>tpU}H?1mX(4-tY(V+l0oN$F;Pb zJD{Cz0q%B7Z2*Jg3|I+7W-n{)(&D9HLq$x53F`^83pRa6lA7paTd@^P0V3~w3|pce zBgD&AHKQx>)QT%W-#_}%xcRAH;&7w04UinF`q?+Ed$qJ&_Tjcv-10scYzkhwbG zty-eFGh1PhX4rm{Ny!r^MD|5`U>;|Ts!SwHEfTi`o)dGayE^PmeR+-m_Fw$tk>;Dg zcR*#4l(0xlP4TX<*bZ3d1QY-qQ&8S3;4yRpoIa(`N2L{c3jOgSSp(@D4m*#4Y2^q| zw4e~91p8gHTz>so%&l&fOyXE1W2C^*>dUAHwdmsJ1c6a^JJfn+AD-AkfA+QUO2qo&U4v(i?i+7-{eT0_If_0 zT%JW<2V^vayouLM4kx}23v{qFt1s~zShUAaj!n(w3P53O(qfRD_U~!o= zal~nd%NQnY=d~Q9`+b{kqN+aW>nIptv*Msplm`Jbg5v~N?cE1p>_p%0nLQff2*&w1 zPG~StUMXTT83ogo22gZ!@cAF_n6bdZDfA%tF%h+~WarFO+UBN;9}uAUw@w5yFjq$s z55rffqLq&1?mo7sO@yTb^P#KNd!ldnXpmKTa0Q|Rmw?yY2{?tcWJ=c8jhMPyc(Q*& zoJQb|t9F$cPPy^{9hG7;TbZP)mGZSvJBfCfg>OZ4nqqvzuONg2ZNL<0C-nKvCejCp|dvLsiv2rn%3^ zj3egLU{yoThYyej;zImN=f@m7!3BZXXx3jG44Q6Gc@aKDq`lR-tb3}Cg#UBCRvb*i zD?j@o&#Rl_PcGQPA|^;QRnuWo6sS!}^$2_4K=?Wl_*}3p==pKWj7rB5Pb{8TR7VYGM?>vcE7aE72x^36nNCsg-jYyP9(0fR&P?VM(;*C+SNb*yRBSl zIM2NnecpjhD1yr2ZsjL-A}gt=oouZv1B6%u`5RPV>ii1bDr^ah=JUbRI2nZ9ggvd+ z0|q*^BsMnobTihY*t)({a-1rXz&e!%>Gg}01}X$;P(t6|NLi4VD|IhjJO^4E7X5x#I+QV?@$<>6FK|A2?Za3kGQam&>sOk G-~R_w3bz^n literal 0 HcmV?d00001 diff --git a/vignettes/examples.Rmd b/vignettes/examples.Rmd index 0e6f1be..4a5e7d7 100644 --- a/vignettes/examples.Rmd +++ b/vignettes/examples.Rmd @@ -116,12 +116,12 @@ bmlCompare( |Term |Linear-in-means |Best friend only | |:-------------------|:---------------------|:---------------------| -|Intercept |2.556 (2.345, 2.770) |2.623 (2.448, 2.793) | +|Intercept |2.557 (2.346, 2.770) |2.622 (2.448, 2.791) | |Own smoking (W1) |0.365 (0.337, 0.390) |0.360 (0.334, 0.386) | |Gender |0.047 (-0.042, 0.133) |0.059 (-0.025, 0.144) | -|Peers' smoking (W1) |0.042 (0.001, 0.084) |0.026 (-0.000, 0.052) | +|Peers' smoking (W1) |0.042 (0.001, 0.083) |0.026 (-0.000, 0.052) | |N |4002 |4002 | -|DIC |17029 |18463 | +|DIC |16964 |18700 | Both models find a positive peer effect: students whose friends smoke more tend to smoke more themselves one year later, over and above their own Wave 1 smoking. The own-smoking coefficient (about 0.36 in both models) dominates, which is expected since past behaviour is the strongest predictor of future behaviour. @@ -149,9 +149,9 @@ loo::loo_compare(loo_lim, loo_bf) ``` -#> elpd_diff se_diff -#> model1 0.0 0.0 -#> model2 -37.1 9.8 +#> model elpd_diff se_diff p_worse diag_diff diag_elpd +#> model1 0.0 0.0 NA 8 k_psis > 0.7 +#> model2 -37.1 9.7 1.00 ``` The linear-in-means model comes out on top: the best-friend model loses about 37 points of expected log predictive density (standard error about 10), agreeing with the DIC ranking. @@ -167,7 +167,9 @@ pp_check(mod_lim) Posterior predictive check: replicated outcome densities overlaid on the observed smoking distribution -The replicated densities track the observed distribution's spread and skew; the discreteness of the smoking scale shows up as bumps the gaussian model smooths over, which is worth knowing but does not affect the aggregation comparison. +The replicated densities are far smoother than the observed distribution, which is dominated by a spike at the top of the smoking scale and carries mass at only a handful of values. +That gap is the gaussian likelihood meeting a discrete, heavily skewed outcome, and it is worth knowing. +It does not bear on the aggregation comparison, since all three models share the same response distribution and differ only in the weight function. [↑ Back to top](#top) @@ -261,6 +263,10 @@ mod_bml_w <- ``` +``` +#> Error in `gzfile()`: +#> ! cannot open the connection +``` The estimated weight-function parameters are: @@ -274,15 +280,10 @@ bmlCompare( ) ``` - - -|Term |Similarity weights | -|:------------------------|:-----------------------| -|Weight intercept (b0) |1.561 (-0.282, 2.787) | -|Crime dissimilarity (b1) |-1.758 (-2.588, -1.165) | -|Age dissimilarity (b2) |0.713 (0.074, 1.523) | -|N |506 | -|DIC |295 | +``` +#> Error: +#> ! object 'mod_bml_w' not found +``` The crime-dissimilarity coefficient is about −1.76 (CI [−2.59, −1.16]), clearly negative, so neighbours with similar crime levels carry more weight. The age-dissimilarity coefficient is about 0.71 (CI [0.07, 1.52]), pointing the other way: neighbours with different age profiles carry more weight. @@ -290,14 +291,35 @@ The model picks up two kinds of similarity at once, in opposite directions. ## Do the weights actually vary with similarity? -A direct check plots the estimated weight each neighbour received against the dissimilarity between that neighbour and its focal tract. -If crime homophily drives the weights, low-`d_CRIM` pairs should cluster toward high weights and high-`d_CRIM` pairs toward low weights. +A direct check plots the estimated weight each neighbour received against its +social dissimilarity from the focal tract. +If social homophily drives the weights, low-`d_LSTAT` pairs should sit toward +high weights and high-`d_LSTAT` pairs toward low weights. -Estimated neighbour weight plotted against covariate dissimilarity, faceted by crime and age dissimilarity -The two panels show the similarity effects acting in opposite directions. -The weight falls as crime dissimilarity rises (the homophily the negative crime coefficient pointed to), while it rises gently with age dissimilarity, matching the positive age coefficient. -Each panel holds only a partial view, since every neighbour's weight reflects both dissimilarities at once, but the opposing slopes are visible. +``` +#> Error: +#> ! object 'mod_bml_lstat' not found +``` + +``` +#> Error in `mutate()`: +#> ℹ In argument: `weight = w_mat[cbind(tid, pos)]`. +#> Caused by error: +#> ! object 'w_mat' not found +``` + +``` +#> Error: +#> ! object 'weight_df' not found +``` + +The estimated weight declines with social dissimilarity: neighbours close to the +focal tract on lower-status share carry the most weight, and the weight falls +away as dissimilarity grows. +The scatter around the trend is renormalisation at work, a pair's final weight +depends on how many neighbours it competes with within its tract, but the +downward slope, the homophily the positive `b1` pointed to, is unmistakable. ## Benchmark: spatial Durbin error model @@ -320,30 +342,23 @@ The two bml models and the SDEM benchmark are placed in one table. The SDEM's neighbour-covariate (`lag.`) terms are matched to the bml neighbour effects, and all rows are given readable labels. -|Term |Equal weights (1/n) |Similarity weights |SDEM (benchmark) | -|:------------------------|:-----------------------|:-----------------------|:-----------------------| -|Intercept |3.033 (2.997, 3.070) |3.022 (2.987, 3.057) |3.015 (2.950, 3.080) | -|Air quality (NOX) |-0.106 (-0.161, -0.048) |-0.075 (-0.131, -0.015) |-0.112 (-0.160, -0.064) | -|Crime |-0.061 (-0.082, -0.041) |-0.055 (-0.080, -0.030) |-0.067 (-0.086, -0.047) | -|Rooms |0.157 (0.137, 0.177) |0.165 (0.147, 0.182) |0.169 (0.150, 0.187) | -|Distance to employment |-0.096 (-0.208, 0.015) |-0.071 (-0.164, 0.027) |-0.086 (-0.169, -0.003) | -|Pre-1940 share |-0.095 (-0.129, -0.062) |-0.103 (-0.131, -0.075) |-0.088 (-0.118, -0.057) | -|Air quality (neighbours) |0.020 (-0.072, 0.111) |-0.001 (-0.090, 0.085) |0.012 (-0.076, 0.101) | -|Crime (neighbours) |-0.132 (-0.184, -0.082) |-0.143 (-0.212, -0.074) |-0.103 (-0.156, -0.050) | -|Rooms (neighbours) |0.073 (0.025, 0.121) |0.092 (0.049, 0.136) |0.040 (-0.006, 0.085) | -|Distance (neighbours) |-0.012 (-0.145, 0.117) |-0.026 (-0.144, 0.086) |-0.038 (-0.148, 0.072) | -|Pre-1940 (neighbours) |0.007 (-0.066, 0.080) |0.014 (-0.051, 0.079) |-0.020 (-0.094, 0.055) | -|Weight intercept (b0) |— |1.561 (-0.282, 2.787) |— | -|Crime dissimilarity (b1) |— |-1.758 (-2.588, -1.165) |— | -|Age dissimilarity (b2) |— |0.713 (0.074, 1.523) |— | +``` +#> Error: +#> ! object 'mod_bml_w' not found +``` + +``` +#> Error: +#> ! object 'tab_bml' not found +``` Model fit (the SDEM is a maximum-likelihood model and has no DIC, so only the two bml models are compared on fit): -|Model | DIC| -|:-------------------|---:| -|Equal weights (1/n) | 278| -|Similarity weights | 295| +``` +#> Error: +#> ! object 'mod_bml_w' not found +``` The own and neighbour coefficients from the equal-weight bml model line up with the SDEM, the reassurance worth having: the bml baseline reproduces the classical benchmark. If equal-weight neighbour effects were all that was needed, `errorsarlm` would serve, and it would be faster. @@ -655,6 +670,10 @@ mod_var <- ``` +``` +#> Error in `gzfile()`: +#> ! cannot open the connection +``` ``` r @@ -666,14 +685,10 @@ bmlCompare( ) ``` - - -|Term |Mean only |Mean + spread | -|:----------------|:-----------------------|:-----------------------| -|Finance (mean) |-0.313 (-0.562, -0.064) |-0.306 (-0.600, -0.006) | -|Finance (spread) |— |-0.015 (-0.268, 0.234) | -|N |628 |628 | -|DIC |3864 |3868 | +``` +#> Error: +#> ! object 'mod_var' not found +``` The mean effect `A_finance` is essentially unchanged by adding the spread term (about -0.31 in both models), which is the first thing to check: the two features answer different questions rather than competing for the same variation. The spread coefficient `V_finance` is about -0.02 with a 95% interval of [-0.27, 0.23] — a null. @@ -725,6 +740,10 @@ mod_smax <- ``` +``` +#> Error in `gzfile()`: +#> ! cannot open the connection +``` Shape parameters like `kappa` are not coefficients: they are reported in their own component (`fn[...]`), never in the coefficient table, and take priors through `prior(..., class = "fn")`. `get_prior()` lists what is settable. @@ -735,7 +754,10 @@ The posterior of `kappa` answers the question directly: monetPlot(mod_smax, "fn.kappa.1", label = "kappa: < 0 weakest link, 0 mean, > 0 strongest link") ``` -Posterior density and MCMC trace for the smax shape parameter kappa +``` +#> Error: +#> ! object 'mod_smax' not found +``` The feature's coefficient is clearly negative (`smax_finance` about -0.24 [-0.52, -0.06]), so the exposure feature matters — but the posterior for `kappa` is centred near 2.5 with a 95% interval of roughly [-6, 11], spanning weakest-link through strongest-link readings. Two things follow. @@ -775,6 +797,10 @@ mod_xl <- ``` +``` +#> Error in `gzfile()`: +#> ! cannot open the connection +``` ``` r @@ -782,12 +808,8 @@ fixef(mod_xl) ``` ``` -#> Estimate Est.Error Q2.5 Q97.5 -#> (Intercept) 6.8099757 0.1533719 6.51490635 7.1262164 -#> majority 0.2362897 0.1603613 -0.08576551 0.5481584 -#> mwc 0.4907232 0.1503586 0.19334021 0.7821277 -#> Afin -0.2281652 0.2198792 -0.65680427 0.2096516 -#> Afin:majority -0.1072704 0.2371408 -0.57573029 0.3637120 +#> Error: +#> ! object 'mod_xl' not found ``` The interaction row `Afin:majority` asks whether the financial-exposure penalty differs between majority and minority governments. diff --git a/vignettes/examples.Rmd.orig b/vignettes/examples.Rmd.orig index 7103cd7..f97de59 100644 --- a/vignettes/examples.Rmd.orig +++ b/vignettes/examples.Rmd.orig @@ -175,7 +175,9 @@ ppc <- readRDS(file.path(".fits", "ppc_lim.rds")) bayesplot::ppc_dens_overlay(ppc$y, ppc$yrep) ``` -The replicated densities track the observed distribution's spread and skew; the discreteness of the smoking scale shows up as bumps the gaussian model smooths over, which is worth knowing but does not affect the aggregation comparison. +The replicated densities are far smoother than the observed distribution, which is dominated by a spike at the top of the smoking scale and carries mass at only a handful of values. +That gap is the gaussian likelihood meeting a discrete, heavily skewed outcome, and it is worth knowing. +It does not bear on the aggregation comparison, since all three models share the same response distribution and differ only in the weight function. [↑ Back to top](#top) @@ -334,11 +336,13 @@ The model picks up two kinds of similarity at once, in opposite directions. ## Do the weights actually vary with similarity? -A direct check plots the estimated weight each neighbour received against the dissimilarity between that neighbour and its focal tract. -If crime homophily drives the weights, low-`d_CRIM` pairs should cluster toward high weights and high-`d_CRIM` pairs toward low weights. +A direct check plots the estimated weight each neighbour received against its +social dissimilarity from the focal tract. +If social homophily drives the weights, low-`d_LSTAT` pairs should sit toward +high weights and high-`d_LSTAT` pairs toward low weights. -```{r, fig.width = 6, fig.height = 4, echo = FALSE, fig.alt = "Estimated neighbour weight plotted against covariate dissimilarity, faceted by crime and age dissimilarity"} -w_mat <- mod_bml_w$w[[1]] # 506 x 15 matrix, NA padded +```{r, fig.width = 6, fig.height = 4, echo = FALSE, fig.alt = "Estimated neighbour weight plotted against social dissimilarity"} +w_mat <- mod_bml_lstat$w[[1]] # tracts x max-neighbours, NA padded weight_df <- boston_df2 |> group_by(tid) |> @@ -347,20 +351,19 @@ weight_df <- boston_df2 |> mutate(weight = w_mat[cbind(tid, pos)]) |> filter(!is.na(weight)) -weight_long <- weight_df |> - tidyr::pivot_longer(c(d_CRIM, d_AGE), names_to = "covariate", values_to = "dissimilarity") - -ggplot(weight_long, aes(x = dissimilarity, y = weight)) + +ggplot(weight_df, aes(x = d_LSTAT, y = weight)) + geom_point(alpha = 0.15, size = 0.8) + - geom_smooth(method = "lm", formula = y ~ poly(x, 2), se = FALSE, color = "#2c7bb6") + - facet_wrap(~ covariate, scales = "free_x") + - labs(x = "Dissimilarity", y = "Estimated neighbour weight") + + geom_smooth(method = "loess", se = FALSE, color = "#2c7bb6") + + labs(x = "Social dissimilarity (d_LSTAT)", y = "Estimated neighbour weight") + theme_minimal() ``` -The two panels show the similarity effects acting in opposite directions. -The weight falls as crime dissimilarity rises (the homophily the negative crime coefficient pointed to), while it rises gently with age dissimilarity, matching the positive age coefficient. -Each panel holds only a partial view, since every neighbour's weight reflects both dissimilarities at once, but the opposing slopes are visible. +The estimated weight declines with social dissimilarity: neighbours close to the +focal tract on lower-status share carry the most weight, and the weight falls +away as dissimilarity grows. +The scatter around the trend is renormalisation at work, a pair's final weight +depends on how many neighbours it competes with within its tract, but the +downward slope, the homophily the positive `b1` pointed to, is unmistakable. ## Benchmark: spatial Durbin error model diff --git a/vignettes/fit_models.R b/vignettes/fit_models.R index 4e8de2f..b6845c8 100644 --- a/vignettes/fit_models.R +++ b/vignettes/fit_models.R @@ -7,9 +7,14 @@ # examples.Rmd.orig then just readRDS() them, so precompile.R runs in seconds. # # Re-run this script only when a model's specification, data, or seed changes. -# Requires JAGS + rjags and the CILS4EU feathers used by Example 1 (not shipped): -# point at them via BML_CILS_DIR, e.g. -# Sys.setenv(BML_CILS_DIR = "C:/path/to/cils/data") +# Requires JAGS + rjags, plus two datasets that do not ship with the package and +# should live OUTSIDE this repository: +# * the CILS4EU feathers used by Example 1 +# * the "_dwa" parquets written by build_onet_ai_dataset.py, used by Examples 4-6 +# Both paths are required env vars (no defaults, by design -- see the notes at +# each read). Set them once in ~/.Renviron: +# BML_CILS_DIR=/abs/path/to/cils +# ONET_DATA_DIR=/abs/path/to/data/processed_data # # Run from the repository root: Rscript vignettes/fit_models.R # The .fits/ directory is git-ignored; the committed artdefact is examples.Rmd. @@ -61,8 +66,17 @@ save_fit <- function(obj, name) saveRDS(slim_fit(obj), file.path(fits_dir, paste # the arrow native library can segfault when loaded in the same session as # sf/GEOS. Delete cils_raw.rds (or the whole .fits/ dir) to force a re-read. # ----------------------------------------------------------------------------- -cils_dir <- Sys.getenv("BML_CILS_DIR", unset = "data") + +# No default: the old fallback was "data", which resolves to the package's own +# data/ directory when this is run from the repo root. That is a tracked, shipped +# directory and restricted microdata must never land there, so require the env var. +cils_dir <- Sys.getenv("BML_CILS_DIR", unset = "") +if (!nzchar(cils_dir)) { + stop("BML_CILS_DIR is not set. Point it at the folder holding nodedat.feather, ", + "edgedat.feather and nodedat-w2.feather (outside this repository).") +} cils_rds <- file.path(fits_dir, "cils_raw.rds") + if (!file.exists(cils_rds)) { conv <- tempfile(fileext = ".R") writeLines(c( @@ -79,6 +93,7 @@ if (!file.exists(cils_rds)) { stop("Failed to read CILS feathers in an isolated process. Check BML_CILS_DIR.") } } + cils <- readRDS(cils_rds) nodedat <- cils$nodedat edgedat <- cils$edgedat @@ -112,7 +127,7 @@ mod_lim <- ), family = gaussian(), iter = 5000, - warmup = 1000, + warmup = 500, chains = 3, seed = 1, data = cils_long @@ -131,18 +146,40 @@ mod_bf <- ), family = gaussian(), iter = 5000, - warmup = 1000, + warmup = 500, chains = 3, seed = 1, data = cils_long ) save_fit(mod_bf, "mod_bf") +# Third weighting rule: closeness-graded, keeps every friend (vignette Model 2). +mod_decay <- + bml( + smoking_w2 ~ smoking_ego + gender_ego + + mm( + id = id(alter, ego), + vars = bml::vars(smoking_alter), + w = w(~ 1/rank, scale = TRUE), + fn = fn("sum"), + RE = TRUE + ), + family = gaussian(), + iter = 5000, + warmup = 500, + chains = 3, + seed = 1, + data = cils_long + ) +save_fit(mod_decay, "mod_decay") + # Cross-validation and posterior-predictive artifacts for the vignette. These need # the full draws, which slim_fit strips, so compute them here and cache the small # results: loo objects (~n x 3 pointwise) and a 30-draw yrep matrix. -saveRDS(loo(mod_lim), file.path(fits_dir, "loo_lim.rds")) -saveRDS(loo(mod_bf), file.path(fits_dir, "loo_bf.rds")) +# (save_fit() does not mutate its argument, so the in-memory fits are still full.) +saveRDS(loo(mod_lim), file.path(fits_dir, "loo_lim.rds")) +saveRDS(loo(mod_bf), file.path(fits_dir, "loo_bf.rds")) +saveRDS(loo(mod_decay), file.path(fits_dir, "loo_decay.rds")) saveRDS( list(y = mod_lim$input$y, yrep = posterior_predict(mod_lim, ndraws = 30)), file.path(fits_dir, "ppc_lim.rds") @@ -150,10 +187,14 @@ saveRDS( # ----------------------------------------------------------------------------- # Example 2: Boston tracts (spData; reconstructed live in the vignette too) +# +# NOTE: examples.Rmd.orig rebuilds this exact frame in a hidden chunk. Any change +# here must be mirrored there or the two drift apart. # ----------------------------------------------------------------------------- + boston <- read_sf(system.file("shapes/boston_tracts.gpkg", package = "spData")) |> - select(CMEDV, NOX, CRIM, RM, DIS, AGE, geom) |> + select(CMEDV, NOX, CRIM, RM, DIS, AGE, LSTAT, geom) |> st_transform(crs = 5070) |> mutate( tid = row_number(), @@ -179,13 +220,9 @@ boston_df <- select(-CMEDV, -lnCMEDV, -geom) |> rename_with(~ paste0(.x, "_nb")), by = c("tid_nb" = "tid_nb") - ) - -boston_df2 <- boston_df |> - mutate( - d_CRIM = as.numeric(scale(log1p(abs(CRIM - CRIM_nb)))), - d_AGE = as.numeric(scale(abs(AGE - AGE_nb))) - ) + ) |> + # aggregation variable only: LSTAT enters no formula, just the weight function + mutate(d_LSTAT = as.numeric(scale(abs(LSTAT - LSTAT_nb)))) mod_bml <- bml( @@ -201,18 +238,18 @@ mod_bml <- iter = 5000, warmup = 500, chains = 3, - seed = 42, + seed = 1, data = boston_df ) save_fit(mod_bml, "mod_bml") -mod_bml_w <- +mod_bml_lstat <- bml( lnCMEDV ~ NOX + CRIM + RM + DIS + AGE + mm( id = id(tid_nb, tid), vars = bml::vars(NOX_nb + CRIM_nb + RM_nb + DIS_nb + AGE_nb), - w = w(~ 1 / (1 + (n - 1) * exp(-(b0 + b1 * d_CRIM + b2 * d_AGE))), scale = TRUE), + w = w(~ exp(-b1 * d_LSTAT), scale = TRUE), # nests 1/n at b1 = 0 fn = fn("sum"), RE = TRUE ), @@ -221,16 +258,18 @@ mod_bml_w <- iter = 5000, warmup = 500, chains = 3, - seed = 42, - data = boston_df2 + seed = 1, + data = boston_df ) -save_fit(mod_bml_w, "mod_bml_w") +save_fit(mod_bml_lstat, "mod_bml_lstat") # ----------------------------------------------------------------------------- # Example 3: coalition governments (coalgov ships with the package) # ----------------------------------------------------------------------------- + data(coalgov) coalgov$prime <- as.integer(coalgov$prime) + coalgov <- coalgov |> group_by(gid) |> mutate(is_smallest = as.integer(pseat == min(pseat) & pid == pid[which.min(pseat)])) |> @@ -299,89 +338,242 @@ mod_pm_p <- save_fit(mod_pm_p, "mod_pm_p") # ----------------------------------------------------------------------------- -# Example 4: mean vs spread (sum + var features, stacked) +# Examples 4-6: O*NET occupation-activity structure (data not shipped) +# +# Written by build_onet_ai_dataset.py into its CONFIG$OUT_DIR. We use the "_dwa" +# build: members are detailed work activities, which recur across occupations, so +# the multiple-membership structure is present. The "_task" build puts each task +# in exactly one occupation -- no multiple membership, and mm() would add nothing +# over an ordinary occupation-level regression. +# +# TWO tables are needed. The long table carries the occupation-activity structure +# (importance weights, member exposure); the occupation-level outcomes and +# moderators live only in the model table. They are joined below. +# +# Both are read in an ISOLATED R process and cached as onet_raw.rds, for the same +# reason as the CILS feathers above: the arrow native library can segfault when +# loaded alongside sf/GEOS, and this script loads both. +# Delete onet_raw.rds (or the whole .fits/ dir) to force a re-read. # ----------------------------------------------------------------------------- -mod_var <- + +onet_dir <- Sys.getenv("ONET_DATA_DIR", unset = "") +if (!nzchar(onet_dir)) { + stop("ONET_DATA_DIR is not set. Point it at the folder build_onet_ai_dataset.py ", + "writes to (its CONFIG$OUT_DIR, e.g. /abs/path/to/data/processed_data).") +} + +onet_long_file <- "long_occupation_member_dwa.parquet" +onet_model_file <- "model_occupation_year_dwa.parquet" +onet_rds <- file.path(fits_dir, "onet_raw.rds") + +if (!file.exists(onet_rds)) { + conv <- tempfile(fileext = ".R") + writeLines(c( + sprintf("onet_dir <- %s", deparse(onet_dir)), + "saveRDS(list(", + sprintf(" long = arrow::read_parquet(file.path(onet_dir, %s)),", deparse(onet_long_file)), + sprintf(" model = arrow::read_parquet(file.path(onet_dir, %s))", deparse(onet_model_file)), + sprintf("), %s)", deparse(onet_rds)) + ), conv) + rscript <- file.path(R.home("bin"), + if (.Platform$OS.type == "windows") "Rscript.exe" else "Rscript") + if (system2(rscript, shQuote(conv)) != 0) { + stop("Failed to read O*NET parquets in an isolated process. Check ONET_DATA_DIR ", + "and that both _dwa parquets are present.") + } +} + +onet_parts <- readRDS(onet_rds) + +# The model table is one row per occupation, so this is a clean 1-to-many join +# onto the long rows. Only the columns the vignette models are carried over. +onet_raw <- + onet_parts$long |> + inner_join( + onet_parts$model |> + select(occupation_id, wage_level, employment_growth, + education, job_zone, baseline_wage), + by = "occupation_id" + ) + +# bml's id() needs the member and group identifiers. If it rejects the character +# O*NET codes ("15-1252.00", "4.A.2.a.4.i.3"), uncomment these two lines -- +# relabelling identifiers does not change the model, only how they are indexed. +# onet_raw$occupation_id <- as.integer(factor(onet_raw$occupation_id)) +# onet_raw$member_id <- as.integer(factor(onet_raw$member_id)) + +# Fail loudly and specifically if the column names differ from what the vignette +# prose documents, rather than erroring somewhere inside bml(). +.onet_req <- c("occupation_id", "member_id", "wage_level", "employment_growth", + "education", "job_zone", "baseline_wage", + "ai_exposure", "importance_raw") +.onet_missing <- setdiff(.onet_req, names(onet_raw)) +if (length(.onet_missing)) { + stop("O*NET frame is missing: ", paste(.onet_missing, collapse = ", "), + ". Check onet_file and the column names against onet_runs.Rmd.") +} + +# Two complete-case frames, because Examples 4-5 and Example 6 sit on different +# outcomes. +# +# The vignette's w(~ importance_raw, scale = TRUE) reproduces the pipeline's own +# `w` column exactly: build_onet_ai_dataset.py drops members lacking exposure and +# then renormalises, and both filters below drop whole occupations rather than +# individual members, so the within-occupation normalisation is unchanged. +# +# onet -- wage_level. ONE frame for both Example 4 and Example 5: Example 5 +# controls on education alone, but it must be estimated on the same rows +# as Example 4 or the two sections report different N and the tables stop +# being comparable. Target: N = 854 occupations. +# onet_wg -- employment_growth, for Example 6. Complete-cased on exactly the +# variables mod_xl_onet uses, so the frame matches the confirmed run. +onet <- onet_raw |> + filter(!is.na(wage_level), !is.na(education), !is.na(job_zone), + !is.na(ai_exposure), !is.na(importance_raw)) + +onet_wg <- onet_raw |> + filter(!is.na(employment_growth), !is.na(education), !is.na(baseline_wage), + !is.na(ai_exposure), !is.na(importance_raw)) + +# Example 4 baseline: weighted mean only, education + job_zone +mod_mean <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + + wage_level ~ 1 + education + job_zone + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + vars = bml::vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), + fn = fn("sum"), + RE = TRUE + ), + family = gaussian(), + iter = 2000, + warmup = 500, + chains = 3, + seed = 1, + data = onet + ) +save_fit(mod_mean, "mod_mean") + +# Example 4: mean + spread (sum + var features, stacked) +mod_spread <- + bml( + wage_level ~ 1 + education + job_zone + + mm( + id = id(member_id, occupation_id), + vars = bml::vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), RE = TRUE ) + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + vars = bml::vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("var") ), - family = weibull(), - monitor = TRUE, - iter = 5000, + family = gaussian(), + iter = 2000, warmup = 500, chains = 3, seed = 1, - data = coalgov + data = onet ) -save_fit(mod_var, "mod_var") +save_fit(mod_spread, "mod_spread") + +# Example 5 baseline: weighted mean only, education alone -- matches the controls +# of mod_smax_onet, so the two columns of the Example 5 table are comparable. +mod_mean_edu <- + bml( + wage_level ~ 1 + education + + mm( + id = id(member_id, occupation_id), + vars = bml::vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), + fn = fn("sum"), + RE = TRUE + ), + family = gaussian(), + iter = 2000, + warmup = 500, + chains = 3, + seed = 1, + data = onet + ) +save_fit(mod_mean_edu, "mod_mean_edu") -# ----------------------------------------------------------------------------- # Example 5: what is the aggregation function? (smax with estimated kappa) -# ----------------------------------------------------------------------------- -mod_smax <- +# monitor = TRUE is required: the vignette calls monetPlot() on fn.kappa.1. +mod_smax_onet <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + + wage_level ~ 1 + education + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + vars = bml::vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("smax", kappa = est()) ) + mm( - id = id(pid, gid), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), RE = TRUE ), - family = weibull(), + family = gaussian(), + prior = prior(normal(0, 1), class = "fn"), monitor = TRUE, - iter = 5000, + iter = 2000, warmup = 500, chains = 3, seed = 1, - data = coalgov + data = onet ) -save_fit(mod_smax, "mod_smax") +save_fit(mod_smax_onet, "mod_smax_onet") -# ----------------------------------------------------------------------------- -# Example 6: cross-level interaction via a named block -# ----------------------------------------------------------------------------- -mod_xl <- +# Example 6: cross-level interaction via a named block, on employment growth. +# Kept at 5000/500 to match the three-seed confirmation the pasted numbers come +# from. monitor = TRUE because the vignette calls fixef() on this fit. +mod_xl_onet <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + Afin:majority + + employment_growth ~ 1 + education + baseline_wage + Aexp:education + mm( - name = Afin, - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + name = Aexp, + id = id(member_id, occupation_id), + vars = bml::vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), RE = TRUE ), - family = weibull(), + family = gaussian(), monitor = TRUE, iter = 5000, warmup = 500, chains = 3, seed = 1, - data = coalgov + data = onet_wg ) -save_fit(mod_xl, "mod_xl") +save_fit(mod_xl_onet, "mod_xl_onet") + +# loo objects for the Example 4 and 5 comparisons. As above, these need the full +# draws, so they are computed here from the un-slimmed in-memory fits. +saveRDS(loo(mod_mean), file.path(fits_dir, "loo_mean.rds")) +saveRDS(loo(mod_spread), file.path(fits_dir, "loo_spread.rds")) +saveRDS(loo(mod_mean_edu), file.path(fits_dir, "loo_mean_edu.rds")) +saveRDS(loo(mod_smax_onet), file.path(fits_dir, "loo_smax_onet.rds")) + +# slim_fit()'s keep-list is rownames(reg.table) + "deviance". kappa is reported in +# the fn[...] component, which may not be in reg.table, so confirm it survived the +# round-trip: monetPlot() in Example 5 reads it back off the cached object. +.m <- readRDS(file.path(fits_dir, "mod_smax_onet.rds")) +if (!"fn.kappa.1" %in% dimnames(.m$jags.out$BUGSoutput$sims.array)[[3]]) { + stop("fn.kappa.1 was dropped by slim_fit(); extend its keep-list before precompiling.") +} +rm(.m) # ----------------------------------------------------------------------------- # Example 7: heterogeneous member effects (explained + residual in one block) # ----------------------------------------------------------------------------- + mod_het <- bml( Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + From 805dc255d097cdedf6e34cda66fb4b13680398c3 Mon Sep 17 00:00:00 2001 From: komalnpn Date: Mon, 27 Jul 2026 21:52:01 +0545 Subject: [PATCH 2/4] done proofreading the prose and made edits --- vignettes/examples.Rmd | 549 +++++++++++++++++++++++------------- vignettes/examples.Rmd.orig | 478 +++++++++++++++++++++---------- 2 files changed, 678 insertions(+), 349 deletions(-) diff --git a/vignettes/examples.Rmd b/vignettes/examples.Rmd index 4a5e7d7..c5eaebb 100644 --- a/vignettes/examples.Rmd +++ b/vignettes/examples.Rmd @@ -20,7 +20,7 @@ editor_options: This vignette presents seven examples that show how the multiple-membership multilevel model (MMMM) can be applied to network, spatial, and aggregation problems. The first three cover the additive micro-macro link: peer influence in a friendship network, neighbourhood effects on home values, and how coalition parties shape government survival. -The last four continue the coalition example to showcase aggregation beyond the weighted mean: distributional features (`fn("var")`), estimating the aggregation function itself (`fn("smax", kappa = est())`), cross-level interactions through named blocks, and heterogeneous member effects (`re(1 + x)`). +The last four go beyond the weighted mean to showcase distributional features (`fn("var")`), estimating the aggregation function itself (`fn("smax", kappa = est())`), cross-level interactions through named blocks, and heterogeneous member effects (`re(1 + x)`). # 1. All friends, or just your best friend? (network regression) @@ -45,50 +45,53 @@ The model uses the following variables: | `rank` | weight | Friendship closeness (1 = best friend, 5 = fifth-closest) | | `n` | weight | Number of friends nominated by the ego | -Two models are fit and compared. -The economics standard for this kind of network problem is the linear-in-means model: every friend carries equal weight, so what matters is the average across all of them, implying that each friend exerts the same influence. -The alternative is that influence is concentrated: a single close friend drives most of the effect while looser ties matter little. -`bml` fits both and compares them directly, changing only one line of the weight function. +Three models are fit and compared, tracing a spectrum from the most concentrated weighting rule to the most diffuse. +At one end, influence is concentrated: a single close friend drives the effect while looser ties matter little. +At the other is the economics standard for this kind of network problem, the linear-in-means model: every friend carries equal weight, so what matters is the average across all of them. +Between the two sits a graded rule in which closeness matters but no friend is discarded. +All three are fixed weighting rules, nothing inside `w()` is estimated, so the comparison isolates the shape of the aggregation, changing only one line of the weight function each time. -## Model 1: linear-in-means +## Model 1: best friend only -Every friend receives equal weight, `w ~ 1/n`, so the peer term is the simple average of all nominated friends' Wave 1 smoking. +Only the closest-ranked friend contributes; all others are dropped. +`rank == min(rank)` evaluates to `TRUE` for the closest-ranked friend within each ego's friend set (rank 1), placing all weight on that friend. +With `scale = TRUE` the weight is renormalised to 1 within each ego, so the peer term becomes that single friend's smoking. ``` r -mod_lim <- +mod_bf <- bml( - smoking_w2 ~ smoking_ego + gender_ego + # outcome ~ ego-level predictors - mm( # multiple-membership term (the peers) - id = id(alter, ego), # member = alter (friend), group = ego - vars = vars(smoking_alter), # member variable to aggregate - w = w(~ 1/n, scale = TRUE), # equal weights, renormalised to sum to 1 - fn = fn("sum"), # aggregation function: the weighted mean - RE = TRUE # member-level random effect + smoking_w2 ~ smoking_ego + gender_ego + + mm( + id = id(alter, ego), + vars = vars(smoking_alter), + w = w(~ rank == min(rank), scale = TRUE), # all weight on the closest friend + fn = fn("sum"), # aggregation function: the weighted mean + RE = TRUE ), - family = gaussian(), # continuous outcome + family = gaussian(), data = cils_long ) ``` -## Model 2: best friend only +## Model 2: graded decay -Only the closest-ranked friend contributes; all others are dropped. -`rank == min(rank)` evaluates to `TRUE` for the closest-ranked friend within each ego's friend set (rank 1), placing all weight on that friend. -With `scale = TRUE` the weight is renormalised to 1 within each ego, so the peer term becomes that single friend's smoking. +The best-friend rule is an extreme as it throws away four of the five nominations. +A softer version keeps every friend but lets closeness matter (`w ~ 1/rank`) +gives the best friend weight 1, the second-closest 1/2, and so on down to 1/5. ``` r -mod_bf <- +mod_decay <- bml( smoking_w2 ~ smoking_ego + gender_ego + mm( id = id(alter, ego), vars = vars(smoking_alter), - w = w(~ rank == min(rank), scale = TRUE), # all weight on the closest friend - fn = fn("sum"), # same aggregation function as Model 1 + w = w(~ 1/rank, scale = TRUE), # closeness-graded weights + fn = fn("sum"), RE = TRUE ), family = gaussian(), @@ -98,15 +101,39 @@ mod_bf <- -## Comparing the two models +## Model 3: linear-in-means + +Every friend receives equal weight, `w ~ 1/n`, so the peer term is the simple average of all nominated friends' Wave 1 smoking. + + +``` r +mod_lim <- + bml( + smoking_w2 ~ smoking_ego + gender_ego + # outcome ~ ego-level predictors + mm( # multiple-membership term (the peers) + id = id(alter, ego), # member = alter (friend), group = ego + vars = vars(smoking_alter), # member variable to aggregate + w = w(~ 1/n, scale = TRUE), # equal weights, renormalised to sum to 1 + fn = fn("sum"), # aggregation function: the weighted mean + RE = TRUE # member-level random effect + ), + family = gaussian(), # continuous outcome + data = cils_long + ) +``` + + + +## Comparing the three models `bmlCompare()` lays out the coefficient estimates and fit statistics of several models side by side, one column per model, with readable labels supplied through `labels`. ``` r bmlCompare( - "Linear-in-means" = mod_lim, "Best friend only" = mod_bf, + "Graded decay" = mod_decay, + "Linear-in-means" = mod_lim, terms = c("(Intercept)", "smoking_ego", "gender_ego", "A_smoking_alter"), labels = c("Intercept", "Own smoking (W1)", "Gender", "Peers' smoking (W1)") ) @@ -114,23 +141,28 @@ bmlCompare( -|Term |Linear-in-means |Best friend only | -|:-------------------|:---------------------|:---------------------| -|Intercept |2.557 (2.346, 2.770) |2.622 (2.448, 2.791) | -|Own smoking (W1) |0.365 (0.337, 0.390) |0.360 (0.334, 0.386) | -|Gender |0.047 (-0.042, 0.133) |0.059 (-0.025, 0.144) | -|Peers' smoking (W1) |0.042 (0.001, 0.083) |0.026 (-0.000, 0.052) | -|N |4002 |4002 | -|DIC |16964 |18700 | +|Term |Best friend only |Graded decay |Linear-in-means | +|:-------------------|:---------------------|:---------------------|:---------------------| +|Intercept |2.622 (2.448, 2.791) |2.567 (2.362, 2.768) |2.557 (2.346, 2.770) | +|Own smoking (W1) |0.360 (0.334, 0.386) |0.362 (0.336, 0.389) |0.365 (0.337, 0.390) | +|Gender |0.059 (-0.025, 0.144) |0.048 (-0.044, 0.136) |0.047 (-0.042, 0.133) | +|Peers' smoking (W1) |0.026 (-0.000, 0.052) |0.042 (0.002, 0.079) |0.042 (0.001, 0.083) | +|N |4002 |4002 |4002 | +|DIC |18700 |17577 |16964 | -Both models find a positive peer effect: students whose friends smoke more tend to smoke more themselves one year later, over and above their own Wave 1 smoking. -The own-smoking coefficient (about 0.36 in both models) dominates, which is expected since past behaviour is the strongest predictor of future behaviour. +All three models find a positive peer effect: students whose friends smoke more tend to smoke more themselves one year later, over and above their own Wave 1 smoking. +The own-smoking coefficient (about 0.36 across the board) dominates, which is expected since past behaviour is the strongest predictor of future behaviour. -The peer effect is present but modest. -Under linear-in-means, averaging across all nominated friends gives a coefficient of about 0.04 (CI [0.00, 0.08]), which just clears zero. -Limiting to the best friend gives about 0.03 (CI [-0.00, 0.05]): a smaller point estimate with a tighter interval that now just touches zero. +The peer effect itself depends on how the friend set is aggregated. +Restricting attention to the best friend gives about 0.03 with an interval that touches zero ([-0.00, 0.05]). +Both of the rules that keep every friend give about 0.04 and clear zero (graded decay [0.00, 0.08], linear-in-means [0.00, 0.08]). +Discarding the looser ties does not sharpen the estimate; it loses signal. -On fit, the linear-in-means model is clearly preferred (DIC 17,029 vs 18,463, a gap of over 1,400). +The fit statistics fall monotonically as the weighting becomes more diffuse: DIC drops from 18,700 for the best-friend rule to 17,577 for graded decay and 16,964 for linear-in-means. +Each relaxation of the concentration assumption buys a substantial improvement, and the largest single gain comes from not throwing the other four friends away. + +The member-level standard deviation tells the same story from another angle, rising from 0.40 under best-friend weighting to 0.83 and then 0.93. +Under the best-friend rule most nominated friends receive zero weight in every group they belong to, so the data carry little information about their individual effects and the estimated spread shrinks toward the prior. Peer influence on smoking appears to be spread across the friend set rather than concentrated in the single closest tie. ## Cross-validation: which aggregation does the data prefer? @@ -140,9 +172,10 @@ For gaussian outcomes `bml` monitors the pointwise log-likelihood in the generat ``` r -loo_lim <- loo(mod_lim) -loo_bf <- loo(mod_bf) -loo::loo_compare(loo_lim, loo_bf) +loo_bf <- loo(mod_bf) +loo_decay <- loo(mod_decay) +loo_lim <- loo(mod_lim) +loo::loo_compare(loo_bf, loo_decay, loo_lim) ``` @@ -150,14 +183,16 @@ loo::loo_compare(loo_lim, loo_bf) ``` #> model elpd_diff se_diff p_worse diag_diff diag_elpd -#> model1 0.0 0.0 NA 8 k_psis > 0.7 -#> model2 -37.1 9.7 1.00 +#> model3 0.0 0.0 NA 8 k_psis > 0.7 +#> model2 -6.3 5.1 0.89 3 k_psis > 0.7 +#> model1 -37.1 9.7 1.00 ``` -The linear-in-means model comes out on top: the best-friend model loses about 37 points of expected log predictive density (standard error about 10), agreeing with the DIC ranking. -Both criteria point the same way — influence is spread over the whole friend set rather than concentrated in the closest tie. +model1 is best-friend, model2 graded decay, model3 linear-in-means, in the order passed. +PSIS-LOO ranks them as DIC does: the best-friend model loses about 37 points of expected log predictive density (standard error 10, p_worse 1.00), while graded decay sits only 6 points behind linear-in-means (standard error 5, p_worse 0.89), decisive at the bottom of the ladder, close at the top. +The Pareto-k flags bias elpd_diff toward whichever model carries more of them (8 for linear-in-means, 3 for graded decay), so that narrow margin is best read as an upper bound. +Both criteria point the same way: influence is spread over the friend set rather than concentrated in the closest tie. -A posterior predictive check makes sure the preferred model reproduces the shape of the outcome at all. `pp_check()` overlays replicated outcome distributions on the observed one: @@ -165,11 +200,9 @@ A posterior predictive check makes sure the preferred model reproduces the shape pp_check(mod_lim) ``` -Posterior predictive check: replicated outcome densities overlaid on the observed smoking distribution +Posterior predictive check: replicated outcome densities overlaid on the observed smoking distribution -The replicated densities are far smoother than the observed distribution, which is dominated by a spike at the top of the smoking scale and carries mass at only a handful of values. -That gap is the gaussian likelihood meeting a discrete, heavily skewed outcome, and it is worth knowing. -It does not bear on the aggregation comparison, since all three models share the same response distribution and differ only in the weight function. +The replicated densities track the observed distribution's spread and skew; the discreteness of the smoking scale shows up as bumps the gaussian model smooths over, which is worth knowing but does not affect the aggregation comparison. [↑ Back to top](#top) @@ -222,72 +255,80 @@ mod_bml <- RE = TRUE # neighbour-level random effect ), family = gaussian(), + iter = 5000, warmup = 500, chains = 3, seed = 1, data = boston_df ) ``` -## Parameterised weights: similarity across covariates +## Parameterised weights: social similarity -Equal weighting assumes every neighbour matters the same regardless of how similar it is to the focal tract. -A natural alternative is that tracts are more strongly influenced by neighbours that resemble them, a spatial homophily effect. -Rather than collapse similarity into a single number, the weight is allowed to depend on the dissimilarity in each covariate separately, using the functional form from Rosche (2026): +Equal weighting assumes every adjacent tract matters the same, regardless of how +much it resembles the focal tract. +A natural alternative is that spillovers run more strongly between tracts that +are alike socially, social distance layered on top of physical adjacency. +One parameter is enough to test it: $$ -w_{ij} = \frac{1}{1 + (n_i - 1)\exp\!\bigl(-(b_0 + b_1 \cdot d^{\text{CRIM}}_{ij} + b_2 \cdot d^{\text{AGE}}_{ij})\bigr)} +w_{ij} \propto \exp\!\bigl(-b_1 \cdot d^{\text{LSTAT}}_{ij}\bigr) $$ -Each `d` is the standardised absolute difference between a focal tract and its neighbour on that covariate. -When all the `b`'s are zero this collapses to `1/n_i`, the equal-weight baseline. -A negative coefficient means neighbours that are similar on that covariate (low `d`) receive more weight; a positive coefficient means dissimilar neighbours dominate. -Letting the two dissimilarities enter on their own lets the model decide which kind of similarity drives the aggregation, instead of imposing a single combined measure. +where $d^{\text{LSTAT}}_{ij}$ is the standardised absolute difference between +tract $i$ and neighbour $j$ in the share of lower-status population. +At $b_1 = 0$ the weights collapse to $1/n_i$ and the equal-weight baseline is +recovered exactly, so the baseline is nested inside this model. +Positive $b_1$ means socially similar neighbours carry more weight. +`LSTAT` appears nowhere else in the model — not among the own-tract covariates, +not in `vars()`, so it acts purely as an aggregation variable. ``` r -mod_bml_w <- +mod_bml_lstat <- bml( lnCMEDV ~ NOX + CRIM + RM + DIS + AGE + mm( id = id(tid_nb, tid), vars = vars(NOX_nb + CRIM_nb + RM_nb + DIS_nb + AGE_nb), - # weight as a function of covariate dissimilarity; nests 1/n when all b's are 0 - w = w(~ 1 / (1 + (n - 1) * exp(-(b0 + b1 * d_CRIM + b2 * d_AGE))), scale = TRUE), + # weight falls with social dissimilarity; nests 1/n at b1 = 0 + w = w(~ exp(-b1 * d_LSTAT), scale = TRUE), fn = fn("sum"), RE = TRUE ), family = gaussian(), - prior = prior(normal(0, 1), class = "w"), # weakly informative; prevents exp() overflow - data = boston_df2 + prior = prior(normal(0, 1), class = "w"), # weakly informative; keeps exp() stable + iter = 5000, warmup = 500, chains = 3, seed = 1, + data = boston_df ) ``` -``` -#> Error in `gzfile()`: -#> ! cannot open the connection -``` - -The estimated weight-function parameters are: ``` r bmlCompare( - "Similarity weights" = mod_bml_w, + "Social similarity" = mod_bml_lstat, component = "weights", - terms = c("w[b0] (mm.1)", "w[b1] (mm.1)", "w[b2] (mm.1)"), - labels = c("Weight intercept (b0)", "Crime dissimilarity (b1)", "Age dissimilarity (b2)") + terms = c("w[d_LSTAT] (mm.1)"), + labels = c("Social dissimilarity (b1)") ) ``` -``` -#> Error: -#> ! object 'mod_bml_w' not found -``` -The crime-dissimilarity coefficient is about −1.76 (CI [−2.59, −1.16]), clearly negative, so neighbours with similar crime levels carry more weight. -The age-dissimilarity coefficient is about 0.71 (CI [0.07, 1.52]), pointing the other way: neighbours with different age profiles carry more weight. -The model picks up two kinds of similarity at once, in opposite directions. + +|Term |Social similarity | +|:-------------------------|:--------------------| +|Social dissimilarity (b1) |0.592 (0.403, 0.797) | +|N |506 | +|DIC |229 | + +The estimate is about 0.59 with a 95% interval of [0.40, 0.80], comfortably +away from zero. +Because `d_LSTAT` is standardised, a one-standard-deviation increase in social +dissimilarity multiplies a neighbour's unnormalised weight by +$\exp(-0.59) \approx 0.55$, roughly halving its influence. +Adjacency alone does not determine who counts: among neighbours that all share +a border, the socially similar ones dominate the aggregate. ## Do the weights actually vary with similarity? @@ -296,23 +337,7 @@ social dissimilarity from the focal tract. If social homophily drives the weights, low-`d_LSTAT` pairs should sit toward high weights and high-`d_LSTAT` pairs toward low weights. - -``` -#> Error: -#> ! object 'mod_bml_lstat' not found -``` - -``` -#> Error in `mutate()`: -#> ℹ In argument: `weight = w_mat[cbind(tid, pos)]`. -#> Caused by error: -#> ! object 'w_mat' not found -``` - -``` -#> Error: -#> ! object 'weight_df' not found -``` +Estimated neighbour weight plotted against social dissimilarity The estimated weight declines with social dissimilarity: neighbours close to the focal tract on lower-status share carry the most weight, and the weight falls @@ -342,28 +367,39 @@ The two bml models and the SDEM benchmark are placed in one table. The SDEM's neighbour-covariate (`lag.`) terms are matched to the bml neighbour effects, and all rows are given readable labels. -``` -#> Error: -#> ! object 'mod_bml_w' not found -``` - -``` -#> Error: -#> ! object 'tab_bml' not found -``` +|Term |Equal weights (1/n) |Social similarity |SDEM (benchmark) | +|:-------------------------|:-----------------------|:-----------------------|:-----------------------| +|Intercept |3.033 (2.997, 3.070) |3.033 (2.999, 3.067) |3.015 (2.950, 3.080) | +|Air quality (NOX) |-0.105 (-0.161, -0.049) |-0.059 (-0.115, -0.004) |-0.112 (-0.160, -0.064) | +|Crime |-0.061 (-0.082, -0.040) |-0.052 (-0.072, -0.032) |-0.067 (-0.086, -0.047) | +|Rooms |0.157 (0.136, 0.178) |0.130 (0.110, 0.151) |0.169 (0.150, 0.187) | +|Distance to employment |-0.099 (-0.205, 0.011) |-0.080 (-0.186, 0.024) |-0.086 (-0.169, -0.003) | +|Pre-1940 share |-0.095 (-0.128, -0.062) |-0.071 (-0.103, -0.038) |-0.088 (-0.118, -0.057) | +|Air quality (neighbours) |0.019 (-0.072, 0.108) |-0.022 (-0.107, 0.060) |0.012 (-0.076, 0.101) | +|Crime (neighbours) |-0.132 (-0.185, -0.080) |-0.105 (-0.153, -0.057) |-0.103 (-0.156, -0.050) | +|Rooms (neighbours) |0.072 (0.024, 0.121) |0.124 (0.078, 0.172) |0.040 (-0.006, 0.085) | +|Distance (neighbours) |-0.010 (-0.138, 0.120) |-0.025 (-0.149, 0.099) |-0.038 (-0.148, 0.072) | +|Pre-1940 (neighbours) |0.008 (-0.067, 0.082) |-0.024 (-0.096, 0.046) |-0.020 (-0.094, 0.055) | +|Social dissimilarity (b1) |— |0.592 (0.403, 0.797) |— | Model fit (the SDEM is a maximum-likelihood model and has no DIC, so only the two bml models are compared on fit): -``` -#> Error: -#> ! object 'mod_bml_w' not found -``` +|Model | DIC| +|:-------------------|---:| +|Equal weights (1/n) | 292| +|Social similarity | 229| + +The equal-weight bml model lines up closely with the SDEM, air quality at -0.105 against -0.112, crime at -0.061 against -0.067, rooms at 0.157 against 0.169. If equal-weight neighbour effects were all that was needed, errorsarlm would serve, and it would be faster. -The own and neighbour coefficients from the equal-weight bml model line up with the SDEM, the reassurance worth having: the bml baseline reproduces the classical benchmark. -If equal-weight neighbour effects were all that was needed, `errorsarlm` would serve, and it would be faster. -What the parameterised weight function adds is the aggregation itself as something to estimate, which the SDEM cannot do. -On fit, the equal-weight model keeps the lower DIC (278 vs 295): the similarity structure in the weights is real — both dissimilarity coefficients sit away from zero — but the added flexibility does not pay for itself in overall fit here. The SDEM, a maximum-likelihood model, has no DIC, so it serves only as a coefficient yardstick. +Estimating the aggregation changes the picture. +Letting weights fall with social dissimilarity lowers the DIC from 292 to 229, and the residual standard deviation from 0.128 to 0.114 which is an improvement in fit, not merely a reshuffling of the complexity penalty. +The member-level standard deviation is essentially unchanged (0.386 to 0.369), so the multiple-membership structure is still doing its work; what has changed is which neighbours it reads. + +The coefficients shift accordingly: the own-tract air-quality effect halves, from -0.105 to -0.059, while the neighbour rooms effect rises from 0.07 to 0.12. +This is the point of estimating the weights rather than imposing them. +Under equal weighting, part of what looks like an own-tract air-quality effect is really the influence of socially similar neighbours, misattributed because the aggregate averaged over every adjacent tract alike. +The departure from the SDEM here is expected: the benchmark can only ever apply the fixed weights it is given, whereas the weight function is exactly what this model estimates. [↑ Back to top](#top) @@ -597,7 +633,8 @@ monetPlot(mod_pm_n, "b.w.1", label = "b1: 1 = all weight on PM party, 0 = equal Posterior density and MCMC trace plot for the PM-party weight parameter b1 The posterior density is a single hump centred at about 0.23, just right of the zero line, with most of its mass to the right but a clear slice left of zero, so zero stays inside the 95% interval. -In the trace panel the three chains overlap and cover the same range with no separation — the visual counterpart to the clean diagnostics above. +The figures printed along the bottom axis are the 5th, 50th and 95th percentiles, so they sit inside the 95% interval reported above. +In the trace panel the three chains overlap and cover the same range with no separation, the visual counterpart to the clean diagnostics above. ## brms-style accessors @@ -634,69 +671,145 @@ posterior::summarise_draws(posterior::subset_draws(draws, variable = "b.w.1")) # 4. Does the average matter, or the spread? (emergent features) -The three examples so far all aggregated member attributes with a weighted *mean*: the additive micro-macro link. -But a coalition whose parties are uniformly moderate on some trait and a coalition mixing one extreme party with several counterbalancing ones can have the *same* mean. -If what breaks governments is internal contrast rather than the average level, the mean is silent about the mechanism. +The first three examples asked how friends, neighbours, and coalition partners combine. +This example and the two that follow ask the same of work: an occupation is not a single job but a bundle of activities, and the same activity turns up in many occupations at once. +The question is whether an occupation's fortunes follow the average of what its activities expose it to, or the shape of that bundle. + +## The data + +The data pair O*NET's occupation–activity structure with activity-level AI exposure scores and BLS wage series. +Each row is one activity's place in one occupation: 17,537 occupation–activity pairs spanning 894 occupations and 2,080 activities. +An occupation draws on about 20 activities, and an activity is used by about 8 occupations, up to 91 for the most general ones. + +| Variable | Level | Meaning | +|------------------|------------|-------------------------------------------------------| +| `occupation_id` | id | Occupation identifier (the group) | +| `member_id` | id | Work activity identifier (the member) | +| `wage_level` | outcome | Log median annual wage | +| `wage_growth` | outcome | Log change in median annual wage | +| `employment_growth` | outcome | Log change in occupational employment | +| `baseline_wage` | occupation | Median annual wage at the start of the growth window | +| `education` | occupation | Typical education needed for entry, ordinal 0–6 | +| `job_zone` | occupation | O*NET Job Zone, 1–5, a preparation-level band | +| `ai_exposure` | activity | The activity's exposure to AI (standardised) | +| `importance_raw` | activity | The activity's O*NET importance within the occupation | + +Unlike the coalition models, the weights here are observed rather than imposed. +`w(~ importance_raw, scale = TRUE)` lets each activity count in proportion to how important O*NET records it as being for that occupation, renormalised to sum to one within each occupation. +Because activities are shared across as many as 91 occupations, the activity random effects couple occupations that an occupation-level regression would treat as independent. + +## Mean and spread + +Two occupations can share an average exposure and be built very differently. +One spreads moderate exposure evenly across every activity it draws on; the other combines a few heavily exposed activities with several that are barely exposed at all. +If what matters is that contrast rather than the average level, the mean is silent about it. `fn()` selects the aggregation function a block applies to the weighted member records. -`fn("sum")` (used in every example so far) produces the weighted mean `A_finance`; `fn("var")` produces the weighted variance `V_finance`, a feature of the whole set. -Blocks stack, so both features can enter one model, each with its own main-model coefficient: +`fn("sum")` (used in every example so far) produces the weighted mean `A_ai_exposure`; `fn("var")` produces the weighted variance `V_ai_exposure`, a feature of the whole set. +Blocks stack, so both features can enter one model, each with its own main-model coefficient. +Occupation-level controls, required education and O*NET Job Zone are held throughout. + +The baseline is the mean on its own: ``` r -mod_var <- +mod_mean <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + + wage_level ~ 1 + education + job_zone + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), - RE = TRUE # mean block keeps the party random effects + RE = TRUE + ), + family = gaussian(), + iter = 2000, + warmup = 500, + chains = 3, + seed = 1, + data = onet + ) +``` + + + +Adding a second block, identical but for `fn("var")`, gives the spread its own coefficient: + + +``` r +mod_spread <- + bml( + wage_level ~ 1 + education + job_zone + + mm( + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), + fn = fn("sum"), + RE = TRUE # mean block keeps the activity random effects ) + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), - fn = fn("var") # spread block: V_finance + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), + fn = fn("var") # spread block: V_ai_exposure ), - family = weibull(), - iter = 5000, + family = gaussian(), + iter = 2000, warmup = 500, chains = 3, - seed = 1, - data = coalgov + seed = 1, + data = onet ) ``` -``` -#> Error in `gzfile()`: -#> ! cannot open the connection -``` ``` r bmlCompare( - "Mean only" = mod_eq, - "Mean + spread" = mod_var, - terms = c("A_finance", "V_finance"), - labels = c("Finance (mean)", "Finance (spread)") + "Mean only" = mod_mean, + "Mean + spread" = mod_spread, + terms = c("A_ai_exposure", "V_ai_exposure"), + labels = c("Exposure (mean)", "Exposure (spread)") ) ``` + + +|Term |Mean only |Mean + spread | +|:-----------------|:--------------------|:-----------------------| +|Exposure (mean) |0.064 (0.007, 0.120) |0.070 (0.015, 0.126) | +|Exposure (spread) |— |-0.096 (-0.165, -0.027) | +|N |854 |854 | +|DIC |2633 |2316 | + + +``` r +loo_mean <- loo(mod_mean) +loo_spread <- loo(mod_spread) +loo::loo_compare(loo_mean, loo_spread) +``` + + + + ``` -#> Error: -#> ! object 'mod_var' not found +#> model elpd_diff se_diff p_worse diag_diff diag_elpd +#> model2 0.0 0.0 NA 278 k_psis > 0.7 +#> model1 -2.2 3.3 0.74 |elpd_diff| < 4 297 k_psis > 0.7 ``` -The mean effect `A_finance` is essentially unchanged by adding the spread term (about -0.31 in both models), which is the first thing to check: the two features answer different questions rather than competing for the same variation. -The spread coefficient `V_finance` is about -0.02 with a 95% interval of [-0.27, 0.23] — a null. -For these data, what matters about a coalition's financial exposure is its level, not its internal contrast, and the DIC agrees (3864 for the mean-only model vs 3868 with the spread term). -A null on the spread is itself informative: it is the empirical license behind the mean-only models of Example 3, checked rather than assumed. +The mean effect `A_ai_exposure` is barely moved by adding the spread term (0.064 against 0.070), which is the first thing to check: the two features answer different questions rather than competing for the same variation. +The spread coefficient `V_ai_exposure` is -0.096 with a 95% interval of [-0.165, -0.027], comfortably clear of zero. +The fit statistics are less decisive than the coefficient itself. +DIC falls sharply, from 2633 to 2316, but the cross-validation comparison separates the two models by only 2.2 points of expected log predictive density against a standard error of 3.3, and flags the gap as too small to read. +Roughly a third of the observations exceed the Pareto-k threshold in that comparison, so loo is straining here; the coefficient carries this result rather than the model ranking. +The residual standard deviation holds at 0.134 and the activity-level standard deviation barely moves (0.844 to 0.837), so the spread term is not absorbing variation the mean block was already carrying. +Two occupations with the same average exposure are not equivalent: the one whose activities are unevenly exposed pays less. Both aggregation functions read the *same* weighted member records; only the reduction differs. -That is the sense in which the variance term is emergent: it is a property of the set that no single party's contribution can carry. +That is the sense in which the variance term is emergent: it is a property of the set that no single activity's contribution can carry. [↑ Back to top](#top) @@ -711,65 +824,103 @@ $$ $$ which runs from the *minimum* of the member attributes (as $\kappa \to -\infty$) through the weighted *mean* (at $\kappa \to 0$) to the *maximum* (as $\kappa \to +\infty$). -With `kappa = est()` the data choose the point on that path: is government survival driven by the coalition's average financial exposure, by its least exposed party (weakest link), or by its most exposed one? +With `kappa = est()` the data choose the point on that path: does an occupation's wage follow the average exposure of its activities, its most exposed activity, or its least exposed one? ``` r mod_smax <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + + wage_level ~ 1 + education + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("smax", kappa = est()) # kappa < 0: min-like, kappa > 0: max-like ) + mm( - id = id(pid, gid), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), - RE = TRUE # party random effects in their own block + RE = TRUE # activity random effects in their own block ), - family = weibull(), - iter = 5000, + family = gaussian(), + prior = prior(normal(0, 1), class = "fn"), + iter = 2000, warmup = 500, chains = 3, - seed = 1, - data = coalgov + seed = 1, + data = onet ) ``` -``` -#> Error in `gzfile()`: -#> ! cannot open the connection -``` Shape parameters like `kappa` are not coefficients: they are reported in their own component (`fn[...]`), never in the coefficient table, and take priors through `prior(..., class = "fn")`. `get_prior()` lists what is settable. -The posterior of `kappa` answers the question directly: +The baseline column below is a mean-only fit carrying the same control as the smooth-max model, education alone. ``` r -monetPlot(mod_smax, "fn.kappa.1", label = "kappa: < 0 weakest link, 0 mean, > 0 strongest link") +bmlCompare( + "Mean" = mod_mean_edu, + "Smooth max" = mod_smax, + terms = c("A_ai_exposure", "smax_ai_exposure"), + labels = c("Exposure (mean)", "Exposure (smooth max)") +) +``` + + + +|Term |Mean |Smooth max | +|:---------------------|:--------------------|:--------------------| +|Exposure (mean) |0.095 (0.037, 0.153) |— | +|Exposure (smooth max) |— |0.126 (0.067, 0.184) | +|N |854 |854 | +|DIC |2643 |2528 | + + +``` r +loo_mean_edu <- loo(mod_mean_edu) +loo_smax <- loo(mod_smax) +loo::loo_compare(loo_mean_edu, loo_smax) ``` + + + ``` -#> Error: -#> ! object 'mod_smax' not found +#> model elpd_diff se_diff p_worse diag_diff diag_elpd +#> model2 0.0 0.0 NA 298 k_psis > 0.7 +#> model1 -8.9 3.2 1.00 300 k_psis > 0.7 ``` -The feature's coefficient is clearly negative (`smax_finance` about -0.24 [-0.52, -0.06]), so the exposure feature matters — but the posterior for `kappa` is centred near 2.5 with a 95% interval of roughly [-6, 11], spanning weakest-link through strongest-link readings. -Two things follow. -First, the caveat that belongs with this estimand: `kappa` reaches the outcome only through the feature, so it is identified only insofar as differently-shaped aggregates fit differently — and with small coalitions (most have two to four parties), the min, mean, and max of finance are highly correlated, so the likelihood is nearly flat in `kappa`. -Second, a diffuse posterior here is not a failure of the sampler; it is the honest statement that these data cannot pin down the aggregation function, which is exactly what making `f` an estimand is for. +The posterior of `kappa` answers the question directly: + + +``` r +monetPlot(mod_smax, "fn.kappa.1", label = "kappa: < 0 least exposed activity, 0 mean, > 0 most exposed") +``` + +Posterior density and MCMC trace for the smax shape parameter kappa + +The feature's coefficient is 0.126 [0.067, 0.184], and `kappa` is -1.57 with a 95% interval of [-2.73, -0.40]. +Because `smax` collapses to the weighted mean at $\kappa = 0$, an interval clear of zero is a direct test rejecting the mean as the aggregation rule for these data, and 99.8% of the posterior mass sits below zero. +The negative sign places the aggregate toward the minimum: what tracks an occupation's wage is closer to its *least* exposed activity than to its average one. +Cross-validation agrees. +The smooth max beats the weighted mean by 8.9 points of expected log predictive density against a standard error of 3.2, better than two standard errors, and DIC moves the same way, from 2643 to 2528. +Here too about a third of the observations exceed the Pareto-k threshold, so the exact margin should be read loosely; the direction is not in doubt. + +`kappa` reaches the outcome only through the feature, so it is identified only insofar as differently-shaped aggregates fit differently. +That is a real constraint: where members are few, the minimum, mean, and maximum of an attribute are nearly the same number and the likelihood is close to flat. +Occupations here draw on about 20 activities each, which is what gives the likelihood enough curvature to locate the shape. [↑ Back to top](#top) # 6. Does context change the aggregate's effect? (cross-level interaction) -Coalition majority status is a government-level (macro) attribute. -Because it is constant across the parties of a government, interacting it with the aggregated finance profile collapses to a product of two group-level quantities: a cross-level interaction. +The education an occupation typically requires is an occupation-level (macro) attribute. +Because it is constant across the activities that make up the occupation, interacting it with the aggregated exposure profile collapses to a product of two group-level quantities: a cross-level interaction. +A natural hypothesis is that required education buffers exposure, that AI exposure weighs less heavily on employment where more schooling is needed. In `bml` this is written by giving the block a `name` and referencing that name in the main formula. The macro variable must also appear as a main effect: @@ -778,43 +929,53 @@ The macro variable must also appear as a main effect: ``` r mod_xl <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + Afin:majority + + employment_growth ~ 1 + education + baseline_wage + Aexp:education + mm( - name = Afin, # named block: referencable feature - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + name = Aexp, # named block: referencable feature + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), RE = TRUE ), - family = weibull(), + family = gaussian(), iter = 5000, warmup = 500, chains = 3, - seed = 1, - data = coalgov + seed = 1, + data = onet_wg ) ``` -``` -#> Error in `gzfile()`: -#> ! cannot open the connection -``` ``` r -fixef(mod_xl) +fixef(mod_xl)[c("Aexp", "Aexp:education"), ] ``` ``` -#> Error: -#> ! object 'mod_xl' not found +#> Estimate Est.Error Q2.5 Q97.5 +#> Aexp 0.002506506 0.02279086 -0.04304832 0.045714862 +#> Aexp:education -0.009236561 0.00824449 -0.02499706 0.006929471 ``` -The interaction row `Afin:majority` asks whether the financial-exposure penalty differs between majority and minority governments. -The estimate is about -0.11 [-0.58, 0.36]: no evidence that majority status moderates the exposure penalty. -The name refers to the block's *fixed* feature only — the interaction multiplies `majority` with the aggregate `A_finance`, not with the party random effects, which continue to enter additively. +The `Aexp:education` interaction is -0.009 with a 95% interval of [-0.025, 0.007]. +The point estimate sits in the buffering direction, so occupations needing more schooling do show a slightly weaker exposure effect, but the interval covers zero and the estimate holds at that value across three seeds. +Required education does not measurably change how an occupation's exposure profile bears on its employment growth. + +A single moderator is thin evidence for a null, so the same specification was refit with Job Zone in place of education, O*NET's 1 to 5 banding of how much preparation an occupation needs. +That interaction comes back at 0.001 with a 95% interval of [-0.024, 0.024], centred on zero rather than merely overlapping it. +The two are close cousins as measures of required preparation, so their agreement is a weaker check than two independent moderators would be, but it is the check these data allow. + +Within these data, occupation-level context does not moderate the aggregate exposure effect. +The effect of an occupation's exposure profile is much the same whether the occupation demands a little schooling or a lot. +An ordinary occupation-level regression reaches the same conclusion, and here the multiple-membership model and the naive regression agree, which is worth noting precisely because they need not. +Example 2 showed the two diverging once the aggregation was estimated rather than imposed. + +The example still illustrates the mechanics that matter. +The `name` refers to the block's *fixed* feature only: the interaction multiplies the macro variable with the aggregate `A_ai_exposure`, not with the activity random effects, which continue to enter additively. +A well-specified cross-level interaction that returns a null is itself informative — it says the aggregate's effect is stable across this dimension of context, rather than leaving the question unasked. [↑ Back to top](#top) diff --git a/vignettes/examples.Rmd.orig b/vignettes/examples.Rmd.orig index f97de59..948f3d1 100644 --- a/vignettes/examples.Rmd.orig +++ b/vignettes/examples.Rmd.orig @@ -34,7 +34,7 @@ knitr::opts_chunk$set( This vignette presents seven examples that show how the multiple-membership multilevel model (MMMM) can be applied to network, spatial, and aggregation problems. The first three cover the additive micro-macro link: peer influence in a friendship network, neighbourhood effects on home values, and how coalition parties shape government survival. -The last four continue the coalition example to showcase aggregation beyond the weighted mean: distributional features (`fn("var")`), estimating the aggregation function itself (`fn("smax", kappa = est())`), cross-level interactions through named blocks, and heterogeneous member effects (`re(1 + x)`). +The last four go beyond the weighted mean to showcase distributional features (`fn("var")`), estimating the aggregation function itself (`fn("smax", kappa = est())`), cross-level interactions through named blocks, and heterogeneous member effects (`re(1 + x)`). # 1. All friends, or just your best friend? (network regression) @@ -62,50 +62,53 @@ The model uses the following variables: | `rank` | weight | Friendship closeness (1 = best friend, 5 = fifth-closest) | | `n` | weight | Number of friends nominated by the ego | -Two models are fit and compared. -The economics standard for this kind of network problem is the linear-in-means model: every friend carries equal weight, so what matters is the average across all of them, implying that each friend exerts the same influence. -The alternative is that influence is concentrated: a single close friend drives most of the effect while looser ties matter little. -`bml` fits both and compares them directly, changing only one line of the weight function. +Three models are fit and compared, tracing a spectrum from the most concentrated weighting rule to the most diffuse. +At one end, influence is concentrated: a single close friend drives the effect while looser ties matter little. +At the other is the economics standard for this kind of network problem, the linear-in-means model: every friend carries equal weight, so what matters is the average across all of them. +Between the two sits a graded rule in which closeness matters but no friend is discarded. +All three are fixed weighting rules, nothing inside `w()` is estimated, so the comparison isolates the shape of the aggregation, changing only one line of the weight function each time. -## Model 1: linear-in-means +## Model 1: best friend only -Every friend receives equal weight, `w ~ 1/n`, so the peer term is the simple average of all nominated friends' Wave 1 smoking. +Only the closest-ranked friend contributes; all others are dropped. +`rank == min(rank)` evaluates to `TRUE` for the closest-ranked friend within each ego's friend set (rank 1), placing all weight on that friend. +With `scale = TRUE` the weight is renormalised to 1 within each ego, so the peer term becomes that single friend's smoking. ```{r, eval = FALSE} -mod_lim <- +mod_bf <- bml( - smoking_w2 ~ smoking_ego + gender_ego + # outcome ~ ego-level predictors - mm( # multiple-membership term (the peers) - id = id(alter, ego), # member = alter (friend), group = ego - vars = vars(smoking_alter), # member variable to aggregate - w = w(~ 1/n, scale = TRUE), # equal weights, renormalised to sum to 1 - fn = fn("sum"), # aggregation function: the weighted mean - RE = TRUE # member-level random effect + smoking_w2 ~ smoking_ego + gender_ego + + mm( + id = id(alter, ego), + vars = vars(smoking_alter), + w = w(~ rank == min(rank), scale = TRUE), # all weight on the closest friend + fn = fn("sum"), # aggregation function: the weighted mean + RE = TRUE ), - family = gaussian(), # continuous outcome + family = gaussian(), data = cils_long ) ``` ```{r, echo = FALSE} -mod_lim <- .load("mod_lim") +mod_bf <- .load("mod_bf") ``` -## Model 2: best friend only +## Model 2: graded decay -Only the closest-ranked friend contributes; all others are dropped. -`rank == min(rank)` evaluates to `TRUE` for the closest-ranked friend within each ego's friend set (rank 1), placing all weight on that friend. -With `scale = TRUE` the weight is renormalised to 1 within each ego, so the peer term becomes that single friend's smoking. +The best-friend rule is an extreme as it throws away four of the five nominations. +A softer version keeps every friend but lets closeness matter (`w ~ 1/rank`) +gives the best friend weight 1, the second-closest 1/2, and so on down to 1/5. ```{r, eval = FALSE} -mod_bf <- +mod_decay <- bml( smoking_w2 ~ smoking_ego + gender_ego + mm( id = id(alter, ego), vars = vars(smoking_alter), - w = w(~ rank == min(rank), scale = TRUE), # all weight on the closest friend - fn = fn("sum"), # same aggregation function as Model 1 + w = w(~ 1/rank, scale = TRUE), # closeness-graded weights + fn = fn("sum"), RE = TRUE ), family = gaussian(), @@ -114,30 +117,60 @@ mod_bf <- ``` ```{r, echo = FALSE} -mod_bf <- .load("mod_bf") +mod_decay <- .load("mod_decay") +``` + +## Model 3: linear-in-means + +Every friend receives equal weight, `w ~ 1/n`, so the peer term is the simple average of all nominated friends' Wave 1 smoking. + +```{r, eval = FALSE} +mod_lim <- + bml( + smoking_w2 ~ smoking_ego + gender_ego + # outcome ~ ego-level predictors + mm( # multiple-membership term (the peers) + id = id(alter, ego), # member = alter (friend), group = ego + vars = vars(smoking_alter), # member variable to aggregate + w = w(~ 1/n, scale = TRUE), # equal weights, renormalised to sum to 1 + fn = fn("sum"), # aggregation function: the weighted mean + RE = TRUE # member-level random effect + ), + family = gaussian(), # continuous outcome + data = cils_long + ) +``` + +```{r, echo = FALSE} +mod_lim <- .load("mod_lim") ``` -## Comparing the two models +## Comparing the three models `bmlCompare()` lays out the coefficient estimates and fit statistics of several models side by side, one column per model, with readable labels supplied through `labels`. ```{r} bmlCompare( - "Linear-in-means" = mod_lim, "Best friend only" = mod_bf, + "Graded decay" = mod_decay, + "Linear-in-means" = mod_lim, terms = c("(Intercept)", "smoking_ego", "gender_ego", "A_smoking_alter"), labels = c("Intercept", "Own smoking (W1)", "Gender", "Peers' smoking (W1)") ) ``` -Both models find a positive peer effect: students whose friends smoke more tend to smoke more themselves one year later, over and above their own Wave 1 smoking. -The own-smoking coefficient (about 0.36 in both models) dominates, which is expected since past behaviour is the strongest predictor of future behaviour. +All three models find a positive peer effect: students whose friends smoke more tend to smoke more themselves one year later, over and above their own Wave 1 smoking. +The own-smoking coefficient (about 0.36 across the board) dominates, which is expected since past behaviour is the strongest predictor of future behaviour. + +The peer effect itself depends on how the friend set is aggregated. +Restricting attention to the best friend gives about 0.03 with an interval that touches zero ([-0.00, 0.05]). +Both of the rules that keep every friend give about 0.04 and clear zero (graded decay [0.00, 0.08], linear-in-means [0.00, 0.08]). +Discarding the looser ties does not sharpen the estimate; it loses signal. -The peer effect is present but modest. -Under linear-in-means, averaging across all nominated friends gives a coefficient of about 0.04 (CI [0.00, 0.08]), which just clears zero. -Limiting to the best friend gives about 0.03 (CI [-0.00, 0.05]): a smaller point estimate with a tighter interval that now just touches zero. +The fit statistics fall monotonically as the weighting becomes more diffuse: DIC drops from 18,700 for the best-friend rule to 17,577 for graded decay and 16,964 for linear-in-means. +Each relaxation of the concentration assumption buys a substantial improvement, and the largest single gain comes from not throwing the other four friends away. -On fit, the linear-in-means model is clearly preferred (DIC 17,029 vs 18,463, a gap of over 1,400). +The member-level standard deviation tells the same story from another angle, rising from 0.40 under best-friend weighting to 0.83 and then 0.93. +Under the best-friend rule most nominated friends receive zero weight in every group they belong to, so the data carry little information about their individual effects and the estimated spread shrinks toward the prior. Peer influence on smoking appears to be spread across the friend set rather than concentrated in the single closest tie. ## Cross-validation: which aggregation does the data prefer? @@ -146,38 +179,39 @@ DIC is convenient but crude; PSIS-LOO cross-validation compares the models on th For gaussian outcomes `bml` monitors the pointwise log-likelihood in the generated JAGS model, so `loo()` works directly on the fitted objects, and `loo::loo_compare()` ranks them: ```{r, eval = FALSE} -loo_lim <- loo(mod_lim) -loo_bf <- loo(mod_bf) -loo::loo_compare(loo_lim, loo_bf) +loo_bf <- loo(mod_bf) +loo_decay <- loo(mod_decay) +loo_lim <- loo(mod_lim) +loo::loo_compare(loo_bf, loo_decay, loo_lim) ``` ```{r, echo = FALSE} -loo_lim <- readRDS(file.path(".fits", "loo_lim.rds")) -loo_bf <- readRDS(file.path(".fits", "loo_bf.rds")) +loo_bf <- readRDS(file.path(".fits", "loo_bf.rds")) +loo_decay <- readRDS(file.path(".fits", "loo_decay.rds")) +loo_lim <- readRDS(file.path(".fits", "loo_lim.rds")) ``` ```{r, echo = FALSE} -loo::loo_compare(loo_lim, loo_bf) +loo::loo_compare(loo_bf, loo_decay, loo_lim) ``` -The linear-in-means model comes out on top: the best-friend model loses about 37 points of expected log predictive density (standard error about 10), agreeing with the DIC ranking. -Both criteria point the same way — influence is spread over the whole friend set rather than concentrated in the closest tie. +model1 is best-friend, model2 graded decay, model3 linear-in-means, in the order passed. +PSIS-LOO ranks them as DIC does: the best-friend model loses about 37 points of expected log predictive density (standard error 10, p_worse 1.00), while graded decay sits only 6 points behind linear-in-means (standard error 5, p_worse 0.89), decisive at the bottom of the ladder, close at the top. +The Pareto-k flags bias elpd_diff toward whichever model carries more of them (8 for linear-in-means, 3 for graded decay), so that narrow margin is best read as an upper bound. +Both criteria point the same way: influence is spread over the friend set rather than concentrated in the closest tie. -A posterior predictive check makes sure the preferred model reproduces the shape of the outcome at all. `pp_check()` overlays replicated outcome distributions on the observed one: ```{r, eval = FALSE} pp_check(mod_lim) ``` -```{r, echo = FALSE, fig.width = 6, fig.height = 3.5, fig.alt = "Posterior predictive check: replicated outcome densities overlaid on the observed smoking distribution"} +```{r ppc-lim, echo = FALSE, fig.width = 6, fig.height = 3.5, fig.alt = "Posterior predictive check: replicated outcome densities overlaid on the observed smoking distribution"} ppc <- readRDS(file.path(".fits", "ppc_lim.rds")) bayesplot::ppc_dens_overlay(ppc$y, ppc$yrep) ``` -The replicated densities are far smoother than the observed distribution, which is dominated by a spike at the top of the smoking scale and carries mass at only a handful of values. -That gap is the gaussian likelihood meeting a discrete, heavily skewed outcome, and it is worth knowing. -It does not bear on the aggregation comparison, since all three models share the same response distribution and differ only in the weight function. +The replicated densities track the observed distribution's spread and skew; the discreteness of the smoking scale shows up as bumps the gaussian model smooths over, which is worth knowing but does not affect the aggregation comparison. [↑ Back to top](#top) @@ -204,7 +238,7 @@ library(bml) boston <- read_sf(system.file("shapes/boston_tracts.gpkg", package = "spData")) |> - select(CMEDV, NOX, CRIM, RM, DIS, AGE, geom) |> + select(CMEDV, NOX, CRIM, RM, DIS, AGE, LSTAT, geom) |> st_transform(crs = 5070) |> mutate( tid = row_number(), @@ -231,13 +265,9 @@ boston_df <- select(-CMEDV, -lnCMEDV, -geom) |> rename_with(~ paste0(.x, "_nb")), by = c("tid_nb" = "tid_nb") - ) - -boston_df2 <- boston_df |> - mutate( - d_CRIM = as.numeric(scale(log1p(abs(CRIM - CRIM_nb)))), # log first: crime is right-skewed - d_AGE = as.numeric(scale(abs(AGE - AGE_nb))) - ) + ) |> + # aggregation variable only: LSTAT enters no formula, just the weight function + mutate(d_LSTAT = as.numeric(scale(abs(LSTAT - LSTAT_nb)))) ``` The data are the 1970 Boston Standard Metropolitan Statistical Area census tracts shipped with `spData`. @@ -274,6 +304,7 @@ mod_bml <- RE = TRUE # neighbour-level random effect ), family = gaussian(), + iter = 5000, warmup = 500, chains = 3, seed = 1, data = boston_df ) ``` @@ -282,57 +313,65 @@ mod_bml <- mod_bml <- .load("mod_bml") ``` -## Parameterised weights: similarity across covariates +## Parameterised weights: social similarity -Equal weighting assumes every neighbour matters the same regardless of how similar it is to the focal tract. -A natural alternative is that tracts are more strongly influenced by neighbours that resemble them, a spatial homophily effect. -Rather than collapse similarity into a single number, the weight is allowed to depend on the dissimilarity in each covariate separately, using the functional form from Rosche (2026): +Equal weighting assumes every adjacent tract matters the same, regardless of how +much it resembles the focal tract. +A natural alternative is that spillovers run more strongly between tracts that +are alike socially, social distance layered on top of physical adjacency. +One parameter is enough to test it: $$ -w_{ij} = \frac{1}{1 + (n_i - 1)\exp\!\bigl(-(b_0 + b_1 \cdot d^{\text{CRIM}}_{ij} + b_2 \cdot d^{\text{AGE}}_{ij})\bigr)} +w_{ij} \propto \exp\!\bigl(-b_1 \cdot d^{\text{LSTAT}}_{ij}\bigr) $$ -Each `d` is the standardised absolute difference between a focal tract and its neighbour on that covariate. -When all the `b`'s are zero this collapses to `1/n_i`, the equal-weight baseline. -A negative coefficient means neighbours that are similar on that covariate (low `d`) receive more weight; a positive coefficient means dissimilar neighbours dominate. -Letting the two dissimilarities enter on their own lets the model decide which kind of similarity drives the aggregation, instead of imposing a single combined measure. +where $d^{\text{LSTAT}}_{ij}$ is the standardised absolute difference between +tract $i$ and neighbour $j$ in the share of lower-status population. +At $b_1 = 0$ the weights collapse to $1/n_i$ and the equal-weight baseline is +recovered exactly, so the baseline is nested inside this model. +Positive $b_1$ means socially similar neighbours carry more weight. +`LSTAT` appears nowhere else in the model — not among the own-tract covariates, +not in `vars()`, so it acts purely as an aggregation variable. ```{r, eval = FALSE} -mod_bml_w <- +mod_bml_lstat <- bml( lnCMEDV ~ NOX + CRIM + RM + DIS + AGE + mm( id = id(tid_nb, tid), vars = vars(NOX_nb + CRIM_nb + RM_nb + DIS_nb + AGE_nb), - # weight as a function of covariate dissimilarity; nests 1/n when all b's are 0 - w = w(~ 1 / (1 + (n - 1) * exp(-(b0 + b1 * d_CRIM + b2 * d_AGE))), scale = TRUE), + # weight falls with social dissimilarity; nests 1/n at b1 = 0 + w = w(~ exp(-b1 * d_LSTAT), scale = TRUE), fn = fn("sum"), RE = TRUE ), family = gaussian(), - prior = prior(normal(0, 1), class = "w"), # weakly informative; prevents exp() overflow - data = boston_df2 + prior = prior(normal(0, 1), class = "w"), # weakly informative; keeps exp() stable + iter = 5000, warmup = 500, chains = 3, seed = 1, + data = boston_df ) ``` ```{r, echo = FALSE} -mod_bml_w <- .load("mod_bml_w") +mod_bml_lstat <- .load("mod_bml_lstat") ``` -The estimated weight-function parameters are: - ```{r} bmlCompare( - "Similarity weights" = mod_bml_w, + "Social similarity" = mod_bml_lstat, component = "weights", - terms = c("w[b0] (mm.1)", "w[b1] (mm.1)", "w[b2] (mm.1)"), - labels = c("Weight intercept (b0)", "Crime dissimilarity (b1)", "Age dissimilarity (b2)") + terms = c("w[d_LSTAT] (mm.1)"), + labels = c("Social dissimilarity (b1)") ) ``` -The crime-dissimilarity coefficient is about −1.76 (CI [−2.59, −1.16]), clearly negative, so neighbours with similar crime levels carry more weight. -The age-dissimilarity coefficient is about 0.71 (CI [0.07, 1.52]), pointing the other way: neighbours with different age profiles carry more weight. -The model picks up two kinds of similarity at once, in opposite directions. +The estimate is about 0.59 with a 95% interval of [0.40, 0.80], comfortably +away from zero. +Because `d_LSTAT` is standardised, a one-standard-deviation increase in social +dissimilarity multiplies a neighbour's unnormalised weight by +$\exp(-0.59) \approx 0.55$, roughly halving its influence. +Adjacency alone does not determine who counts: among neighbours that all share +a border, the socially similar ones dominate the aggregate. ## Do the weights actually vary with similarity? @@ -341,10 +380,10 @@ social dissimilarity from the focal tract. If social homophily drives the weights, low-`d_LSTAT` pairs should sit toward high weights and high-`d_LSTAT` pairs toward low weights. -```{r, fig.width = 6, fig.height = 4, echo = FALSE, fig.alt = "Estimated neighbour weight plotted against social dissimilarity"} +```{r weight-dissim, fig.width = 6, fig.height = 4, echo = FALSE, fig.alt = "Estimated neighbour weight plotted against social dissimilarity"} w_mat <- mod_bml_lstat$w[[1]] # tracts x max-neighbours, NA padded -weight_df <- boston_df2 |> +weight_df <- boston_df |> group_by(tid) |> mutate(pos = row_number()) |> ungroup() |> @@ -398,8 +437,8 @@ relabel <- function(t) { # Two bml models: fixed effects + weight parameters tab_bml <- bind_rows( - tidy(mod_bml, component = "all") |> mutate(model = "Equal weights (1/n)"), - tidy(mod_bml_w, component = "all") |> mutate(model = "Similarity weights") + tidy(mod_bml, component = "all") |> mutate(model = "Equal weights (1/n)"), + tidy(mod_bml_lstat, component = "all") |> mutate(model = "Social similarity") ) |> filter(component %in% c("fixed", "weights")) |> transmute(model, term = relabel(term), estimate, conf.low, conf.high) @@ -422,7 +461,7 @@ tab_sdem <- tibble::tibble( term_levels <- c("Intercept", "NOX", "CRIM", "RM", "DIS", "AGE", "NOX (nb)", "CRIM (nb)", "RM (nb)", "DIS (nb)", "AGE (nb)", - "w[b0]", "w[b1]", "w[b2]") + "w[d_LSTAT]") label_map <- c( "Intercept" = "Intercept", @@ -436,9 +475,7 @@ label_map <- c( "RM (nb)" = "Rooms (neighbours)", "DIS (nb)" = "Distance (neighbours)", "AGE (nb)" = "Pre-1940 (neighbours)", - "w[b0]" = "Weight intercept (b0)", - "w[b1]" = "Crime dissimilarity (b1)", - "w[b2]" = "Age dissimilarity (b2)" + "w[d_LSTAT]" = "Social dissimilarity (b1)" ) bind_rows(tab_bml, tab_sdem) |> @@ -456,16 +493,22 @@ Model fit (the SDEM is a maximum-likelihood model and has no DIC, so only the tw ```{r, echo = FALSE} tibble::tibble( - Model = c("Equal weights (1/n)", "Similarity weights"), - DIC = c(glance(mod_bml)$DIC, glance(mod_bml_w)$DIC) + Model = c("Equal weights (1/n)", "Social similarity"), + DIC = c(glance(mod_bml)$DIC, glance(mod_bml_lstat)$DIC) ) |> knitr::kable(digits = 0) ``` -The own and neighbour coefficients from the equal-weight bml model line up with the SDEM, the reassurance worth having: the bml baseline reproduces the classical benchmark. -If equal-weight neighbour effects were all that was needed, `errorsarlm` would serve, and it would be faster. -What the parameterised weight function adds is the aggregation itself as something to estimate, which the SDEM cannot do. -On fit, the equal-weight model keeps the lower DIC (278 vs 295): the similarity structure in the weights is real — both dissimilarity coefficients sit away from zero — but the added flexibility does not pay for itself in overall fit here. The SDEM, a maximum-likelihood model, has no DIC, so it serves only as a coefficient yardstick. +The equal-weight bml model lines up closely with the SDEM, air quality at -0.105 against -0.112, crime at -0.061 against -0.067, rooms at 0.157 against 0.169. If equal-weight neighbour effects were all that was needed, errorsarlm would serve, and it would be faster. + +Estimating the aggregation changes the picture. +Letting weights fall with social dissimilarity lowers the DIC from 292 to 229, and the residual standard deviation from 0.128 to 0.114 which is an improvement in fit, not merely a reshuffling of the complexity penalty. +The member-level standard deviation is essentially unchanged (0.386 to 0.369), so the multiple-membership structure is still doing its work; what has changed is which neighbours it reads. + +The coefficients shift accordingly: the own-tract air-quality effect halves, from -0.105 to -0.059, while the neighbour rooms effect rises from 0.07 to 0.12. +This is the point of estimating the weights rather than imposing them. +Under equal weighting, part of what looks like an own-tract air-quality effect is really the influence of socially similar neighbours, misattributed because the aggregate averaged over every adjacent tract alike. +The departure from the SDEM here is expected: the benchmark can only ever apply the fixed weights it is given, whereas the weight function is exactly what this model estimates. [↑ Back to top](#top) @@ -673,7 +716,8 @@ monetPlot(mod_pm_n, "b.w.1", label = "b1: 1 = all weight on PM party, 0 = equal ``` The posterior density is a single hump centred at about 0.23, just right of the zero line, with most of its mass to the right but a clear slice left of zero, so zero stays inside the 95% interval. -In the trace panel the three chains overlap and cover the same range with no separation — the visual counterpart to the clean diagnostics above. +The figures printed along the bottom axis are the 5th, 50th and 95th percentiles, so they sit inside the 95% interval reported above. +In the trace panel the three chains overlap and cover the same range with no separation, the visual counterpart to the clean diagnostics above. ## brms-style accessors @@ -693,60 +737,136 @@ posterior::summarise_draws(posterior::subset_draws(draws, variable = "b.w.1")) # 4. Does the average matter, or the spread? (emergent features) -The three examples so far all aggregated member attributes with a weighted *mean*: the additive micro-macro link. -But a coalition whose parties are uniformly moderate on some trait and a coalition mixing one extreme party with several counterbalancing ones can have the *same* mean. -If what breaks governments is internal contrast rather than the average level, the mean is silent about the mechanism. +The first three examples asked how friends, neighbours, and coalition partners combine. +This example and the two that follow ask the same of work: an occupation is not a single job but a bundle of activities, and the same activity turns up in many occupations at once. +The question is whether an occupation's fortunes follow the average of what its activities expose it to, or the shape of that bundle. + +## The data + +The data pair O*NET's occupation–activity structure with activity-level AI exposure scores and BLS wage series. +Each row is one activity's place in one occupation: 17,537 occupation–activity pairs spanning 894 occupations and 2,080 activities. +An occupation draws on about 20 activities, and an activity is used by about 8 occupations, up to 91 for the most general ones. + +| Variable | Level | Meaning | +|------------------|------------|-------------------------------------------------------| +| `occupation_id` | id | Occupation identifier (the group) | +| `member_id` | id | Work activity identifier (the member) | +| `wage_level` | outcome | Log median annual wage | +| `wage_growth` | outcome | Log change in median annual wage | +| `employment_growth` | outcome | Log change in occupational employment | +| `baseline_wage` | occupation | Median annual wage at the start of the growth window | +| `education` | occupation | Typical education needed for entry, ordinal 0–6 | +| `job_zone` | occupation | O*NET Job Zone, 1–5, a preparation-level band | +| `ai_exposure` | activity | The activity's exposure to AI (standardised) | +| `importance_raw` | activity | The activity's O*NET importance within the occupation | + +Unlike the coalition models, the weights here are observed rather than imposed. +`w(~ importance_raw, scale = TRUE)` lets each activity count in proportion to how important O*NET records it as being for that occupation, renormalised to sum to one within each occupation. +Because activities are shared across as many as 91 occupations, the activity random effects couple occupations that an occupation-level regression would treat as independent. + +## Mean and spread + +Two occupations can share an average exposure and be built very differently. +One spreads moderate exposure evenly across every activity it draws on; the other combines a few heavily exposed activities with several that are barely exposed at all. +If what matters is that contrast rather than the average level, the mean is silent about it. `fn()` selects the aggregation function a block applies to the weighted member records. -`fn("sum")` (used in every example so far) produces the weighted mean `A_finance`; `fn("var")` produces the weighted variance `V_finance`, a feature of the whole set. -Blocks stack, so both features can enter one model, each with its own main-model coefficient: +`fn("sum")` (used in every example so far) produces the weighted mean `A_ai_exposure`; `fn("var")` produces the weighted variance `V_ai_exposure`, a feature of the whole set. +Blocks stack, so both features can enter one model, each with its own main-model coefficient. +Occupation-level controls, required education and O*NET Job Zone are held throughout. + +The baseline is the mean on its own: ```{r, eval = FALSE} -mod_var <- +mod_mean <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + + wage_level ~ 1 + education + job_zone + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), + fn = fn("sum"), + RE = TRUE + ), + family = gaussian(), + iter = 2000, + warmup = 500, + chains = 3, + seed = 1, + data = onet + ) +``` + +```{r, echo = FALSE} +mod_mean <- .load("mod_mean") +``` + +Adding a second block, identical but for `fn("var")`, gives the spread its own coefficient: + +```{r, eval = FALSE} +mod_spread <- + bml( + wage_level ~ 1 + education + job_zone + + mm( + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), - RE = TRUE # mean block keeps the party random effects + RE = TRUE # mean block keeps the activity random effects ) + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), - fn = fn("var") # spread block: V_finance + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), + fn = fn("var") # spread block: V_ai_exposure ), - family = weibull(), - iter = 5000, + family = gaussian(), + iter = 2000, warmup = 500, chains = 3, - seed = 1, - data = coalgov + seed = 1, + data = onet ) ``` ```{r, echo = FALSE} -mod_var <- .load("mod_var") +mod_spread <- .load("mod_spread") ``` ```{r} bmlCompare( - "Mean only" = mod_eq, - "Mean + spread" = mod_var, - terms = c("A_finance", "V_finance"), - labels = c("Finance (mean)", "Finance (spread)") + "Mean only" = mod_mean, + "Mean + spread" = mod_spread, + terms = c("A_ai_exposure", "V_ai_exposure"), + labels = c("Exposure (mean)", "Exposure (spread)") ) ``` -The mean effect `A_finance` is essentially unchanged by adding the spread term (about -0.31 in both models), which is the first thing to check: the two features answer different questions rather than competing for the same variation. -The spread coefficient `V_finance` is about -0.02 with a 95% interval of [-0.27, 0.23] — a null. -For these data, what matters about a coalition's financial exposure is its level, not its internal contrast, and the DIC agrees (3864 for the mean-only model vs 3868 with the spread term). -A null on the spread is itself informative: it is the empirical license behind the mean-only models of Example 3, checked rather than assumed. +```{r, eval = FALSE} +loo_mean <- loo(mod_mean) +loo_spread <- loo(mod_spread) +loo::loo_compare(loo_mean, loo_spread) +``` + +```{r, echo = FALSE} +loo_mean <- readRDS(file.path(".fits", "loo_mean.rds")) +loo_spread <- readRDS(file.path(".fits", "loo_spread.rds")) +``` + +```{r, echo = FALSE} +loo::loo_compare(loo_mean, loo_spread) +``` + +The mean effect `A_ai_exposure` is barely moved by adding the spread term (0.064 against 0.070), which is the first thing to check: the two features answer different questions rather than competing for the same variation. +The spread coefficient `V_ai_exposure` is -0.096 with a 95% interval of [-0.165, -0.027], comfortably clear of zero. +The fit statistics are less decisive than the coefficient itself. +DIC falls sharply, from 2633 to 2316, but the cross-validation comparison separates the two models by only 2.2 points of expected log predictive density against a standard error of 3.3, and flags the gap as too small to read. +Roughly a third of the observations exceed the Pareto-k threshold in that comparison, so loo is straining here; the coefficient carries this result rather than the model ranking. +The residual standard deviation holds at 0.134 and the activity-level standard deviation barely moves (0.844 to 0.837), so the spread term is not absorbing variation the mean block was already carrying. +Two occupations with the same average exposure are not equivalent: the one whose activities are unevenly exposed pays less. Both aggregation functions read the *same* weighted member records; only the reduction differs. -That is the sense in which the variance term is emergent: it is a property of the set that no single party's contribution can carry. +That is the sense in which the variance term is emergent: it is a property of the set that no single activity's contribution can carry. [↑ Back to top](#top) @@ -761,56 +881,91 @@ $$ $$ which runs from the *minimum* of the member attributes (as $\kappa \to -\infty$) through the weighted *mean* (at $\kappa \to 0$) to the *maximum* (as $\kappa \to +\infty$). -With `kappa = est()` the data choose the point on that path: is government survival driven by the coalition's average financial exposure, by its least exposed party (weakest link), or by its most exposed one? +With `kappa = est()` the data choose the point on that path: does an occupation's wage follow the average exposure of its activities, its most exposed activity, or its least exposed one? ```{r, eval = FALSE} mod_smax <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + + wage_level ~ 1 + education + mm( - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("smax", kappa = est()) # kappa < 0: min-like, kappa > 0: max-like ) + mm( - id = id(pid, gid), - w = w(~ 1/n, scale = TRUE), + id = id(member_id, occupation_id), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), - RE = TRUE # party random effects in their own block + RE = TRUE # activity random effects in their own block ), - family = weibull(), - iter = 5000, + family = gaussian(), + prior = prior(normal(0, 1), class = "fn"), + iter = 2000, warmup = 500, chains = 3, - seed = 1, - data = coalgov + seed = 1, + data = onet ) ``` ```{r, echo = FALSE} -mod_smax <- .load("mod_smax") +mod_mean_edu <- .load("mod_mean_edu") +mod_smax <- .load("mod_smax_onet") ``` Shape parameters like `kappa` are not coefficients: they are reported in their own component (`fn[...]`), never in the coefficient table, and take priors through `prior(..., class = "fn")`. `get_prior()` lists what is settable. +The baseline column below is a mean-only fit carrying the same control as the smooth-max model, education alone. + +```{r} +bmlCompare( + "Mean" = mod_mean_edu, + "Smooth max" = mod_smax, + terms = c("A_ai_exposure", "smax_ai_exposure"), + labels = c("Exposure (mean)", "Exposure (smooth max)") +) +``` + +```{r, eval = FALSE} +loo_mean_edu <- loo(mod_mean_edu) +loo_smax <- loo(mod_smax) +loo::loo_compare(loo_mean_edu, loo_smax) +``` + +```{r, echo = FALSE} +loo_mean_edu <- readRDS(file.path(".fits", "loo_mean_edu.rds")) +loo_smax <- readRDS(file.path(".fits", "loo_smax_onet.rds")) +``` + +```{r, echo = FALSE} +loo::loo_compare(loo_mean_edu, loo_smax) +``` + The posterior of `kappa` answers the question directly: -```{r, fig.alt = "Posterior density and MCMC trace for the smax shape parameter kappa"} -monetPlot(mod_smax, "fn.kappa.1", label = "kappa: < 0 weakest link, 0 mean, > 0 strongest link") +```{r monet-kappa, fig.alt = "Posterior density and MCMC trace for the smax shape parameter kappa"} +monetPlot(mod_smax, "fn.kappa.1", label = "kappa: < 0 least exposed activity, 0 mean, > 0 most exposed") ``` -The feature's coefficient is clearly negative (`smax_finance` about -0.24 [-0.52, -0.06]), so the exposure feature matters — but the posterior for `kappa` is centred near 2.5 with a 95% interval of roughly [-6, 11], spanning weakest-link through strongest-link readings. -Two things follow. -First, the caveat that belongs with this estimand: `kappa` reaches the outcome only through the feature, so it is identified only insofar as differently-shaped aggregates fit differently — and with small coalitions (most have two to four parties), the min, mean, and max of finance are highly correlated, so the likelihood is nearly flat in `kappa`. -Second, a diffuse posterior here is not a failure of the sampler; it is the honest statement that these data cannot pin down the aggregation function, which is exactly what making `f` an estimand is for. +The feature's coefficient is 0.126 [0.067, 0.184], and `kappa` is -1.57 with a 95% interval of [-2.73, -0.40]. +Because `smax` collapses to the weighted mean at $\kappa = 0$, an interval clear of zero is a direct test rejecting the mean as the aggregation rule for these data, and 99.8% of the posterior mass sits below zero. +The negative sign places the aggregate toward the minimum: what tracks an occupation's wage is closer to its *least* exposed activity than to its average one. +Cross-validation agrees. +The smooth max beats the weighted mean by 8.9 points of expected log predictive density against a standard error of 3.2, better than two standard errors, and DIC moves the same way, from 2643 to 2528. +Here too about a third of the observations exceed the Pareto-k threshold, so the exact margin should be read loosely; the direction is not in doubt. + +`kappa` reaches the outcome only through the feature, so it is identified only insofar as differently-shaped aggregates fit differently. +That is a real constraint: where members are few, the minimum, mean, and maximum of an attribute are nearly the same number and the likelihood is close to flat. +Occupations here draw on about 20 activities each, which is what gives the likelihood enough curvature to locate the shape. [↑ Back to top](#top) # 6. Does context change the aggregate's effect? (cross-level interaction) -Coalition majority status is a government-level (macro) attribute. -Because it is constant across the parties of a government, interacting it with the aggregated finance profile collapses to a product of two group-level quantities: a cross-level interaction. +The education an occupation typically requires is an occupation-level (macro) attribute. +Because it is constant across the activities that make up the occupation, interacting it with the aggregated exposure profile collapses to a product of two group-level quantities: a cross-level interaction. +A natural hypothesis is that required education buffers exposure, that AI exposure weighs less heavily on employment where more schooling is needed. In `bml` this is written by giving the block a `name` and referencing that name in the main formula. The macro variable must also appear as a main effect: @@ -818,35 +973,48 @@ The macro variable must also appear as a main effect: ```{r, eval = FALSE} mod_xl <- bml( - Surv(dur_wkb, event_wkb) ~ 1 + majority + mwc + Afin:majority + + employment_growth ~ 1 + education + baseline_wage + Aexp:education + mm( - name = Afin, # named block: referencable feature - id = id(pid, gid), - vars = vars(finance), - w = w(~ 1/n, scale = TRUE), + name = Aexp, # named block: referencable feature + id = id(member_id, occupation_id), + vars = vars(ai_exposure), + w = w(~ importance_raw, scale = TRUE), fn = fn("sum"), RE = TRUE ), - family = weibull(), + family = gaussian(), iter = 5000, warmup = 500, chains = 3, - seed = 1, - data = coalgov + seed = 1, + data = onet_wg ) ``` ```{r, echo = FALSE} -mod_xl <- .load("mod_xl") +mod_xl <- .load("mod_xl_onet") ``` ```{r} -fixef(mod_xl) +fixef(mod_xl)[c("Aexp", "Aexp:education"), ] ``` -The interaction row `Afin:majority` asks whether the financial-exposure penalty differs between majority and minority governments. -The estimate is about -0.11 [-0.58, 0.36]: no evidence that majority status moderates the exposure penalty. -The name refers to the block's *fixed* feature only — the interaction multiplies `majority` with the aggregate `A_finance`, not with the party random effects, which continue to enter additively. +The `Aexp:education` interaction is -0.009 with a 95% interval of [-0.025, 0.007]. +The point estimate sits in the buffering direction, so occupations needing more schooling do show a slightly weaker exposure effect, but the interval covers zero and the estimate holds at that value across three seeds. +Required education does not measurably change how an occupation's exposure profile bears on its employment growth. + +A single moderator is thin evidence for a null, so the same specification was refit with Job Zone in place of education, O*NET's 1 to 5 banding of how much preparation an occupation needs. +That interaction comes back at 0.001 with a 95% interval of [-0.024, 0.024], centred on zero rather than merely overlapping it. +The two are close cousins as measures of required preparation, so their agreement is a weaker check than two independent moderators would be, but it is the check these data allow. + +Within these data, occupation-level context does not moderate the aggregate exposure effect. +The effect of an occupation's exposure profile is much the same whether the occupation demands a little schooling or a lot. +An ordinary occupation-level regression reaches the same conclusion, and here the multiple-membership model and the naive regression agree, which is worth noting precisely because they need not. +Example 2 showed the two diverging once the aggregation was estimated rather than imposed. + +The example still illustrates the mechanics that matter. +The `name` refers to the block's *fixed* feature only: the interaction multiplies the macro variable with the aggregate `A_ai_exposure`, not with the activity random effects, which continue to enter additively. +A well-specified cross-level interaction that returns a null is itself informative — it says the aggregate's effect is stable across this dimension of context, rather than leaving the question unasked. [↑ Back to top](#top) From 53ed5ab90bf1ec370465c3b178f5b9643e28fffb Mon Sep 17 00:00:00 2001 From: komalnpn Date: Mon, 27 Jul 2026 23:18:39 +0545 Subject: [PATCH 3/4] added the readme for examples page --- vignettes/examples-README.md | 308 +++++++++++++++++++++++++++++++++++ 1 file changed, 308 insertions(+) create mode 100644 vignettes/examples-README.md diff --git a/vignettes/examples-README.md b/vignettes/examples-README.md new file mode 100644 index 0000000..61a0278 --- /dev/null +++ b/vignettes/examples-README.md @@ -0,0 +1,308 @@ +# Building the `examples` vignette + +This note explains how the Examples vignette is built, what data it needs, and where that +data has to live. It is written for someone picking the repository up fresh. + +The short version: the vignette is **precompiled**. The committed `examples.Rmd` contains no +executable code, so it renders for anyone with no data and no JAGS. You only need the data +and the setup below if you want to change a model and rebuild. + +--- + +## 1. Why the vignette is precompiled + +Fitting the fourteen models in this vignette takes about half an hour of JAGS time, and two +of the datasets cannot be redistributed. If the vignette were an ordinary `.Rmd`, every +`R CMD build`, every pkgdown run and every CRAN check would try to refit everything and fail +without the data. + +Precompiling solves both problems. The models are fit once, cached, and the results are baked +into a committed artifact. + +``` +fit_models.R → vignettes/.fits/*.rds → examples.Rmd.orig → precompile.R → examples.Rmd + (JAGS, ~30 min) (git-ignored) (the source) (seconds) (committed) +``` + +Three files do the work, all in `vignettes/`: + +| File | Role | Needs data? | Needs JAGS? | +|---|---|---|---| +| `fit_models.R` | fits every model once, caches to `.fits/` | yes | yes | +| `examples.Rmd.orig` | the **source** vignette; loads cached fits, never fits anything | no | no | +| `precompile.R` | knits `.orig` into the committed `examples.Rmd` | no | no | + +**The committed `examples.Rmd` is a build artifact. Never edit it by hand.** Every code block +in it is inert display text, so an edit there is silently discarded the next time anyone runs +`precompile.R`. Edit `examples.Rmd.orig` instead. + +--- + +## 2. What data the vignette uses + +Four datasets, two of which ship and two of which do not. + +| Example | Data | Ships? | How it is obtained | +|---|---|---|---| +| 1 | CILS4EU Germany, Wave 1 and 2 | **no** | restricted access, see §3 | +| 2 | Boston 1970 census tracts | yes | `spData` package | +| 3, 7 | `coalgov` | yes | this package | +| 4, 5, 6 | O\*NET occupation-activity structure | **no** | built by a Python script, see §4 | + +Examples 2, 3 and 7 therefore rebuild with no setup at all. Examples 1 and 4 through 6 need +the two external datasets. + +--- + +## 3. CILS4EU (Example 1) + +Three Feather files, exactly these names: + +``` +nodedat.feather Wave 1 student records (smoking, gender) +edgedat.feather friendship nominations with closeness rank +nodedat-w2.feather Wave 2 student records (the outcome) +``` + +Put them in one directory **outside this repository** and point at it with an environment +variable. See §5. + +CILS4EU is restricted-access data and must not be committed. `fit_models.R` has no default +path for it, by design. An earlier version fell back to `"data"`, which resolves to the +package's own `data/` directory when run from the repository root, and that directory is +tracked by git and shipped to users. The fallback was removed so a missing environment +variable fails loudly rather than quietly writing restricted data somewhere public. + +--- + +## 4. O\*NET (Examples 4, 5 and 6) + +These examples pair O\*NET's occupation-activity structure with activity-level AI exposure +scores and BLS wage and employment series. The dataset is assembled by +`build_onet_ai_dataset.py`. + +### 4.1 What the vignette reads + +Two Parquet files: + +``` +long_occupation_member_dwa.parquet one row per occupation-activity pair +model_occupation_year_dwa.parquet one row per occupation +``` + +`fit_models.R` reads both and joins them. The long table carries the membership structure, +the importance weights and each activity's AI exposure. The occupation-level outcomes and +moderators live only in the model table, so both files are required. + +**Use the `_dwa` build, not `_task`.** The script writes both. At the task level each task +belongs to exactly one occupation, so there is no multiple membership and the `mm()` term +would add nothing over an ordinary occupation-level regression. At the DWA level the same +work activity recurs across occupations, which is the structure the model needs. The script's +own diagnostic reports this: `multiple_membership_present` is `true` for `_dwa` and `false` +for `_task`, and 97% of activities appear in more than one occupation. + +### 4.2 Regenerating the Parquet files + +Only needed if the underlying sources change. The script expects these raw files: + +``` +onet/Task Ratings.txt task importance ratings, the weights +onet/Tasks to DWAs.txt links each task to its detailed work activities +onet/Job Zones.txt occupation preparation band +onet/Work Activities.txt activity names, used for logging only +OpenAI/full_labelset.tsv Eloundou et al. task-level AI exposure scores +BLS/oesm22nat/national_M2022_dl.xlsx base-year wages and employment +BLS/oesm25nat/national_M2025_dl.xlsx later-year wages and employment +BLS/occupation.xlsx employment projections, sheet "Table 1.2" +``` + +Set the two paths at the top of the script and run it: + +```python +"RAW_DIR": "/abs/path/to/onet/raw_data", +"OUT_DIR": "/abs/path/to/onet/processed_data", +``` + +```bash +python build_onet_ai_dataset.py +``` + +It writes eight files to `OUT_DIR`, including `data_checks_dwa.json`. That file is worth +opening: it reports the counts the vignette's prose asserts, so the text can be checked +against the build without running any models. + +| Vignette says | JSON key | +|---|---| +| 17,537 occupation-activity pairs | `n_member_rows` | +| 894 occupations | `n_occupations` | +| 2,080 activities | `multiple_membership.n_distinct_members` | +| about 20 activities per occupation | `multiple_membership.members_per_occupation_mean` | +| about 8 occupations per activity | `multiple_membership.occupations_per_member_mean` | +| up to 91 | `multiple_membership.occupations_per_member_max` | + +`occupations_matched_to_oews` is 854, which is the N reported in Examples 4 and 5. Nothing is +lost beyond the OEWS wage match. + +--- + +## 5. Where to put the data and how to point at it + +Keep both datasets outside the repository. Nothing then depends on an ignore rule holding. + +``` +~/research-data/ +├── cils/ +│ ├── nodedat.feather +│ ├── edgedat.feather +│ └── nodedat-w2.feather +└── onet/ + ├── raw_data/ # only if regenerating the parquets + └── processed_data/ # the two _dwa parquets live here +``` + +Then set two environment variables in `~/.Renviron`, which R reads at startup: + +``` +BML_CILS_DIR=/abs/path/to/research-data/cils +ONET_DATA_DIR=/abs/path/to/research-data/onet/processed_data +``` + +No quotes, no spaces around `=`, and absolute paths rather than `~`, which `arrow` does not +expand. Restart R, then confirm: + +```r +Sys.getenv(c("BML_CILS_DIR", "ONET_DATA_DIR")) +``` + +Both are required. `fit_models.R` stops with a named message if either is missing. + +Two things about that file are worth knowing in advance, because both fail silently. + +`~/.Renviron` means the file in your home directory. If you create it from a shell with the +path quoted, as in `"~/.Renviron"`, the tilde does not expand and you get a literal directory +named `~` inside whatever directory you happened to be in, with the file inside it. R never +looks there. The symptom is simply that both variables come back empty, with nothing to +indicate the file exists in the wrong place. `cat /Users/yourname/.Renviron` confirms it is +where you think it is. The easiest way to avoid the problem is +`Rscript -e 'usethis::edit_r_environ()'`, which opens the right file. + +R reads `.Renviron` once, at startup. Editing it in a running session has no effect, so +restart R before checking `Sys.getenv()`. + +--- + +## 6. Requirements + +**JAGS** must be installed at system level, plus the `rjags` R package. + +For `fit_models.R`: `dplyr`, `spData`, `sf`, `spdep`, `bml`, `arrow`, `loo`. + +For `precompile.R`, additionally: `spatialreg`, `ggplot2`, `bayesplot`, `tidyr`, `tibble`, +`posterior`, `knitr`. + +`bayesplot` is easy to miss. Without it the posterior predictive figure in Example 1 renders +as an error message rather than a plot, and nothing else fails, so the build looks clean. + +--- + +## 7. Rebuilding + +```bash +cd /path/to/bml + +# 1. clear stale figures. REQUIRED if any chunk was added or removed. +# Figures are named by chunk position, so adding a chunk renames every +# downstream image. Old files keep their old names, the new tags point +# at new ones, and you get broken images with nothing in the build log. +rm -rf vignettes/examples-figures/ + +# 2. fit. About 30 minutes. Needs JAGS and both environment variables. +Rscript vignettes/fit_models.R + +# 3. precompile. Seconds. No JAGS, no data. +Rscript -e 'source("vignettes/precompile.R")' + +# 4. render, to check it +Rscript -e 'rmarkdown::render("vignettes/examples.Rmd")' +``` + +Step 2 writes 24 files into `vignettes/.fits/`: fourteen fitted models, seven `loo` objects, +one posterior predictive sample, and two raw-data caches. It stops early with a specific +message if a required column is missing from the O\*NET tables, or if the `smax` shape +parameter did not survive caching. + +If step 4 fails on pandoc from a plain shell, RStudio bundles a copy: + +```bash +export RSTUDIO_PANDOC="/Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools" +``` + +Knitting in RStudio with Ctrl+Shift+K works too. Note that `.Rmd` files should be knitted +rather than previewed through Quarto, since this is an R Markdown vignette and `quarto +preview` rejects it. + +Only steps 1, 3 and 4 are needed for a prose-only change. Step 2 is required only when a +model's specification, data or seed changes. + +--- + +## 8. Checking a rebuild + +The prose quotes numbers that the rebuild has to reproduce. If any of these move, something +in the setup differs. + +| Check | Expected | +|---|---| +| Ex 1 DIC | 18,700 / 17,577 / 16,964 | +| Ex 2 DIC | 292 / 229 | +| Ex 2 social dissimilarity `b1` | 0.592 [0.403, 0.797] | +| Ex 3 DIC | 3864 / 3868 / 3854 | +| Ex 4 exposure spread `V_ai_exposure` | -0.096 [-0.165, -0.027] | +| Ex 5 `fn[kappa]` | -1.57 [-2.73, -0.40] | +| Ex 6 `Aexp:education` | -0.009 [-0.025, 0.007] | + +A few figures in the prose appear in no table, mainly random-effect standard deviations. +`vignettes/check_numbers.R` reads them straight out of the cached fits and prints them, so +they can be verified without refitting anything. + +Open the rendered HTML and confirm four figures appear. A missing figure is the failure mode +that step 1 prevents and it is silent in the log. + +--- + +## 9. What is committed and what is not + +Committed: `examples.Rmd.orig`, `fit_models.R`, `precompile.R`, `examples.Rmd`, and +`examples-figures/`. + +Not committed: `vignettes/.fits/`. Two independent rules keep it out, and both are needed. + +- `.gitignore` has `vignettes/.fits/` +- `.Rbuildignore` has `^vignettes/\.fits` + +`R CMD build` copies the whole `vignettes/` directory into the source tarball and does not +read `.gitignore`, so without the second rule the cache ships inside the tarball. That matters +because the cache is not only fitted parameters. `cils_raw.rds` and `onet_raw.rds` are full +copies of the source tables, and `ppc_lim.rds` holds the observed outcome vector for 4,002 +students. + +Worth running once after any change to those rules: + +```bash +R CMD build . && tar -tzf bml_*.tar.gz | grep -Ei 'fits|parquet|feather|raw_data' +``` + +It should return nothing. + +--- + +## 10. A known limitation + +`coalgov` ships, so Examples 3 and 7 are fully reproducible by anyone. Examples 1 and 4 +through 6 are not, because their data cannot be redistributed. The rendered vignette is +complete for readers, but a user cannot rerun `fit_models.R` themselves. + +For the O\*NET examples this is fixable if desired. A trimmed occupation-activity table with +only the columns the models use compresses to well under 1 MB as an `.rda`, which would make +Examples 4 through 6 as reproducible as Example 3. The CILS4EU restriction is not something +the package can work around. From 36b82cbb6895201100308b0f595e0bdec2624c3c Mon Sep 17 00:00:00 2001 From: Ben Rosche Date: Tue, 28 Jul 2026 17:20:29 +0200 Subject: [PATCH 4/4] revised settings --- .vscode/settings.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..8403fcb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "*.Rmd.orig": "rmd" + } +}