From 4d22de41a54d7d7af8cbd3012c413e242e87b98d Mon Sep 17 00:00:00 2001 From: Chris Jackson Date: Mon, 22 Apr 2024 17:04:05 +0100 Subject: [PATCH] Update website --- docs/articles/distributions.pdf | Bin 223691 -> 263421 bytes docs/articles/standsurv.html | 2 +- .../figure-html/unnamed-chunk-20-1.png | Bin 97265 -> 96947 bytes .../figure-html/unnamed-chunk-20-2.png | Bin 83347 -> 83497 bytes docs/news/index.html | 2 +- docs/pkgdown.yml | 2 +- docs/reference/GenF.html | 2 +- docs/reference/GenF.orig.html | 2 +- docs/reference/Survsplinek.html | 2 +- docs/search.json | 2 +- 10 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/articles/distributions.pdf b/docs/articles/distributions.pdf index 8753f7fd40f6e843b0634affeb7793a1f1e89390..0d1fa1d9542564bb40a5278ec01c86bef5042ddb 100644 GIT binary patch delta 175478 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

(Umacb(#68aCm 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 E0TQA?vH$=8 delta 135247 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

{>5tY|*FU@DP8F-j3=y}@ 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⪼shq~*VWS&m$*$De}amg275@z z0W%#WB0Eh~oq@K@(GnunjUDrUBa_-pb(Rvd&x`{v=rQG(SRJR z7}a@P8Ap0h8qcrzC~MgR275bphwgHJ&YdcFIz6*y2u|qfYq1A7^h(Xr_Hm zsUkgcAnTD_^0B>#c)5gDxxL(*zTj{RyeVdZ@1BF@mGQRiy*w@9w7Q;|0El4NA_s0( zu9`cwDfIq8Zh5|G+W8edSW0Xeeve)GVfwH1qCT-(k2S8143Mh1NGuf8465$gfa;xB zharAcN}4uLYjo=+Yjf^qs>XZZmoio`W71_W^P{rJk)Wn%=w1wmV^_yoQCLmDeufRk z0#}tGUkIEmH8&jr{KV7R0M<+rYD8I`e5}bar>m9msB>BBG#EGoXzMgj9Ctx8-e}JR z?o`{VN~AHWoD!XzI(c$-;zrU^JeosOGniL7rh{!I2 zVF62_sk^t!b=g+JPJ(;z0ahwylpxt{{QH+Dj_!#^p<58h$oj2Sauj&z z0hn|M^>&(8X%Moh#M~0g+{2muq}jxj$KHxtV6=pg&d>;-xv_OKW^2yKMpcM8gO+G< z6?u<{r%rW_IAlYM@;`o^&EfjG*DRsVAuo@Gmr8uVui^FRRO$hXKXnKF=0(7QD6)J^ zSyLBKYP{hNodWj*tiZoKipyH6ofzU_-tU@cc zp|&5+nY6{nq>Vqqi-kCe@bw+kdP^^s!g6n3h)qpw7aV zsLW*BCfelgZcw2(X!X3Wg?r~|X(+kjJ&B+54F+@{GEf*~4ah4q6G>@7W2z02QQmcJ zqk_T49dG+p$w=LQxXMWS6=r#-oQw1XrX!*EbWQ{l{t3}2Jd^p&itF5mtx^q7+rGM_KGcxQ zg<-XuR-u;-&W|n5#NBMTBb($37^jbp6=<@w6PX+4@!rNmGeiefrPJKUXkPpZ;6L-2 zyJ(14q~(=IYGK-{d}uqOsG})hs*L2Q$dqhp>A@xoBwLb8z^YS_4!yP-H0cE-r$;jH zj2sF95~gZ1&K9_uvPkpL80k8kkFtEIGwK<9TX)sBi12tElR>CEa{6tPBCQlY_7Ajd z^GUC}uV=OcAv8)}ROM8fyDg1+5=1)pz!Kk}aXVe^=41`Su>C9++?h8{$^!`bi$ttm zrPG(SW&%ND4b~w_1%{;okw*t;Q_?s0C=3NaBuCA-ph5b=(4?j3RAx|=Ai{nJd3mKG zEx)d>Jm24rSZof=hx!-=F}#J!apw?3eb~1RmlB~3Ix>u`l&5BGJcoB5q#FLi!vv)UO z5bm14QS)lKIjd3Om|1OeciwrG@5GyGn%Dua^HBdcjcIGYF9Q{)T>ybadeuOIxs}$Z zmGC4jE(doCLIEPCw!E}Q@x#9R72PJy-3bo-Vf`YEhevi*-`48eoOF9#Y4)N1EeuKr z?K=1t)<_-F5ib@(QLp5t*9Jo`LiS>pQAa@`2}jUDK|^%8zE#y zS1EMol!+Y061D-L-lj~#o=P%reYk+ct$Rl6^H$ATY*mc;HNJEcHiP=}^@XYyP_~Z6 zk3%-4^x`_-S1gH**XoS(TId#W06n_NFe5xk1W{C9=ys_`fpkROmtIa>eVPIkA3TE& zuOQ{c3MjwximGc`F}{q?8govvq{lvZmw_TeM6cmtVuf8s1eGEsMmZRG&0|9r%_r96 zFr(%$ns9;_`%!BK3^-iE#bw zv9nYSxg5F!IOFZ{K{Bnlwk?58J4`0m?b?DzW{^;!*l>%^{7xX(7; zHdD?ck}68mEN{wpk=or)#OJ2V69e_*t>qHACGo5@RDJG62YJcktl54f{o=3t@f650 zX;Ff_$ocK;=DUSYM47d7TzGH@0xp35(b!n(c4w9JQ?Ua%)eCWV#WV_d^~2iSZ{>ZP zz6>sa^{UvwDSL+K)Oc%i?ADR_w1D%w1r^*)!R(Sb^wR5b9KR?d4!J!APED~(UdYqj z3+FL>Xh{~ixdpuVVCagS&z&fw-r>pmO+F(g6p%swoT^rOdee)CUN?MGa684}E^v9W zs>?_M?#alVavu#DphqYcJr4B0f5OpP*;2XK=uMRbmOi&-xBmiST1h}>Xp$ylly?q= zK>xOfc558@S((!1I z_=~ZWK~rEV$ky=YAhhHUp3&dCqcHdSrE0{{YH|VedCSr_WP*tHp4r5lhIXh0%z$cZ zEi>(^P!| z+bC@6JBcx+W;ZBtFbiE9u< zM<20I8w0YUy^Oc>M}o@t!PpgIcu0+Jj@)Ck%SiNRDNk>P=BBA{lS}0+&qj>L^TF(J$`lNnTjT-lm3i;bYjg`JN!L1Ea!?8FFNn5?JEDT*Qrf@@T>{ z6TV$&wts_k^)H}(M&=ZTB*qjro8-(rCfSl`;sJuQ4`I9X&3(S2_raXPYY+Ew4PK~8 z9ew21!)E3wvc^1br(aJDUl|XMe4L0=nLj8}15;)ypELU9{am^##!C*Q#NiH|*oIW{ zslTDNx)fG;!HF&mdu}qv({B!6>3;hMA_rJZLo=>%MLh*KaYuK-=gN+K&V>_$)l_?< zO#me|OYd5Om*1nqySL71jiaRQ+ypxhgxO9a|kp5RE?| zG=3&8k*ohDmLmdY7ir@Oz=UT*ohb8g?#H~6i)5+Vqvol=en*pmy z6seNg%RN^hK0HlXWcwiR+ANzwM%cYS)*zo}^)G2*#mNJ;Z4FqDuu3*Ll*Du>P%XeG zpebb411!rE7qr=y%$#^FGlh=l5Jp(hHz!BmY1x`Y_brwAF*+5QC~nV9gdQL8nt%cO zGMt&--}Y^02yG;TGdd%mMKGlSS@OKR%8C0r1cx(E*dkLCA7IM3tWHhzq5A30*kOLT zXUbI`n;XjTvv!}qJsnS(S9Fx!NF6BnLF-0XB2w%I@2&ntJKEn(JLqJl5R=tLDvvg@ zL7j`)1RcCFl@<)~GrJM$=qZuS>K3qA8F`Qx|sQy}@ z+k!}ul!Lxk>s7KnM$fKB8474ur8v~rx?1K{LHr!L1+i0}+5EVtD#ygGHO5{$=Jy$o@&oV# zy!E?5jp)(izT-XDl4dC4FlOo2@V^L}_~Y!^z5=&M_+hONAVzZiTH5ad2W}w@jd(T^ z%q7RY)*j>mONwPACd6 zSpzJFRtg~ zkVblJbT&yg&m~#iXYK%stx?3{xvS&Y=s`jr+i_8|>q9W1jJ>uUClw87NljSzWI`7o_Xx8j&+kI5-!!^|W~PIm5`K)m&Wth^ z`o+ixmdSh8rN-3@_(Ki}=R}g!?PU}f z(36Bdw#CxjdfQP}Rp^Mx*hHdwYJQOPHDj;K-&FnpfOs(O4 zdVolCmp_L*yT){EH%Rw~(1FBLQ!4CA*O%$atq6kDg8siaIH zraCWW7(`vwm%ik3FLEvl7LZ3KV7Yu~yn9vzrggGSV~Zmbhc3jnjPPx5L~ViMIP#Mg zADT>(a!&M*-7fh*MmK9NOqasS*vEhjBL-`3bx`JPcnaXqR}@)X4e^l0D`1tC=5AGYrH?u-SerIN#90m&WYz` zGyzIZOD{pVy;3(tOZ^5bf|ZYm>;w|`8!ns?VondF>Esyv?=7{?!}5Yecp?gZnS^Wz zR_QPc)a&ZuGUP`mv9ucD$5P9!Be^g4RQ3Cb6R0&3DE+LT+5>!pGi4TxME`;#J7aY# zFdrtCMz)Pcb(Z@nB52%mYo0Bn7SeK8r9gM)Who?VY3Xa2>!921P14T&0w_(Arm+++ z-nh#!Lq^*o_k#Z5?xeq2G)T=hykuh_t^cSqa`U^Na^wUy;p@*#vS$;0&+Xw7=()4* zi!Wet&3h#aI@KP&2uYS9jEuo7gThl_EWy4pf4oQxQzx;Zgh`OmcIa!>P z>b871JEPj9?Th@Km{~`M*~}VZ<3O7nZV+Mjm2Uotw7FT}JJU)3$W>DxO8@x)7iL2= zQf(2z!!VpRzn_Og@6~t90z_+N)+=^O@d$9eEjZCH%TawXbz(1%M3{(cxmMSfm8kKk zaj{el4w@AatVNc~s1UzPE}NPSqwJTTTw-yFr%PJlL~@UD)Qyn2u^F2}){7?VMtE`( z(~Y~OZNH4hy^?kphu0@odnlGE%#!h^A2iq%m z=p}jPs*f%=^%=XU1>TeKBvMo#cm%sPU-;-63c=nu5$$aYpFAB@qkkdIg%_!S+Czw^ zO#s>^7_NCSXIrv{v2)ZYsGy!OnBR3k=CGhYnIpTTim~Dubm*)v0eP#&9h}nRkl*y6 zwBy|!3$N6IWhzZUa}`e(n}~&s>*#_iaQ=k5;1bAisRI{U&%r9Nlxp$qEIxzTl1h(WRxHCT^IOqo+#JSa?< z=SS%E&EVCK_02qOu9c^#C(RLuyldEL2HFK&NwyLFm3~EM-(zN%#ASKu_6xAO^Pa4K z%93EHrYUHzT34!`LCNx+12tJX=bO+&wP?vTn8%RaFauC4wD-!8wgm8>cF=jk=eEuh zVqg;jsHt#IGniubHSgWyNmrvOu)9G|#Ln6&(L?YVZ!F zzoSkJwCKjcLPMhe!$elv#=^BawdPFPJBX>&MMS%@9G!tiso`{wT>&aPQxQLd>HJez zQ{}V1xhXca&FXUp_BXbHF+XPzY=wahntzH6`bt&&Jr+zhANnUR!HIE zVMVsfXF-YM+hKvyar6B~j>)?`FH=LqFIq>q(O5voS7)q1V*78#b#XQ?y$L{A??%dCD^eF`v>8O{qin=Ko92PU#?=Tvg86CrLLyJ zB6YGI?@g!nh^$Pt;?B@6*w7)1t}ah^n>Sq8TMoQ6J~pOqa7}cB-v7k2B<>qUL(nfm z7l`(%8!vuO`jR~E=0InuHd9h}v_s+P?#`EAOG{e-2tlc8Ujy4XJIdyo*m6t5sm5*$Q^uytYg>nA$nht z?gV+rX&Tpp=2irqLVg1s)3N+_Pe`ztHejAO2F_vD=0W@2jEXFKwQxN>FG*;`Agbb~ zftm0c?yGkdAAb=p-=fVbVwLx65z=CMW($c=J!4R2w_L`Vwy7U=s{fhVj%?Lj@Mit~ z^Yw<&)W$A3QJl_PHl5C{4*mKdW3n6}zUO&2WD3XSGc{-_5rC0DIf{}RK3bW(D83Tf z`ZB?cJOcW)le5rXz${zp^6svrne{u|E`7CeLG5PY)okl(yQNNh;=Oa-R(RUp&kj6m zfz9e!wT#4&L$zhEJ0|8zVW1n|VT=jx}RK)qMS0K2E#cCYbmOR`cBj6Qr=j!c7-h^IHl!WuqqK!bgEr zlGbc8(cWwjHnByOkdvQPsnPCRt&j>-G02xQhLJ`8m@y@?iD<9#EQi%~pEH5PR+UAHW)BvA9Ro?p%Puxwdmu#;_ zC{C{)lt6F|jZ<`(qa8V_BH%Jr_a%>7P~l}*8@t2e-;)o?5BiyFW%G}UDkK*7p z##_7oirJ?K$ZAL?^?OEJSgPr5m=_9euhEOP7kMaq-5+wC;Oz5V;SB>{@#iNRa6NdT zTC4ZvFWuhsCl+a=&G$XQs@#G<6iJ3yl$vKFnU5ZnygfkwX>+$Q6wrxCTacx=>+dbF zH@x^P#;vi*QnX2eqp0{mxNEFBx-8w{7&r@gYuZDAB^)=%K5{lz){|sL-=1M>k7C){ zAjtA#K-aLYJ5x^T|e!uULQ2r?IEtUKUHG44qfw3o3tJ(>k!O~Q3r z%&M&kaA%Kg$kE!uOGD1KVqB$EL3b>GmUmq{jouHX(POBsc(&( zYN&8>p)Fmbmw~B+nW5sk*SA9RgYL4ak^GGfGVe!B0uKugGozwR@vKT;I+1PWZ=xkC z#{|J=tDn>l!`Bke{e~mN1H;fDc}HhIza~B>Su{ss@<9Cbs%e3JqP-_R(Q_^Z@q?YB z*vLL+lv0KN&%vHGRwwwnQ%VghmrtLA1j*hh2aqKkB_ggQ^;L{yp{15~4ORHEVMcU& zc8-i*{tEi+Bbf6>mx(JbA3=#O%>U~x9>%YXane9daJlXJLM2qr{pFLt(0AQ-y%#;n2V> z9m*AbuCUY>4Pz2F4W#sdOlsLGWqJ+c4s7Gj`{rJC<9v?bA@2CbbS{<1FBpkyO7xas zrLN{V*VAN#R~se2cKTu$2O;V#7(-{CIC02B`*~3%^&bj~mM1)nd!}5u@!90bp?pxmt}Xffi8UmF$Pe1a`Z6oSimwo@ zja$e;QcER#IxrnoSWqFLM~7+*jB;R}LPvXp2G?s|MtQ;=`%)5;JrXZK(b2H`8k=W;nBD^Ywt%c(Uw(UlWLMh4ETz-tD# zNe#XFWrRCabqFS?UHyWC0ei&P;cast!z+DKnFp>M$J$`fFo!sv8N8OoU6_STt{)f1 zzg_xid(E&$gNO}w{rYQeS?PHO#2O3#!=n0mUo$d=Qfd+gGI3c*?Yl??j}F+cB;F5N zq|7C++zsidoXzTF8U?(cTr^9tbt?{E9$5BiI`J>lHj3vf6zO4xk8`L&j(C{)lGdUn z_=Ge0*?VqjAO<{SNnfGzg-N?ua*v%&hIFJ}Le)-x`fAk@LX|&(fe2&d*w<+KAH?Zr z-HR`Z8I*yJH7Y%+c#09dIc1G1Hec%K01VX6d;M89;B}?Jvq(Z`2*vDfo9hFNNL10g zJ;;}E6G*=lr&;nuoIVbi3%uH;pR9I~8>V-%?+Nf6$)jC}dY7tGrK(V}jre!|WWFegL?+1EV* z9U^s3QE#viXwVOje~3y~iee$qvv&GUTp*7Tz}fZ%mngR5{_DMh*x=4FN{E>z5x|rC z+_@2@fL`p>*xG+9L)YG==UxNZ`$-gQUeQrId$pw%Kg6dzK=Uw-yIQ?BnJvUhOv6X-U5nn2g}dco)H`m8C$7DYoJQlRDI(UN z<)P~ypQer_yk6H@kl!^ULWBKq*r2XFr#wxgQi^Y+rig8^Kja(B#Aeh+Nh9NqB_9jk z3&$o*np{ZYA);Npf<=yl?vrnFx`~5@Rt?cIdxuO@$=|W>d{S-;G;j8xjdV`kLf?k9 zg^iakU3zb@l}#k^JN8piWNA4{!%B;ZmGF5}i#b{0ai8tH9d@zVh%DqyxLpJ&O8_V% zGjTIt#62WI(-TX14^fj8zdRq-jIc$#$0{wSZ>febU6uQ=SHw*bx=%G`IKd>MFY@G0i_C5J?IZ z?@f1QH0e$cB3Yil4-7y$W@gY|AsUN3JIKMB5A|hEOnEfKFM6-zZr><0r45wMXQMaBX4Vha;$<`f;Ib2E>2$UowuubZsf)nuOQO4WiK5* zs;kv@^Oq<#C_=*w>|wgyzb2Nuf#k2{duh(+ATKy*XCoI?Ew`LXYf967^QtnE8W65s z4st%Vbl%u!+uE^rr(KO)Rn~~*-2PZdwpu+4{<%EDh8JwB%B;{ zl3D-E$Ws8#A5Qi%Zk_<5BKok7}`KRn(1Z$OGjpPTyDQ!eb z=(y(SRWTfrVt2B{GTuTS{Z$r$N8N=YPX=T}TUD&79;5nYE}{KLY-M+_pjb!~dr1#^ z%`^R!nt>3HXBEV|SROkPnHb*ZCpuqzq&#q{-|;7mGlpsTrlCb<>^hyr7be5c><%aTw8qWKnf-S&1vRw_G72aDQsB1H;oHT$QHuPI+G<1xrX zG*c3H>fvh4Vj9e~-jk*U+I2z^I=H})-6@A2F2(fz z4HnS$^AjTDqXRp4SwWYCtYJ_aW zU&w;;s$!I?PA8JIgKuUpC#;bM-imyCgD>5<9f!e@ywNbf1w~mCA;y+M7i9ap)PV-62 z&>3n#n|O|$At5tREud56$@;9uK0sfm0qYo`0ZF*cZKxiqZjX1Oyj)?*sLuLDZcP%+ zx>vU*Sx8AXgCwDeNG2FW6C7#E+VFIozYMNqkdrO|U((#4OQ!1H;RpQeSUV#m#;|;q zMP>E5Qk>3knHaU*D`kSkn5V`aOntQ@pK#H8sYOMD?Lz)ZtXKEh9>BGaX(!|7Sb0T9A|-&QCTKK!RF4*mJ%Y&ZK2Yb z5nSm4=RNHMHujWB8N#0$ae9FkkoaDIFxl1{_xNDx6;#*eS7-9_7O4Zp#0V%PZ=y{g zJo1av3$KT7FMa#k#3KFAr7~3Bzha>y)ODJgq$(Hu5^*`@J{xUh$uAmcjHy!QhbVgj zWHM1uoJm^*xV{WAmuY^wjG-~!AbQt)d;B`O(g|;aQ8ow7Fro4D7^H@&8iFHxN_VYO zeO^HUo?FN!W1Vom74wtPgqUBfu(eM{#x7t6|1jEBNrO9v_NtvM&_YF?VQ$>fOA|2itY6f?OFICz98d^}N{g+6p%N zn9oCo1XW~i30Jr89NCOyK0&@%bkZNLSnC}$3}i7Pe>CPvS6!2K6!O9L1b^LG>%cwN z(WjzN%8oBUosE_-vPSixE}7O$pS&KF}LvESK}5=z|0Zi48v9+^@4zpk6S zin{kr2pW2ah)h_9(v;p}x31M*E!jk5aFn<zN*{W|5I3`pS@6uOi`-2 z+UhO!UVA@J63^9VQaF7Fut{GPWiHMX9)X#5M=N&C=lJllwkKBRjtX`f9$F~@**qw> zQCs5YRC{$Z~O!`@ycGE1FmlIciKyznw%lKmAAkSr>uay4G$QpbeKJ(E!g?CrF)ni0x; zmAJPoz#tN_qk8;vVB6H#R`15eGk0a=3++p(NT`W(5%CuvkFubi_s_?~XPBx712n!dv;vTW=SO|h1z{c!>vz}`co zWotca3O6sk|7a;mwMwP2@qsLninLKliItOTMmvIZh`>FB%4`NPk)OGVt|9ZwW|Hig zSwLxweMp5y$&7hG{6M9QXRQpeUl1Rzy5u0wIvb^X=P*eTw1Lg-G(}Zly8CtQL#%^L ze@i0$T+wP}eX5ag{EQWOm0vykz>~-k@PWKTTkFt@=C8SPZlkf6L7@@oD=aE;vHd^e zv20V<>uxyTjqh)n>RIACfJBg5@Gv7IY+bZp98l%rYC~?JkvKZ{wVDhp*WO=fnE9nX z2Uo|7KNUVpY~jP{3{w&^if{4zo{b$Hk@i5JqO`Zd-Dr37+QCZtK$y}I6M$op(D~4` z>9Xza>)x#?R8|d~PqN~lH{G;Y6bM^HM8#zOR@Y6sy?;IhOVY>5L}C+6V*MgGnib6@ zx%_m|EF7}zntSG4_iDuCNw?&1EfVvFvCdngafGi&`7a!EqA!?Hr=L8jCV($V(i_(Y zG=1`*Y|uD9$vKr^=lUr`_BA8Kwx@pk;~_^J;*U8$ehZt#>#3bjhE#T8#$$J<__|vg z(xk|Jhd%vZa7j^3<0V-)E8C^!)@txRT1N|o5R_#?+<&!d254vne&yrbOyEY7!Qg(g zOt8TFp*y8NOgeQykg-?5W}#Ot<1>C9}TG3}J((2}?3x zR2JRfAPP+M*+R;1S)L-x8ENlV((PpPa5TXm$9rh&g zXS@c|#93YL-7&vd8aN?7%09#_Wu@zUas_!Vp;9+;w|yVqYIKJ6z`jp%n;=6ti(TDn zp$6*iPE6L>d%xMEstA<}Ib7>>?j~kc^$1y7f-I<(N0*4lkM!e$2)+Heg{Xr!ReIrL zb*pi4LXXXBQ@iyo8(tz*kd)!L8R4vxd=T7!t0ag;v8!Q1N=1PiCs=D^|6SvkK7pQ- zIl{DGSF9yPUP@+;HGFrIuSKIllL^>_YjtrOSZZ)`Pevb$MR2ni;Gzm;m-Wn-)J!z} z1o^CcDau#lOSNdMnYLae^V};(+&%h)XdyQ*4Y%B5w#+@JKcSF??Vtu9l~QO6aOUYQp-3axufL9Yf`*P*ll(UF_*0o#IRAT{vapb2_hIOX}k~O*1<+_ znoJN1c4)%tI)9n$2~iyi%&UW+5DgKb@Q_ax*(nRt`-aBlJ7{lsHM=bG@|Kf_Y@kB0 z`1^+GSX_3?V{1rk39jMBeG@stp z>5U%;3Sd2*k~@$erHnY{)E8RvCGxz7z#FEL^O9jDqo>njj2ahhk{a1D8aXVWvn4VB zEE1&cQbSRT{aP9)?<+-mv7{_$_^%8ml%+E8&jK4UkkeaoX>1p~d7UrO^I^}Q(@{_2 z^{x70;ls)b5GGs8#lo3z3Ufrgr4j9o@pvS$7gf;d#cg~a}~dJxt3N# zMdAJUcFk_hJLo>#5rn>1>AGJ-KEh3>M4xmHj0kF~J)KrwY50y00PD$)063vTY zb*-{UJp|$>rY~2gdhdD@BKS-M?g`D&Yx56PKz9iHjNhFBpVEH* z%V15|D`>{I0yKnJgYfIh72ZH%6B6S@F}s%;rdF%L_H)@yAzKBn6Yo4;#?Gq$%mll} z{*pntK~5xctc?0lxA{Zv+g{jyS0)C?HMPT%Nl#?wzSgYUPb0Q?hSGX`^dy^mW{rHQ z*lWpoe#=x@usLFg5!ww2$w;3kFo9^Iw`}V7o|Mk)hUQy({lM!j+454D zS=RFsXVbc0Z$o0R`b(#M2Kf|7)shc(Q<0Z@!Rm};4ugy3Hp^&7H_OzT?NdhXPpEG? zmMr}biX)HG7=sn6qQ$3=)j24>(_qA2`ePh~f*5C(jgcKdSgBjJq(VQQJ|*r#G%tk0 z^D)2;uO>_LsAC5~z6wu^7Q2~%qnGjr=_hikv^qKF(n;x=if7=jcs0y|w zQH-@DMY2!ovN1~|yNa37Y?shGvF3Y+)F#Clv|P`D*PS+vMLld|_;LzaepU$IANX|N z+^QG;4WVxxT(0?9(=ml@Vz`Y}Ltq`pvq-7|XEB0x6M`!keh9@yaG#x3np38?IRv^Sxkv{QlGUtS)@(RbLJTrjJs_{RrgOdl%I3B zFV;FI`G|e&VC2B(3#rDZin}rX(e)JgQ9x%NX=?ceYCg4;AUT{Mo9AM**@O42T9B#u z4Pm?o%X1_`u}&I#NWn{cMDu4}^gYG$XnfiG4%KGOhY&7X_0%mzP`nc3(+HfJx~1e1 zey*rSJJ16@u|1N}L1|<+PM8%y;5%oLuZ!p+=x5hz_+ig9W}ocUC^x@I+@kOiAi8XX zeZs(YE3H(k@ExTEVr9r|z@hQttvQ3~-ApFt)%J;j$L(72+TD6V&;l`)}6`3iDq_&UmGwW-*?d3ooan^4(Y)@VDR zhN`H65eptB3#hb}0??l$eoTvyosUxdmRK5R%|>64(h{P;-`VBeNtCz-FJ+UVs{v>T zcMR^Iw zBnf9iU)DPcRDS5R{`IEA$e|c-B8gq&T|*}L%jMm}RXF{%K2Uz4CS$w;-W|w( zB?xgMB3w+xoBnaerj^MD|DxkiAMF=C>7;`%_cO-#B(;YwId1qojxSh8>wPDF$(!(9 z;g3bR8m_Spz)2j$ky~x)zaxC|5(9NVkiR0DMZRzg;k&(4-}kk(i1=w5wU3dCjUe@r z{*O>LGTS?JuXd}6?bg?IJ!HbqnSUKjz6`yC44@z}x=6ZE-+um8ldApp>&HrCyB=Qg z28nfJS*C$-kF2^ZEp)YauA^+B`eE|Y;+Ve0TlIB0$vmmTr%M>O+GG2Sc;B{vv=&q+ z^fRim@HK>6+iWJd9_ye$D1WM8u(r$s;`SGT_P={3O;9EuZ&VD3(0v1GF<6tYLKN%z1L|~}wJ5gzucelkI5&T&g zs+@n=74?@^Vp0~H#f&qqnKX|kvJ!Zd;&RpLC$!j3Qc*j2iI~qbidszc)?}p93trO! zWeui$NvvK)2^{Iuct@yctU3n>u7VDxpHJZCRNXIKw!PTFatL>e4Mot3#+V3CYuo`~U#$_Rz$S=o_8JF0mukkgZ9+ZpGYQ#VEuqdNY#w&ME zUMBg0+Kq1`yyuHTMUX<>`=@p-VK;r)MJBec0Bm%*!#NAv7L+5qAsEy*W3EBpe7=;n-M+^ET$_%O&a`l{B zPht5`^|7Z5A;Y8Jr6j`Ge5^_uByD@Xnc3m7DjWIdjqrrln^xfIjb{{}a+jHnzx(W( z*G=5#J@hi7MKyl!&CrVp(`!-4i}+&_mBBqc@9oN`ycOT9ZCP$*Q=@W6+~g?{pL5KE z#vSvgg@U{C9Jq)I{)|%3_ji%WrVcJf)*R*> z)=-CH02TDT7d#@Pn;nNcho`Bd-9N+G^F0n{&&N{>3ukX80LS}RYQT;4q<0~048W*8Gtv|9f$$l zD+44$$*Tbb@VsE?!#n^8A!yptbjSWY2k3T{g?}ArvL&%rZu7cm@(m4WQ8p?A2kZWF z_xQQ{?8Or@(NF2-d+iJN?)u8=i#Efw-Wz+vDGg2riEMy4XTHa4Ew*-%%#5rSGF)%o_?!J^Y@v#Z@d;Rgkb5mGt4`ErAl(` zX!o%TZr=3f9kz~KoJi0;89d9+dzYTzzL7F7{%uOz?fnNeVDq-&ca_;v%iUkkf^BHn zaAGDEx%H$E8UoF8` zA9$f-Vf(f@^zj2*S7@)RFjPr(Sd9tlx@+F|zfv=@MK`i^kVFg*;36Vo7$9WD8b^qg z3zpW)_#lp5U3c)-B@!*>x}f0Z>kh}9M_n7|#~#%a5-ruIXzmbMEx;%WaU1S_o1bw< z>8PoBEs;QOR4GGZh_N?tkar(5(cT5V~n4Sys6#eoQ(a!-!FEv9aaAqBbA zylo_4h@#gcioXi20Vzm=2z8S1C}m3E<7tmmZ>AvQiWHySGk=I!%gbH{<-~P@uIRRn z&V3fdMV>QxxoJoOfFW>IFeeQyCCW2+CD2)#%ri?K!JZ!1;hBAw|DCvmdJM-|1pjd+ zO@ASlulOB>58n9BfvUrJ=&5?gmb6?tIpNJhLE>m+n76I^o>MknI(e?QErF?&*rx_} zx4VTcIl@{G)lHi;uGZmLB7@VM&1s>Xu`Rh#?=i7ClwNUO0(D2juC|H)k;Y3gL` zXld_k=Sa=N4UHLtp(L^yfC5#k2XOrV2OP~SvHSJ2*ouOyD=oa8OO7qcW;H#wRzqyp zrZ;NetCbam97k+2Eq03q+d7#N-Z+=<6j)DJxj=9`Yodry`hVt;u|L1mf4XO6czkop zmC#wV=pvR>xs#kKgn6H@c7>y0a5HzNc-wwp7dM-De(kLKNoJS59obi4AZ;>&M3c?U7; zAQfV;#e>im-s-lQ6chq$gUYM;vi!Tn$k4;_H_?cYE&cmxC7!d7No0P|(Q~V4kVfqH zR#(5DJtN*1(laELF=q0>U@gQ#6oSwe`RlHCe-x)r-&mw&XXtIqzU;5AZvV zo~kM%D#;4N@;eJW#}xiX2hSH9!iUSJBIcV(!`x5o*^_cL7PX;{EK1}1Q3Q3z*{zUo zr^|zR)hRn?G!o6nc4BBtT1teM`J!GWbTm>`gg2}*D?>)VNzfOj<6-kcg(p19Ny|Uv z!pl6yPu`_DZ=dFvizo}6c#IoXjK(T?r=7t-#NiE#@9Qx>wLz5)y;Uw2dM4O(t<*KIlkJ$=rLoR;U2zX{hIWOm|DSN*u5q-uPwQUA%SueTL5 z;?2Mc$MI>wE2z;I06r9@82|!lsAy@)DZmh-`o9pu`&TL!4rxnACua!@BS&fw2>NjY zKn%~r3C(B*a07U`fbk0ej(@uoLh(viEXSD|=1Hrvs03SD*;jb~%bhGLs81dY{pC*1 z_Ul=OY47WW5#8Lhb<;lOk)}l!DsYcnDDPFj8;m5K@o5;DQWO@_I%#0S-WrG~K9rmD zo`}phq;h?*^;I5#7(;NpD+Q-NWZKeGY+QQsX^q#O4iU}TMAu8TDojt?oOX3R-&!C# z$$L5f-1@Bj>{*bajKgh1VM91&O+dp7S&hj}d(!&D6N^zmIB)vB;m2LGWu!s6i$*7m}Y4vohN!I&!w{y0e#AM+TZ)c84u$4Ay>1X?!h%hrhST}~dQnHsv zWLLxqA;qhIfQL}xO|^kL`0XVH?N<`Ycb#TuOM;Y`a(3nD*GQ-$)I{GHrd&IOIsC$g zY!K9P9|fLLi>Cy=NA`+AEvIEaL*4S*B`rUtR_k@3G(jryFBMyjk`i}86w0suxZZR; zl*ZGZbxtQPZLbsWNN)`n_yg;kgj&ybTw!$*@E z9h|m}2bUrznSzqS$j~~5L%4x1Y^>yMA*O@dCjdXaON=% zPG@*}Ed<$_*^*-rQTBvEi&#Wi=UT{e|1?Jp=3}mfc3?1ql`&mEu5&i zc%bL)ztP408(jhrT0iE;kjkQ^xH+5#OB_}1`&kJ2f_+DQ$qsy*Y|R_2E?x5|`MthM zcpb^L#6UHIQl0}DSGq&$b2z3iW+{@PmXue`1$D@(W>g^X~9z7uO2 zsHv2wWwB{}Ct@9C-(n`GQVf_^f7tIH4909napG^4@o=S%0$hGhvuK(7rgjKCAd4D> z%~Px(SmB@@h`&c-e~nQ=%X)-g;FpZpRUnoZB8JHcDD_Vh>!b@$I3Zi3n|y{;eT)G* zL*lo>1Fo-IJKh9y2Qcxm61?{vs%G77>V# z=F-0Bi7HFxW~)AC;)jM{e2?_RncE@O=26(IokJFfVB@Ayg`YlVoQL38uk^%@Th`4b z^THz$`P@tGhPoC~C4`hGz^{fKZ+eY94!n4o95B|O1b)-xy$~pDtO;PgTMbG7rDk}p ziU5Jz87f17s#F1_s8y6?w54Cc;G-`0Kj6a)g4VYKKv0by*g_4KpX+!7zyeWkx6KCP zG@lYKN#tHc_3*&OFo&6tM>)>aSi!b3`1TF5p<*wv?r+Z{B+MFr!kv+{CVH$h{5a^{ zwaxo^VQ7B*+}zI9g2Ttu{Kr;HIBY9Z(~wd^o?cR7BboSQEjd_Hz3yyg0sN~;Vvi1Xn_ z2ulm_20`zMk~lIJ9|V(RS5MHm)IUl5tzx7*B3?Zz$+brU9e|?eRUazY3S#%pPe2O8 z0ZyPk!jHp*gq$mc?}+%lN|n>y#OR7qAPd1K?vk3?8B`e>1XQJINDZq z1>Zu%>s-7O`P>cYKp#gg>>ChFVV?jxayn5V+{k9`ml^JtVe6A&>z8>N`^i&GcV5sE)fEf-{n>zrYhKE*m1300VLjX?L0R;0ffC=xnyHQ2skg_$l zGqJQar{?0SH5~>F!b4wOz$o920XSgi53mglGqh?RKwG;q2B?RJ(rm!)4Sol({mz?r z^Bs0`W*K%4MxXFLtt3eipgaG=}E0D{``X@ENbdaw#@}Z;qRoKk@UU~9zq%)$ z0AS+%=cwi%k^t2P@4%|TaY8|3FcWdG4`6~xjpP6(wf`KJ{EJrY;CC0@FwsIAPhgb% ze>F`7`lka1|G^oQ`V{aCo)ZYgx&*K@{nacr=U*i=AG!LI*0R{Hyzn~9nW2>pHu05SYN7y5gJ!2#R2 zIy+IrTKtQ%fAj%clCxX^XmI{>h{T~}WMc}W0|B9WR{(w}^A!N2HuDPb5}pOf4dMdw zbAefau$F-gu+uL^I}=GGXH#lMNdZnECl`?Gza&tiTYwpCGJS3V9IRjv2*%&<549~d z+F$_keiq1Q6ro{9$v0L==ga+uu=cJ zF5hPw1bhfDKks8|5R6;c?EQ-x#LLAG+sgdA49w39n}&avaq@%yDC6PeflcfqI^gdq z143Y>|CI?Rh#UA@5&lKU2?RYJ4iL!A%?rcwKj~m)T);=700P0hkK6lQm-8PC{_Y>h z3FPJdLp~rNC*L1j^Ye56(Fq?HYzU8-;p6deq|Fy@@`v)D&h(2Z-!ugx&M+(OY;^gFf z+zD)+{tX?N;R11icpl9$%!zS6o_9_d755)>ygaZcW^ezc!7$s;|JVj_!l3vEGn_#1 zAI=FT*MFH-Sj(`w++e6K0s{i429%cI1xbs;Kq1X90hZCalculating expec #> Rate table with 3 dimensions: #> age ranges from 0 to 39812.25; with 110 categories #> sex has levels of: male female -#> year ranges from 1940-01-01 to 2014-01-01; with 75 categories +#> year ranges from 1940-01-01 to 2020-01-01; with 81 categories

To use the lifetable to get expected rates for our trial population we need to match age, sex and year variables in our dataset to those in the ratetable. We can use the rmap argument to do this. diff --git a/docs/articles/standsurv_files/figure-html/unnamed-chunk-20-1.png b/docs/articles/standsurv_files/figure-html/unnamed-chunk-20-1.png index c4c0ae69581b9ff62d857ffa11f62ac469e6dfab..23c48fb94dda60dfd490b4ef52378b46b009cb5e 100644 GIT binary patch literal 96947 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

l|xn3p-(;q4~7&j41zXL)feK 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 literal 97265 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

+Y&?F>*~-HNH>=X(F*{k1#8oZut}RpRPQ7-)Z; z#=(IB&aut)B~`GQe!$z710^<>m#SCz?LQXze0yr#x;R|Lg?5m(+*qE75wOu9t}i75 z&yIr$Z_O>NC5E~k7jZqOD)#LP+Vq@~QQ#bE2_EdHeQn-^soo~eY4>};TvS>w!q0Z8 zrAY<^odeJhW8Ryy>px(GNdwGi_HVzJ+a9+$1z^YLRe9NQwy zBxL_#ZDDXFm1XN39Lq5?Ki}FKb8!XCHb2@vdZkl_20Sos)XzW#nay)7MA*578|%6` zGKVkhaKjr$K{tN`Fjl&it~OI5k-b;W{t z;c?;8DNw?oPLW*b@un8uI-j?U63Z{1jlZKaZgukC)bBupl}l)07m(!fi4lFB^--qZ zQRk#?EOuuJy0u@!%=Z_wgPX^$-2!fhsx3;s9VTPQ_H>f2E{*OmU}7)jlF$qmU^m+M+|&f90NZB*7IPW zb<6B^G3L0R53op9yq`I_L!~iE(L$; zic3|)w;HH)YkfQ&D<&dK%E~OkZ(}#`IDZ~SPa>jJso${&uMUo+Xg7N%9@!MeZuP1D zZZ@>>rjY#p2DKCYMW!;>3k+gLYP|84S}0$nYVkz1l%jRva9t`zM?tUuJ0iyaKk@4} Y4Whp%bgJjoE-oQ2t8%5_cawYn4@D?UbN~PV diff --git a/docs/articles/standsurv_files/figure-html/unnamed-chunk-20-2.png b/docs/articles/standsurv_files/figure-html/unnamed-chunk-20-2.png index 29068f3ea5af12c5d30fe7d102fc9b12e41ebc75..52246005a61d4a061a305cfa5047e962e89bc0b9 100644 GIT binary patch delta 68564 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 delta 68399 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

E3+KWB3ce(p1v+*a#>4!mg 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 diff --git a/docs/news/index.html b/docs/news/index.html index 1647a25..2d8ba9c 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -52,7 +52,7 @@

-

Version 2.3 (2024-04-05)

+

Version 2.3 (2024-04-21)

CRAN release: 2024-04-21

  • Analytic Hessian calculation for models where this is possible, that is, Weibull, Gompertz, exponential, and spline models in hazard and odds scales.

  • Analytic gradient calculation for Weibull proportional hazards models.

  • Vignette now firmly warns against using flexsurv with time-dependent covariates (#176).

  • diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 5217709..404253d 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -4,7 +4,7 @@ pkgdown_sha: ~ articles: pdf: pdf.html standsurv: standsurv.html -last_built: 2024-04-05T09:47Z +last_built: 2024-04-22T15:59Z urls: reference: http://chjackson.github.io/flexsurv-dev/reference article: http://chjackson.github.io/flexsurv-dev/articles diff --git a/docs/reference/GenF.html b/docs/reference/GenF.html index 41ef43d..c730215 100644 --- a/docs/reference/GenF.html +++ b/docs/reference/GenF.html @@ -144,7 +144,7 @@

    Detailsdgenf.orig, for the sake of completion / compatibility. With the above definitions,

    diff --git a/docs/reference/GenF.orig.html b/docs/reference/GenF.orig.html index f890a6a..a0bba93 100644 --- a/docs/reference/GenF.orig.html +++ b/docs/reference/GenF.orig.html @@ -128,7 +128,7 @@

    Value

    Details

    -

    If \(y \sim F(2s_1, 2s_2)\), and \(w = \)\( \log(y)\) then \(x = \exp(w\sigma + \mu)\) has the original generalized F distribution with +

    If \(y \sim F(2s_1, 2s_2)\), and \(w = \log(y)\) then \(x = \exp(w\sigma + \mu)\) has the original generalized F distribution with location parameter \(\mu\), scale parameter \(\sigma>0\) and shape parameters \(s_1>0,s_2>0\). The probability density function of \(x\) is

    diff --git a/docs/reference/Survsplinek.html b/docs/reference/Survsplinek.html index 0f91dc7..aebcf69 100644 --- a/docs/reference/Survsplinek.html +++ b/docs/reference/Survsplinek.html @@ -1037,7 +1037,7 @@

    Arguments

    Details

    -

    These functions go up to 7 spline knots, or 9 parameters. If you'd like higher-dimension versions, just submit an issue at https://github.com/chjackson/flexsurv-dev/issues.

    +

    These functions go up to 7 spline knots, or 9 parameters.

    Author

    diff --git a/docs/search.json b/docs/search.json index 55713fc..2698337 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -[{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"standardized-survival-measures","dir":"Articles","previous_headings":"Background","what":"Standardized survival measures","title":"Calculating standardized survival measures in flexsurv","text":"standsurv post-estimation command takes flexsurvreg object calculates standardized survival measures. fitting parametric survival model flexsurv often useful compute visualise marginal (standardized) survival. example, suppose survival model fitted adjusted treatment group, age, sex. separate predicted survival curve can obtained individual based covariate pattern prediction can obtained setting covariates mean values (can obtained using summary.flexsurvreg), may useful obtain marginal survival treatment group. Regression standardization achieves fitting regression model including treatment group \\(Z\\), covariates \\(X\\) possible interactions \\(X\\) \\(Z\\). standardized survival can estimated obtaining predictions every individual study fixed treatment arm averaging individual-specific estimates. marginal survival distribution covariates study assuming participants assigned arm \\(Z=z\\) : \\[\\begin{equation} S_s(t|Z=z) = E[S(t | Z=z, X)] = \\frac{1}{N} \\sum_{=1}^{N} S(t | Z=z, X=x_i) \\end{equation}\\] covariate values (vectors) \\(x_1,...,x_{N}\\). standarization done \\(N\\) patients study provides counterfactual marginal estimate setting \\(Z=z\\). standardized survival therefore estimate marginal survival study patients assigned group \\(z\\). certain assumptions, differences marginal survival provide estimates causal effects (Syriopoulou, Rutherford, Lambert (2021)) certain estimands average treatment effect (ATE) can targeted: \\[ ATE = S_s(t|Z=z_1) - S_s(t|Z=z_0)]\\] Alternatively, average treatment effect treated (ATET) estimand can targeted averaging patients intervention treatment arm \\(Z=z_1\\). Standardization estimates can also obtained target populations interest. example may important predict survival external population different characteristics study population. hazard function standardized survival can obtained understand shape hazard changes time. provides estimate marginal hazard. can shown (Rutherford et al. (2020), Appendix ) hazard standardized survival can calculated \\[\\begin{equation} h_s(t|Z=z) = \\frac{\\sum_{=1}^{N} S(t|Z=z,X=x_i)h(t|Z=z,X=x_i)}{\\sum_{=1}^{N} S(t | Z=z, X=x_i)} \\end{equation}\\] weighted average \\(N\\) individual hazard functions, weighted probability survival time \\(t\\). Patients unlikely survived \\(t\\) contribute less weight hazard function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"calculating-marginal-expected-survival-and-hazard","dir":"Articles","previous_headings":"Background","what":"Calculating marginal expected survival and hazard","title":"Calculating standardized survival measures in flexsurv","text":"economic evaluations parametric survival models used extrapolate clinical trial data estimate lifetime benefits. context often useful plot marginal ‘expected’ (general population) survival alongside parametric models fitted extrapolated trial data order aid interpretation visual comparison trial subjects population large. Displaying expected survival hazard functions can aid understanding whether assumed hazard survival functions credible (Rutherford et al. (2020)). Expected survival defined -cause survival general population key characteristics study subjects. General population mortality rates often taken national lifetables stratified age, sex, calendar year occasionally prognostic factors (e.g. deprivation indices). Ederer “exact” method estimating expected survival assumes subjects trial population censored end stated follow-time (Ederer, Axtell, Cutler 1961). expected survival survival expect see age-sex matched general population patients continuously followed-. approach used standsurv calculate expected survival “appropriate forcasting, sample size calculations predictions ‘future’ censoring issue” (Therneau 1999). Based exact method, marginal expected survival using background mortality rates calculated using \\(N\\) patients trial time point \\(t\\): \\[\\begin{equation} S^*(t) = \\frac{1}{N} \\sum_{=1}^N S_i^*(t) \\end{equation}\\] \\(S_i^*(t)\\) expected survival \\(\\)th subject time \\(t\\). follows marginal expected hazard weighted average expected hazard rates: \\[\\begin{equation} h^*(t) = \\frac{ \\sum_{=1}^N S_i^*(t) h_i^*(t)}{\\sum_{=1}^N S_i^*(t)} \\end{equation}\\] expected survival \\(\\)th subject follow-time \\(t\\) calculated based matching general population hazard rates. lifetables utilised often provide mortality rates sex (\\(s\\)), age (\\(\\)) calendar year (\\(y\\)), yearly 5-yearly categories. practice expected survival time \\(t\\) given subject calculated cumulative hazard. given follow-time \\(t\\) sum \\(h^*_{asy} \\times \\textrm{Number days state } (,s,y)\\) follow-\\(h^*_{asy}\\) expected hazard age \\(\\), sex \\(s\\), year \\(y\\). requires follow-time individual study dataset split multiple timescales (e.g. age year) time epochs, can visualised Lexis diagram. epoch can matched corresponding expected mortality rate.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"incorporation-of-background-mortality-into-survival-models","dir":"Articles","previous_headings":"Background","what":"Incorporation of background mortality into survival models","title":"Calculating standardized survival measures in flexsurv","text":"Incorporating background mortality survival models directly recommended helps avoid extremely implausible projections (Rutherford et al. (2020)). can done using excess mortality / relative survival model population based ‘expected’ rates, often life tables, introduced explain background mortality. concept behind models partition -cause mortality excess mortality caused disease interest due causes. parametric model can applied isolated excess mortality. may particularly useful making long-term extrapolations pattern disease-specific mortality cause mortality likely different time. Alternatively, cause death information available reliable, separate cause-specific model can fitted disease-specific mortality cause mortality. -cause mortality rate time \\(t\\) individual \\(\\) can partitioned two constituent parts: \\[\\begin{equation} h_i(t) = h^*_i(t) + \\lambda_i(t) \\end{equation}\\] \\(h_i(t)\\) -cause mortality rate (hazard), \\(h^*_i(t)\\) expected background mortality rate \\(\\lambda_i(t)\\) excess mortality rate. Equivalently, hazard rates can transformed survival scale gives -cause survival time \\(t\\) product expected survival relative survival: \\[\\begin{equation} S_i(t) = S^*_i(t) R_i(t) \\end{equation}\\] relative survival, \\(R_i(t)\\), therefore ratio -cause survival expected survival background population. Typically, \\(h_i^*(t)\\) (hence \\(S_i^*(t)\\)) obtained population lifetables. expected mortality rates assumed fixed known parametric model used estimate relative survival (equivalently excess hazard).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"standsurv","dir":"Articles","previous_headings":"","what":"standsurv","title":"Calculating standardized survival measures in flexsurv","text":"standsurv post-estimation command takes flexsurv regression calculates standardized survival measures contrasts. Expected mortality rates survival can also obtained. main features command enables calculation plotting specified follow-times Marginal survival, hazard restricted mean survival time (RMST) metrics Marginal expected (population) survival hazard functions matched study population Marginal -cause survival -cause hazard fitting relative survival models Contrasts survival, hazard RMST metrics (e.g. marginal hazard ratio, differences marginal RMST) Confidence intervals standard errors measures contrasts using either delta method bootstrapping simple syntax user can specify groups wish calculate marginal metrics. groups can formed combination covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"a-worked-example-the-pbc-dataset","dir":"Articles","previous_headings":"standsurv","what":"A worked example: the pbc dataset","title":"Calculating standardized survival measures in flexsurv","text":"example use data German Breast Cancer Study Group 1984-1989, R dataset bc found flexsurv package. dataset death, censoring times 686 primary node positive breast cancer patients together 3-level prognostic group variable levels “Good”, “Medium” “Poor”. demonstration collapse prognostic variable 2 levels: “Good” “Medium/Poor”. also create artificial ages diagnosis dates patients, along assuming patients female. allow correlation age diagnosis patient survival time age prognostic variable. mean age 65 standard deviation 5. load dataset create additional variables. plot Kaplan-Meier shows clear separation survival curves two prognostic groups.","code":"library(flexsurv) library(flexsurvcure) library(ggplot2) library(dplyr) library(survminer) data(bc) set.seed(236236) ## Age at diagnosis is correlated with survival time. A longer survival time ## gives a younger mean age bc$age <- rnorm(dim(bc)[1], mean = 65 - scale(bc$recyrs, scale=F), sd = 5) ## Create age at diagnosis in days - used later for matching to expected rates bc$agedays <- floor(bc$age * 365.25) ## Create some random diagnosis dates between 01/01/1984 and 31/12/1989 bc$diag <- as.Date(floor(runif(dim(bc)[1], as.Date(\"01/01/1984\", \"%d/%m/%Y\"), as.Date(\"31/12/1989\", \"%d/%m/%Y\"))), origin=\"1970-01-01\") ## Create sex (assume all are female) bc$sex <- factor(\"female\") ## 2-level prognostic variable bc$group2 <- ifelse(bc$group==\"Good\", \"Good\", \"Medium/Poor\") head(bc) #> censrec rectime group recyrs age agedays diag sex group2 #> 1 0 1342 Good 3.676712 64.38839 23517 1986-09-15 female Good #> 2 0 1578 Good 4.323288 67.31488 24586 1986-08-12 female Good #> 3 0 1760 Good 4.821918 61.77993 22565 1985-11-10 female Good #> 4 0 1152 Good 3.156164 65.20415 23815 1987-02-28 female Good #> 5 0 967 Good 2.649315 68.74975 25110 1986-05-18 female Good #> 6 0 629 Good 1.723288 64.53328 23570 1987-03-07 female Good km <- survfit(Surv(recyrs, censrec)~group2, data=bc) kmsurvplot <- ggsurvplot(km) kmsurvplot + xlab(\"Time from diagnosis (years)\")"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"a-stratified-weibull-model","dir":"Articles","previous_headings":"standsurv","what":"A stratified Weibull model","title":"Calculating standardized survival measures in flexsurv","text":"start fitting Weibull model group separately. One way fit single saturated model whereby group affects scale shape parameters Weibull distribution. effectively means separate scale shape parameter group, equivalent fitting two separate models. model make proportional hazards assumption hence hazard ratio change time. saturated model approach advantages can use model easily investigate treatment effects using standsurv shall see later. Including group main formula flexsurvreg allows group affect scale parameter Weibull distribution whilst use anc argument flexsurvreg additionally allow group affect shape parameter. Given model contains group2 covariates can obtain predicted (fitted) survival two groups using summary function storing predictions tidy data.frame argument tidy=T. Weibull model appear fit data well try parametric distributions. However, illustration purposes shall continue using Weibull model. now show predictions can obtained standsurv benefit addition flexibility.","code":"model.weibull.sep <- flexsurvreg(Surv(recyrs, censrec)~group2, anc = list(shape = ~ group2), data=bc, dist=\"weibullPH\") model.weibull.sep #> Call: #> flexsurvreg(formula = Surv(recyrs, censrec) ~ group2, anc = list(shape = ~group2), #> data = bc, dist = \"weibullPH\") #> #> Estimates: #> data mean est L95% U95% se #> shape NA 1.68681 1.32989 2.13952 0.20461 #> scale NA 0.02187 0.01119 0.04274 0.00748 #> group2Medium/Poor 0.66618 1.84846 1.14534 2.55157 0.35874 #> shape(group2Medium/Poor) 0.66618 -0.28237 -0.54219 -0.02254 0.13257 #> exp(est) L95% U95% #> shape NA NA NA #> scale NA NA NA #> group2Medium/Poor 6.35001 3.14351 12.82725 #> shape(group2Medium/Poor) 0.75400 0.58147 0.97771 #> #> N = 686, Events: 299, Censored: 387 #> Total time at risk: 2113.425 #> Log-likelihood = -830.4043, df = 4 #> AIC = 1668.809 predictions <- summary(model.weibull.sep, type = \"survival\", tidy=T) ggplot() + geom_line(aes(x=time, y=est, color = group2), data=predictions) + geom_step(aes(x=time, y=surv, group=strata), data=kmsurvplot$data.survplot)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"using-standsurv-to-calculate-marginal-survival","dir":"Articles","previous_headings":"standsurv","what":"Using standsurv to calculate marginal survival","title":"Calculating standardized survival measures in flexsurv","text":"standsurv works similarly margins command R standsurv Stata allowing user specify list scenarios specific covariates fixed certain values. done using argument standsurv provide list scenarios scenario list containing covariates fixed. worked example two scenarios list(group2 = \"Good\") list(group2 = \"Medium/Poor\"). covariates specified scenarios averaged , hence creating marginal, standardized, estimates metric interest. example , covariates model get answer obtained summary. later worked example extends models containing covariates. default calculate survival probabilities event times data can changed type t arguments, respectively. returned object tidy data.frame columns named at1 atn n scenarios specified argument. details labels scenarios stored attributes standsurv object. utilised plot function. plot marginal estimates can easily produced using plot function, produces ggplot object. plot can easily manipulated, example changing axis labels adding plots.","code":"ss.weibull.sep.surv <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\"))) ss.weibull.sep.surv #> # A tibble: 574 × 3 #> time at1 at2 #> #> 1 0.0219 1.00 0.999 #> 2 0.0411 1.00 0.998 #> 3 0.0438 1.00 0.997 #> 4 0.0466 1.00 0.997 #> 5 0.0493 1.00 0.997 #> 6 0.0795 1.00 0.994 #> 7 0.115 0.999 0.991 #> 8 0.126 0.999 0.990 #> 9 0.156 0.999 0.987 #> 10 0.173 0.999 0.985 #> # ℹ 564 more rows plot(ss.weibull.sep.surv) plot(ss.weibull.sep.surv) + xlab(\"Time since diagnosis (years)\") + geom_step(aes(x=time, y=surv, group=strata), data=kmsurvplot$data.survplot)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"other-metrics-marginal-hazards-and-marginal-rmst","dir":"Articles","previous_headings":"standsurv","what":"Other metrics: marginal hazards and marginal RMST","title":"Calculating standardized survival measures in flexsurv","text":"can use type argument calculate marginal hazards restricted mean survival time (RMST). example plot hazard functions two groups obtained follows: Whilst plot RMST given ","code":"ss.weibull.sep.haz <- standsurv(model.weibull.sep, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\"))) plot(ss.weibull.sep.haz) + xlab(\"Time since diagnosis (years)\") ss.weibull.sep.rmst <- standsurv(model.weibull.sep, type = \"rmst\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\"))) plot(ss.weibull.sep.rmst) + xlab(\"Time since diagnosis (years)\")"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"calculating-contrasts","dir":"Articles","previous_headings":"standsurv","what":"Calculating contrasts","title":"Calculating standardized survival measures in flexsurv","text":"advantage fitting saturated model now becomes clear can calculate contrasts scenarios. Suppose interested difference survival functions two groups. easily calculated using contrast = \"difference\" argument, plot contrast can obtained using contrast = TRUE argument plot function. Alternatively, may wish visualise implied hazard ratio fitting separate Weibull models two groups. breast cancer example see hazard ratio (treatment effect) starts high decreasing, suggesting Medium/Poor prognosis start high elevated risk continued excess risk end follow-, compared Good prognosis.","code":"ss.weibull.sep.3 <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), contrast = \"difference\") plot(ss.weibull.sep.3, contrast=TRUE) + xlab(\"Time since diagnosis (years)\") + ylab(\"Difference in survival probabilities\") + geom_hline(yintercept = 0) ss.weibull.sep.4 <- standsurv(model.weibull.sep, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), contrast = \"ratio\") plot(ss.weibull.sep.4, contrast=TRUE) + xlab(\"Time since diagnosis (years)\") + ylab(\"Hazard ratio\") + geom_hline(yintercept = 1)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"confidence-intervals-and-standard-errors","dir":"Articles","previous_headings":"standsurv","what":"Confidence intervals and standard errors","title":"Calculating standardized survival measures in flexsurv","text":"Confidence intervals standard errors metric interest contrasts can obtained either bootstrapping using delta method. Bootstrap confidence intervals calculated specifying ci = TRUE, boot = TRUE, providing number bootstrap samples using B. can also set seed using seed argument allow reproducibility. instead delta method used obtain confidence intervals specify ci = TRUE, boot = FALSE. delta method obtains confidence intervals calculating standard errors given transformation metric interest assuming normality. default use log transformation; hence type = \"survival\" confidence intervals symmetric log survival probabilities. Alternative transformations can specified using trans argument. code shows confidence intervals marginal survival calculated bootstrap method (B = 100) compared delta method. computational efficiency predict 10 time points.","code":"ss.weibull.sep.boot <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=10), ci = TRUE, boot = TRUE, B = 100, seed = 2367) #> Calculating bootstrap standard errors / confidence intervals ss.weibull.sep.deltam <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=10), ci = TRUE, boot = FALSE) #> Calculating standard errors / confidence intervals using delta method plot(ss.weibull.sep.boot, ci = TRUE) + geom_ribbon(aes(x=time, ymin=survival_lci, ymax=survival_uci, color=at, linetype = \"Delta method\"), fill=NA, data=attr(ss.weibull.sep.deltam,\"standpred_at\")) + scale_linetype_manual(values = c(\"Bootstrap\" = \"solid\", \"Delta method\"= \"dashed\")) + ggtitle(\"Comparison of bootstrap and delta method confidence intervals\") #> Scale for linetype is already present. #> Adding another scale for linetype, which will replace the existing scale."},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"adding-age-as-a-covariate","dir":"Articles","previous_headings":"standsurv","what":"Adding age as a covariate","title":"Calculating standardized survival measures in flexsurv","text":"Suppose age added covariate survival model. age included scenarios standsurv default produce standardized estimates survival averaged age distribution study population. Alternatively pass new prediction dataset standsurv obtain standardized estimates population. example, obtain marginal survival estimates fitting stratified Weibull model, firstly standardized age-distribution study population secondly standardized older population mean age 75 standard deviation 5.","code":"model.weibull.age.sep <- flexsurvreg(Surv(recyrs, censrec)~group2 + age, anc = list(shape = ~ group2 + age), data=bc, dist=\"weibullPH\") ## Marginal survival standardized to age distribution of study population ss.weibull.age.sep.surv <- standsurv(model.weibull.age.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50) ) ## Marginal survival standardized to an older population # create a new prediction dataset as a copy of the bc data but whose ages are drawn from # a normal distribution with mean age 75, sd 5. newpred.data <- bc set.seed(247) newpred.data$age = rnorm(dim(bc)[1], 75, 5) ss.weibull.age2.sep.surv <- standsurv(model.weibull.age.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50), newdata=newpred.data) ## Overlay both marginal survival curves plot(ss.weibull.age.sep.surv) + geom_line(aes(x=time, y=survival, color=at, linetype = \"Older population\"), data = attr(ss.weibull.age2.sep.surv, \"standpred_at\") ) + scale_linetype_manual(values = c(\"Study\" = \"solid\", \"Older population\"= \"dashed\")) #> Scale for linetype is already present. #> Adding another scale for linetype, which will replace the existing scale."},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"calculating-expected-survival-and-hazard-in-standsurv","dir":"Articles","previous_headings":"standsurv","what":"Calculating expected survival and hazard in standsurv","title":"Calculating standardized survival measures in flexsurv","text":"overlay marginal expected survival hazard curves require lifetable population hazard rates. demonstrate use US lifetable comes survival package, called survexp.us. lifetables can obtained directly Human Mortality Database (HMD) using HMDHFDplus package. survexp.us lifetable ratetable object stratification factors age, sex year. gives rates mortality per person-day combinations stratification factors. summary survexp.us object shows time-scale days. use lifetable get expected rates trial population need match age, sex year variables dataset ratetable. can use rmap argument . standsurv utilises survexp function survival package calculate expected survival times specified t using ‘exact’ method Ederer. note sex data coded ratetable (“male” “female”) importantly variables record age diagnosis diagnosis date days. important user ensures study data correctly coded variables timescale ratetable matching successful. code demonstrates data therefore need match year variable ratetable diag variable study data, age variable ratetable agedays variable study data. need specify three arguments standsurv. First, lifetable, must ratetable object specified using ratetable argument. Second, may need pass trial dataset standsurv stratifying factors appear covariates flexsurv model. Finally, need careful tell standsurv time scale transformation fitted flexsurv model time scale ratetable. can use scale.ratetable argument . Typically ratetable objects expressed days (e.g. rates per person-day). default therefore scale.ratetable = 365.25, indicates survival model fitted years ratetable days. running standsurv can plot expected survival (hazard) using argument expected = TRUE plot() function. can see marginal expected survival much higher marginal (predicted) survival breast cancer population. can also obtain expected hazards: hazard plot shows model predicting increasing hazard time cancer population, remains significantly higher expected hazard general population. monotonically increasing hazard imposed Weibull distribution may implausible may make us question suitability Weibull model wish extrapolate.","code":"summary(survexp.us) #> Rate table with 3 dimensions: #> age ranges from 0 to 39812.25; with 110 categories #> sex has levels of: male female #> year ranges from 1940-01-01 to 2014-01-01; with 75 categories ss.weibull.sep.expected <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.expected, expected = T) ss.weibull.sep.expectedh <- standsurv(model.weibull.sep, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.expectedh, expected = T)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"incorporation-of-background-mortality","dir":"Articles","previous_headings":"standsurv","what":"Incorporation of background mortality","title":"Calculating standardized survival measures in flexsurv","text":"relative survival model can fitted using flexsurv incorporating background mortality rates. model estimates excess hazard rates relative survival measures. prediction purposes, following fitting relative survival model, standsurv allows user either obtain marginal predictions relative survival / excess hazard -cause survival / -cause hazard. latter calculated multiplying relative survival estimates expected survival get -cause survival, adding excess hazard rates expected hazard get -cause hazard. demonstrate fitting relative survival cure model breast cancer data obtaining predicted -cause survival -cause hazard 30-years diagnosis. mixture cure model makes assumption proportion study population never experience event. relative survival framework cure model assumes excess mortality rate approaches zero (equivalently relative survival reaches asymptote determined cure fraction). fit relative survival cure model Weibull distribution assumed uncured. relative survival mixture-cure model fitted . must pass flexsurvcure expected hazard rates event / censoring time individual, expected rates event times used likelihood function parametric relative survival model. need initally data wrangling. Firstly, calculate attained age attained year (whole years) event time study subjects. Secondly, join data expected rates using matching variables attained age, attained year sex. example, express expected rate per person-year timescale used flexsurv regression model. can now use standsurv obtain -cause survival hazard predictions using type = \"survival\" type = \"hazard\". instead wanted predictions relative survival excess hazards use type = \"relsurvival\" type = \"excesshazard\", respectively. marginal excess hazard now unimodal since cure model forcing initially increasing excess hazard tend zero long-term ‘cured’ subjects remain. marginal -cause hazard tends expected hazard follows thereafter. plot excess hazard confirms .","code":"## reshape US lifetable to be a tidy data.frame, and convert rates to per person-year as flexsurv regression is in years survexp.us.df <- as.data.frame.table(survexp.us, responseName = \"exprate\") %>% mutate(exprate = 365.25 * exprate) survexp.us.df$age <- as.numeric(as.character(survexp.us.df$age)) survexp.us.df$year <- as.numeric(as.character(survexp.us.df$year)) ## Obtain attained age and attained calendar year in (whole) years bc <- bc %>% mutate(attained.age.yr = floor(age + recyrs), attained.year = lubridate::year(diag + rectime)) ## merge in (left join) expected rates at event time bc <- bc %>% left_join(survexp.us.df, by = c(\"attained.age.yr\"=\"age\", \"attained.year\"=\"year\", \"sex\"=\"sex\")) # A stratified relative survival mixture-cure model model.weibull.sep.rs <- flexsurvcure(Surv(recyrs, censrec)~group2, anc = list(shape = ~ group2, scale = ~ group2), data=bc, dist=\"weibullPH\", bhazard=exprate) model.weibull.sep.rs #> Call: #> flexsurvcure(formula = Surv(recyrs, censrec) ~ group2, data = bc, #> bhazard = exprate, dist = \"weibullPH\", anc = list(shape = ~group2, #> scale = ~group2)) #> #> Estimates: #> data mean est L95% U95% se #> theta NA 0.73277 0.60988 0.82787 NA #> shape NA 2.62590 1.88756 3.65306 0.44231 #> scale NA 0.02973 0.00993 0.08896 0.01663 #> group2Medium/Poor 0.66618 -1.76733 -2.48411 -1.05055 0.36571 #> shape(group2Medium/Poor) 0.66618 -0.52951 -0.88563 -0.17340 0.18170 #> scale(group2Medium/Poor) 0.66618 1.81159 0.68352 2.93965 0.57555 #> exp(est) L95% U95% #> theta NA NA NA #> shape NA NA NA #> scale NA NA NA #> group2Medium/Poor 0.17079 0.08340 0.34974 #> shape(group2Medium/Poor) 0.58889 0.41245 0.84080 #> scale(group2Medium/Poor) 6.12014 1.98084 18.90922 #> #> N = 686, Events: 299, Censored: 387 #> Total time at risk: 2113.425 #> Log-likelihood = -784.3236, df = 6 #> AIC = 1580.647 ## All-cause survival ss.weibull.sep.rs.surv <- standsurv(model.weibull.sep.rs, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,30,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Marginal all-cause survival will be calculated #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.rs.surv, expected = T) # All-cause hazard ss.weibull.sep.rs.haz <- standsurv(model.weibull.sep.rs, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,30,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Marginal all-cause hazard will be calculated #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.rs.haz, expected = T) # Excess hazard ss.weibull.sep.rs.excesshaz <- standsurv(model.weibull.sep.rs, type = \"excesshazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,30,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.rs.excesshaz)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"conclusions","dir":"Articles","previous_headings":"","what":"Conclusions","title":"Calculating standardized survival measures in flexsurv","text":"standsurv powerful post-estimation command allows easy calculation number useful prediction metrics. Contrasts can made counterfactual populations interest , regression standardisation, allows targeting marginal estimands. Confidence intervals, via delta method bootstrapping, available benchmarking incorporating background mortality rates also supported.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Christopher Jackson. Author, maintainer. Paul Metcalfe. Contributor. Jordan Amdahl. Contributor. Matthew T. Warkentin. Contributor. Michael Sweeting. Contributor. Kevin Kunzmann. Contributor.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Christopher Jackson (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08","code":"@Article{, title = {{flexsurv}: A Platform for Parametric Survival Modeling in {R}}, author = {Christopher Jackson}, journal = {Journal of Statistical Software}, year = {2016}, volume = {70}, number = {8}, pages = {1--33}, doi = {10.18637/jss.v070.i08}, }"},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"flexsurv-","dir":"","previous_headings":"","what":"Flexible Parametric Survival and Multi-State Models","title":"Flexible Parametric Survival and Multi-State Models","text":"flexsurv R package parametric survival multi-state modelling.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"key-features","dir":"","previous_headings":"","what":"Key features","title":"Flexible Parametric Survival and Multi-State Models","text":"Parametric models time--event (survival) data. Data may right-censored, /left-censored, /left-truncated. Several built-parametric distributions available, including flexible model based splines (Royston Parmar). user-defined parametric model can employed supplying R functions defining distribution. Covariates can included using (log-)linear model parameter distribution. typically defines accelerated failure time proportional hazards model. Multi-state models continuously-observed data can defined piecing together transition-specific parametric models kind. (intermittently-observed data, see instead msm package.)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"learn-more","dir":"","previous_headings":"","what":"Learn more","title":"Flexible Parametric Survival and Multi-State Models","text":"User guide (PDF). Guide multi-state modelling flexsurv. Full reference manual package’s functions. Paper Journal Statistical Software (Jackson 2016). Mostly user guide, kept date.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"installation-stable-cran-version","dir":"","previous_headings":"","what":"Installation (stable CRAN version)","title":"Flexible Parametric Survival and Multi-State Models","text":"","code":"install.packages(\"flexsurv\")"},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"installation-development-version","dir":"","previous_headings":"","what":"Installation (development version)","title":"Flexible Parametric Survival and Multi-State Models","text":"","code":"install.packages(\"devtools\") # if devtools not already installed devtools::install_github('chjackson/flexsurv-dev')"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"Defined sum AICs transition-specific models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"","code":"# S3 method for fmsm AIC(object, ..., k = 2)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"object Object returned fmsm representing multistate model. ... arguments (currently unused). k Penalty applied number parameters (defaults standard 2).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"sum AICs transition-specific models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Second-order Akaike information criterion — AICc.flexsurvreg","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"Second-order \"corrected\" Akaike information criterion, often known AICc (see, e.g. Burnham Anderson 2002). defined -2 log-likelihood + (2*p*n)/(n - p -1), whereas standard AIC defined -2 log-likelihood + 2*p, p number parameters n sample size. correction intended adjust AIC small-sample bias, hence makes difference result small n.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"","code":"# S3 method for flexsurvreg AICc(object, cens = TRUE, ...) # S3 method for flexsurvreg AICC(object, cens = TRUE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"object Fitted model returned flexsurvreg (flexsurvspline). cens Include censored observations sample size term (n) used calculation. See BIC.flexsurvreg discussion issues defining sample size. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"second-order AIC fitted model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"can spelt either AICC AICc.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"Burnham, K. P., Anderson, D. R. (2002) Model Selection Multimodel Inference: practical information-theoretic approach. Second edition. Springer: New York.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":null,"dir":"Reference","previous_headings":"","what":"Second-order Akaike information criterion — AICc","title":"Second-order Akaike information criterion — AICc","text":"Generic function second-order Akaike information criterion. current implementation flexsurv AICc.flexsurvreg, see details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Second-order Akaike information criterion — AICc","text":"","code":"AICc(object, ...) AICC(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Second-order Akaike information criterion — AICc","text":"object Fitted model object. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Second-order Akaike information criterion — AICc","text":"can spelt either AICC AICc.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"Given fitted flexsurvmix model, return Aalen-Johansen estimates probability occupying state series times covering observed data. State 1 represents experienced competing events, state 2 states correspond experienced competing events respectively. estimates can compared fitted probabilities returned p_flexsurvmix check fit flexsurvmix model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"","code":"ajfit(x, newdata = NULL, tidy = TRUE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"x Fitted model returned flexsurvmix. newdata Data frame alternative covariate values check fit . factor covariates supported. tidy TRUE single tidy data frame returned. Otherwise function returns object returned survfit, list objects computing subset-specific estimates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"supported models covariates models containing factor covariates. models factor covariates, Aalen-Johansen estimates computed subsets data defined newdata. newdata supplied, function returns state occupancy probabilities possible combinations factor levels. Aalen-Johansen estimates computed using survfit survival package (Therneau 2020).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"Therneau T (2020). _A Package Survival Analysis R_. R package version 3.2-3, .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","title":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","text":"computes Aalen-Johansen estimates probability occupying state series times, using ajfit. equivalent estimates parametric model produced using p_flexsurvmix, concatenated nonparametric estimates form tidy data frame. data frame can simply plotted using ggplot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","text":"","code":"ajfit_flexsurvmix(x, maxt = NULL, startname = \"Start\", B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","text":"x Fitted model returned flexsurvmix. maxt Maximum time produce parametric estimates . default maximum event time data, maximum time nonparametric estimates . startname Label give state corresponding \"event happened yet\". default \"Start\". B Number simulation replications use calculate confidence interval parametric estimates p_flexsurvmix. Comparable intervals Aalen-Johansen estimates returned set. Otherwise B=NULL intervals returned.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"Computes parametric comparable Aalen-Johansen nonparametric estimates flexible parametric multi-state model, returns together tidy data frame. models covariates, factor covariates, supported. factor covariates, nonparametric estimates computed subgroups defined combinations covariates. Another restriction function transitions must covariates .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"","code":"ajfit_fmsm(x, maxt = NULL, newdata = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"x Object returned fmsm representing flexible parametric multi-state model. must Markov, rather semi-Markov, check performed . Note \"competing risks\" style models, just one source state multiple destination states, Markov, fine . maxt Maximum time compute parametric estimates . newdata Data frame defining subgroups consider. must column covariate model. omitted, potential subgroups defined combinations factor covariates included. Continuous covariates supported.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"Tidy data frame containing Aalen-Johansen parametric estimates state occupancy time, subgroup subgroups included.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Augment data with information from a flexsurv model object — augment.flexsurvreg","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"Augment accepts model object dataset adds information observation dataset. commonly, includes predicted values .fitted column, residuals .resid column, standard errors fitted values .se.fit column. New columns always begin . prefix avoid overwriting columns original dataset.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"","code":"# S3 method for flexsurvreg augment( x, data = NULL, newdata = NULL, type.predict = \"response\", type.residuals = \"response\", ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. data data.frame tibble containing original data used produce object x. newdata data.frame tibble containing original predictors used create x. Defaults NULL, indicating nothing passed newdata. newdata specified, data argument ignored. type.predict Character indicating type prediction use. Passed type argument predict generic. Allowed arguments vary model class, sure read predict.my_class documentation. type.residuals Character indicating type residuals use. Passed type argument residuals generic. Allowed arguments vary model class, sure read residuals.my_class documentation. ... Additional arguments. currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"tibble containing data newdata possible additional columns: .fitted Fitted values model .se.fit Standard errors fitted values .resid Residuals (present newdata specified)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"neither data newdata specified, model.frame(x) used. worth noting model.frame(x) include Surv object original time--event variables used fitting flexsurvreg object. original data desired, specify data.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"","code":"fit <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"exp\") augment(fit, data = ovarian) #> # A tibble: 26 × 9 #> futime fustat age resid.ds rx ecog.ps .pred_time .std_error .resid #> #> 1 59 1 72.3 2 1 1 213. 113. -154. #> 2 115 1 74.5 2 1 1 165. 103. -49.8 #> 3 156 1 66.5 2 1 2 427. 149. -271. #> 4 421 0 53.4 2 2 1 2016. 879. -1595. #> 5 431 1 50.3 2 1 1 2886. 1576. -2455. #> 6 448 0 56.4 1 1 2 1402. 495. -954. #> 7 464 1 56.9 2 2 2 1320. 452. -856. #> 8 475 1 59.9 2 2 2 934. 281. -459. #> 9 477 0 64.2 2 1 1 560. 174. -82.8 #> 10 563 1 55.2 1 2 2 1626. 623. -1063. #> # ℹ 16 more rows"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":null,"dir":"Reference","previous_headings":"","what":"Natural cubic spline basis — basis","title":"Natural cubic spline basis — basis","text":"Compute basis natural cubic spline, default using parameterisation described Royston Parmar (2002). Used flexible parametric survival models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Natural cubic spline basis — basis","text":"","code":"basis(knots, x, spline = \"rp\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Natural cubic spline basis — basis","text":"knots Vector knot locations increasing order, including boundary knots beginning end. x Vector ordinates compute basis . spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Natural cubic spline basis — basis","text":"matrix one row ordinate one column knot. basis returns basis, dbasis returns derivative respect x. fss dfss , order arguments swapped around consistency similar functions R packages.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Natural cubic spline basis — basis","text":"exact formula basis given flexsurvspline.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Natural cubic spline basis — basis","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Wang W, Yan J (2021). Shape-Restricted Regression Splines R Package splines2. Journal Data Science, 19(3), 498-517.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Natural cubic spline basis — basis","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":null,"dir":"Reference","previous_headings":"","what":"Breast cancer survival data — bc","title":"Breast cancer survival data — bc","text":"Survival times 686 patients primary node positive breast cancer.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Breast cancer survival data — bc","text":"","code":"bc"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Breast cancer survival data — bc","text":"data frame 686 rows.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Breast cancer survival data — bc","text":"German Breast Cancer Study Group, 1984-1989. Used reference dataset spline-based survival model Royston Parmar (2002), implemented flexsurvspline. Originally provided stpm (Royston 2001, 2004) stpm2 (Lambert 2009, 2010) Stata modules.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Breast cancer survival data — bc","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Sauerbrei, W. Royston, P. (1999). Building multivariable prognostic diagnostic models: transformation predictors using fractional polynomials. Journal Royal Statistical Society, Series 162:71-94.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"Bayesian Information Criterion (BIC) comparison flexsurvreg models","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"","code":"# S3 method for flexsurvreg BIC(object, cens = TRUE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"object Fitted model returned flexsurvreg (flexsurvspline). cens Include censored observations sample size term (n) used calculation BIC. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"BIC fitted model. minus twice log likelihood plus p*log(n), p number parameters n sample size data. weights supplied flexsurv, sample size defined sum weights.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"\"official\" definition sample size use BIC censored survival analysis. BIC based approximation Bayesian model comparison using Bayes factors implicit vague prior. Informally, sample size describes number \"units\" giving rise distinct piece information (Kass Raftery 1995). However censored observations provide less information observed events, principle. default used number individuals, consistency familiar kinds statistical modelling. However censoring heavy, number events may better represent amount information. Following principles, best approximation expected somewere . AIC BIC intended measure different things. Briefly, AIC measures predictive ability, whereas BIC expected choose true model set models one truth. Therefore BIC chooses simpler models tiniest sample sizes (\\(log(n)>2\\), \\(n>7\\)). AIC might preferred typical situation \"models wrong useful\". AIC also gives similar results cross-validation (Stone 1977).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"Kass, R. E., & Raftery, . E. (1995). Bayes factors. Journal American Statistical Association, 90(430), 773-795. Stone, M. (1977). asymptotic equivalence choice model cross‐validation Akaike's criterion. Journal Royal Statistical Society: Series B (Methodological), 39(1), 44-47.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"Calculate confidence interval model output repeatedly replacing parameters fitted model object draw multivariate normal distribution maximum likelihood estimates, recalculating output function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"","code":"bootci.fmsm( x, B, fn, cl = 0.95, attrs = NULL, cores = NULL, sample = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. list objects, defining multi-state model. B Number parameter draws use fn Function bootstrap results . must argument named x giving fitted flexsurv model object. may return value format, e.g. list, matrix vector, long can converted numeric vector unlist. See example . cl Width symmetric confidence interval, default 0.95 attrs attributes value returned fn want confidence intervals . unlisted, possible, appended result vector. cores Number cores use parallel processing. sample TRUE bootstrap sample returned. FALSE quantiles sample returned giving confidence interval. ... Additional arguments pass fn.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"matrix two rows, giving upper lower confidence limits respectively. row vector length unlisted result function corresponding fncall.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"","code":"## How to use bootci.fmsm ## Write a function with one argument called x giving a fitted model, ## and returning some results of the model. The results may be in any form. tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) bexp <- flexsurvreg(Surv(Tstart, Tstop, status) ~ trans, data=bosms3, dist=\"exp\") summfn <- function(x, t){ resp <- flexsurv::pmatrix.fs(x, trans=tmat, t=t) rest <- flexsurv::totlos.fs(x, trans=tmat, t=t) list(resp, rest) } ## Use bootci.fmsm to obtain the confidence interval ## The matrix columns are in the order of the unlisted results of the original ## summfn. You will have to rearrange them into the format that you want. ## If summfn has any extra arguments, in this case \\code{t}, make sure they are ## passed through via the ... argument to bootci.fmsm bootci.fmsm(bexp, B=3, fn=summfn, t=10) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] #> 2.5% 0.08592861 0 0 0.1375007 0.06010952 0 0.7355608 0.9103557 1 #> 97.5% 0.09767351 0 0 0.1713291 0.08964429 0 0.7652248 0.9398905 1 #> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] #> 2.5% 3.724345 0 0 1.965259 3.340625 0 3.920215 6.225585 10 #> 97.5% 3.879065 0 0 2.259760 3.774415 0 4.160991 6.659375 10 bootci.fmsm(bexp, B=3, fn=summfn, t=5) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] #> 2.5% 0.2517227 0 0 0.2579086 0.2297033 0 0.4145488 0.7130623 1 #> 97.5% 0.3156585 0 0 0.2714704 0.2869377 0 0.4902755 0.7702967 1 #> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] #> 2.5% 2.711962 0 0 1.049453 2.617790 0 0.9831934 2.144306 5 #> 97.5% 2.967353 0 0 1.101155 2.855694 0 1.1868829 2.382210 5"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":null,"dir":"Reference","previous_headings":"","what":"Bronchiolitis obliterans syndrome after lung transplants — bos","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"dataset containing histories bronchiolitis obliterans syndrome (BOS) lung transplant recipients. BOS chronic decline lung function, often observed lung transplantation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"data frame containing sequence observed censored transitions next stage severity death. grouped patient includes histories 204 patients. patients start state 1 (BOS) six months transplant, may subsequently develop BOS die. bosms3 contains data three-state model: BOS, BOS death. bosms4 uses four-state representation: BOS, mild BOS, moderate/severe BOS death.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"Papworth Hospital, U.K.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"entry time patient stage BOS estimated clinicians, based history lung function measurements acute rejection infection episodes. BOS assumed occur beyond six months transplant. first six months function patient's new lung stabilises. Subsequently BOS diagnosed comparing lung function \"baseline\" value. data provided msm package, native format msm allow Markov models fitted. flexsurv, much flexible models can fitted.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"Heng. D. et al. (1998). Bronchiolitis Obliterans Syndrome: Incidence, Natural History, Prognosis, Risk Factors. Journal Heart Lung Transplantation 17(12)1255--1263.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"Extract model coefficients fitted flexible survival models. presents parameter estimates, transformed real line necessary. example, shape scale parameters, constrained positive, returned log scale.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"","code":"# S3 method for flexsurvreg coef(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"returns mod$res.t[,\"est\"] component fitted model object mod. See flexsurvreg, flexsurvspline full documentation components.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"matches behaviour coef.default standard R model families glm, intercepts regression models presented scale covariate effects. Note parameter distribution fitted flexsurvreg flexsurvreg may intercept regression model.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"Cox-Snell residuals parametric survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"","code":"coxsnell_flexsurvreg(x)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"x Object returned flexsurvreg flexsurvspline representing fitted survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"data frame column called est giving Cox-Snell residual, defined fitted cumulative hazard data point. fitted cumulative hazard given observed data point, columns indicating observation time, observed event status, covariate values defining data point. cumulative hazards est form censored sample Exponential(1). Therefore check fit model, plot nonparametric estimate cumulative hazard curve diagonal line origin, theoretical cumulative hazard trajectory Exponential(1).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") cs <- coxsnell_flexsurvreg(fitg) ## Model appears to fit well, with some small sample noise surv <- survfit(Surv(cs$est, ovarian$fustat) ~ 1) plot(surv, fun=\"cumhaz\") abline(0, 1, col=\"red\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hessian.html","id":null,"dir":"Reference","previous_headings":"","what":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","title":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","text":"perform quick check expected runtime adjust precision accordingly.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hessian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","text":"","code":".hessian(f, x, seconds.warning = 60, default.r = 6, min.r = 2, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hessian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","text":"f function compute Hessian x location evaluate Hessian seconds.warning time threshold seconds trigger message reduce number iterations Richardson extrapolation numDeriv::hessian default.r default number iterations (high-precision recommendation numDeriv) min.r minial number iteration, must least 2, ... arguments passed method.args numDeriv::hessian","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hess_to_cov.html","id":null,"dir":"Reference","previous_headings":"","what":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","title":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","text":"helper function safely convert Hessian matrix covariance matrix","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hess_to_cov.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","text":"","code":".hess_to_cov(hessian, tol.solve = 1e-09, tol.evalues = 1e-05, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hess_to_cov.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","text":"hessian hessian matrix convert covariance matrix (must evaluated MLE) tol.solve tolerance used solve() tol.evalues accepted tolerance negative eigenvalues covariance matrix ... arguments passed Matrix::nearPD","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":null,"dir":"Reference","previous_headings":"","what":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"flexsurv: Flexible parametric models time--event data, including generalized gamma, generalized F Royston-Parmar spline model, extensible user-defined distributions.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"flexsurvreg fits parametric models time--event (survival) data. Data may right-censored, /left-censored, /left-truncated. Several built-parametric distributions available. user-defined parametric model can also employed supplying list basic information distribution, including density hazard ideally also cumulative distribution hazard. Covariates can included using linear model parameter distribution, log-transformed real line necessary. typically defines accelerated failure time proportional hazards model, depending distribution parameter. flexsurvspline fits flexible survival model Royston Parmar (2002) log cumulative hazard modelled natural cubic spline function log time. Covariates can included spline parameters, giving either proportional hazards model arbitrarily-flexible time-dependent effect. Alternative proportional odds probit parameterisations available. Output models can presented survivor, cumulative hazard hazard functions (summary.flexsurvreg). can plotted nonparametric estimates (plot.flexsurvreg) assess goodness--fit. user-defined function parameters may summarised way. Multi-state models time--event data can also fitted functions. Predictions models can made using functions pmatrix.fs, pmatrix.simfs, totlos.fs, totlos.simfs, sim.fmsm, alternatively msfit.flexsurvreg followed mssample probtrans package mstate. Distribution (``dpqr'') functions generalized gamma F distributions given GenGamma, GenF (preferred parameterisations) GenGamma.orig, GenF.orig (original parameterisations). flexsurv also includes standard Gompertz distribution unrestricted shape parameter, see Gompertz.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"user-guide","dir":"Reference","previous_headings":"","what":"User guide","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"flexsurv user guide vignette explains methods detail, gives several worked examples. vignette flexsurv-examples gives complicated examples, users encouraged submit .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"Jackson, C. (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08 Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Cox, C. (2008). generalized \\(F\\) distribution: umbrella parametric survival analysis. Statistics Medicine 27:4301-4312. Cox, C., Chu, H., Schneider, M. F. Muñoz, . (2007). Parametric survival analysis taxonomy hazard functions generalized gamma distribution. Statistics Medicine 26:4252-4374","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible parametric mixture models for times to competing events — flexsurvmix","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"mixture model competing events, individual can experience one set different events. specify model probability experience event others, model time event conditionally event occurring first.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"","code":"flexsurvmix( formula, data, event, dists, pformula = NULL, anc = NULL, partial_events = NULL, initp = NULL, inits = NULL, fixedpars = NULL, dfns = NULL, method = \"direct\", em.control = NULL, optim.control = NULL, aux = NULL, sr.control = survreg.control(), integ.opts, hess.control = NULL, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"formula Survival model formula. left hand side Surv object specified flexsurvreg. may define various kinds censoring, described Surv. covariates right hand side formula placed location parameter every component-specific distribution. Covariates parameters component-specific distributions may supplied using anc argument. Alternatively, formula may list formulae, one component alternative event. may used specify different covariates location parameter different components. list formulae may also used indicate particular individuals, different events may observed different ways, different censoring mechanisms. list component specifies data censoring scheme mixture component. example, suppose studying people admitted hospital, competing states death hospital discharge hospital. time t know particular individual still alive, know whether still hospital, discharged. case, individual die hospital, death time right censored t. individual () discharged death, discharge time completely unknown, thus interval-censored (0,Inf). Therefore, need store different event time status variables data different alternative events. specified formula = list(\"discharge\" = Surv(t1di, t2di, type=\"interval2\"), \"death\" = Surv(t1de, status_de)) individual, (t1di, t2di) = (0, Inf) (t1de, status_de) = (t, 0). \"dot\" notation commonly used indicate \"remaining variables\" formula supported flexsurvmix. data Data frame containing variables mentioned formula, event anc. event Variable data specifies alternative events observed individual. individual's follow- right-censored, event otherwise unknown, variable must value NA. Ideally factor, since mixture components can easily identified results name instead number. already factor, coerced one. levels factor define required order components list arguments dists, anc, inits dfns. Alternatively, components list arguments named according levels event, components can arranged order. dists Vector specifying parametric distribution use component. distributions supported flexsurvreg. pformula Formula describing covariates include component membership proabilities multinomial logistic regression. first component treated baseline. \"dot\" notation commonly used indicate \"remaining variables\" formula supported. anc List component-specific lists, length equal number components. component-specific list list formulae representing covariate effects parameters distribution. covariates one component others, list containing one null formula location parameter supplied component covariates, e.g list(rate=~1) location parameter called rate. Covariates location parameter may also supplied instead formula. Supplying anc allows components others covariates location parameter. covariate location parameter provided formula, covariates parameters, null formula included location parameter anc, e.g list(rate=~1) partial_events List specifying factor levels event indicate knowledge individual experience particular events, may experience others. names list indicate codes indicate partial knowledge individuals. list component vector, must subset levels(event) defining events person corresponding event code may experience. example, suppose three alternative events called \"disease1\",\"disease2\" \"disease3\", individuals know experience \"disease2\", may experience two events. case must create new factor level, called, example \"disease1or3\", set value event \"disease1or3\" individuals. use \"partial_events\" argument tell flexsurvmix potential events individuals new factor level. partial_events = list(\"disease1or3\" = c(\"disease1\",\"disease3\")) initp Initial values component membership probabilities. default, assumed equal component. inits List component-specific vectors. component-specific vector contains initial values parameters component-specific model, supplied inits argument flexsurvreg. default, heuristic used obtain initial values, depends parametric distribution used, usually based empirical mean /variance survival times. fixedpars Indexes parameters fix initial values optimise. Arranged order: baseline mixing probabilities, covariates mixing probabilities, time--event parameters mixing component. Within mixing components, time--event parameters ordered way flexsurvreg. fixedpars=TRUE parameters fixed function simply calculates log-likelihood initial values. currently supported using EM algorithm. dfns List lists user-defined distribution functions, one mixture component. list component specified dfns argument flexsurvreg. method Method maximising likelihood. Either \"em\" EM algorithm, \"direct\" direct maximisation. em.control List settings control EM algorithm fitting. options currently available trace set 1 print parameter estimates iteration EM algorithm reltol convergence criterion. algorithm stops log likelihood changes relative amount less reltol. default optim, , sqrt(.Machine$double.eps). var.method method compute covariance matrix. \"louis\" method Louis (1982), \"direct\"direct numerical calculation Hessian log likelihood. optim.p.control list passed control argument optim M step component membership probability parameters. optimisation M step time--event parameters can controlled optim.control argument flexsurvmix. example, em.control = list(trace=1, reltol=1e-12). optim.control List options pass control argument optim, used method=\"direct\" M step time--event parameters method=\"em\". default, uses fnscale=10000 ndeps=rep(1e-06,p) p number parameters estimated, unless user specifies options explicitly. aux named list arguments pass custom distribution functions. used, example, flexsurvspline supply knot locations modelling scale (e.g. hazard odds). used fix parameters distribution --- use fixedpars . sr.control models use survreg find maximum likelihood estimates (Weibull, exponential, log-normal), list passed control argument survreg. integ.opts List named arguments pass integrate, custom density hazard provided without cumulative version. example, integ.opts = list(rel.tol=1e-12) hess.control List options control covariance matrix computation. Available options : numeric. TRUE numerical methods used compute Hessian models analytic Hessian available. models include Weibull (versions), exponential, Gompertz spline models hazard odds scale. default use analytic Hessian models. models, numerical methods always used compute Hessian, whether option set. tol.solve. tolerance used solve inverting Hessian (default .Machine$double.eps) tol.evalues accepted tolerance negative eigenvalues covariance matrix (default 1e-05). Hessian positive definite, thus invertible, maximum likelihood. Hessian computed optimisation convergence inverted, either converged result maximum likelihood (e.g. \"saddle point\"), numerical methods used obtain Hessian inaccurate. suspect Hessian computed wrongly enough invertible, wrongly enough nearest valid inverse inaccurate estimate covariance matrix, tolerance values can modified (reducing tol.solve increasing tol.evalues) allow inverse computed. ... Optional arguments general-purpose optimisation routine optim. example, BFGS optimisation algorithm default flexsurvreg, can changed, example method=\"Nelder-Mead\" can robust poor initial values. optimisation fails converge, consider normalising problem using, example, control=list(fnscale = 2500), example, replacing 2500 number order magnitude likelihood. 'false' convergence reported non-positive-definite Hessian, consider tightening tolerance criteria convergence. optimisation takes long time, intermediate steps can printed using trace argument control list. See optim details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"List objects containing information fitted model. important one res, data frame containing parameter estimates associated information.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"differs usual \"competing risks\" models, specify \"cause-specific hazards\" describing time competing event. time observed individual one competing events happens first. event happens first defined minimum times alternative events. flexsurvmix function fits mixture model data consisting single time event individual, indicator type event occurs individual. time event may observed censored, just flexsurvreg, type event may known unknown. typical application, follow set individuals experience event maximum follow-time reached, event type known time observed, event type unknown follow-ends time right-censored. model fitted maximum likelihood, either directly using expectation-maximisation (EM) algorithm, wrapping flexsurvreg compute likelihood implement E M steps. worked examples given package vignette multi-state modelling, can viewed running vignette(\"multistate\", package=\"flexsurv\").","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"Jackson, C. H. Tom, B. D. M. Kirwan, P. D. Mandal, S. Seaman, S. R. Kunzmann, K. Presanis, . M. De Angelis, D. (2022) comparison two frameworks multi-state modelling, applied outcomes hospital admissions COVID-19. Statistical Methods Medical Research 31(9) 1656-1674. Larson, M. G., & Dinse, G. E. (1985). mixture model regression analysis competing risks data. Journal Royal Statistical Society: Series C (Applied Statistics), 34(3), 201-211. Lau, B., Cole, S. R., & Gange, S. J. (2009). Competing risk regression models epidemiologic data. American Journal Epidemiology, 170(2), 244-256.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible parametric regression for time-to-event data — flexsurvreg","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Parametric modelling regression time--event data. Several built-distributions available, users may supply .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"","code":"flexsurvreg( formula, anc = NULL, data, weights, bhazard, rtrunc, subset, na.action, dist, inits, fixedpars = NULL, dfns = NULL, aux = NULL, cl = 0.95, integ.opts = NULL, sr.control = survreg.control(), hessian = TRUE, hess.control = NULL, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"formula formula expression conventional R linear modelling syntax. response must survival object returned Surv function, covariates given right-hand side. example, Surv(time, dead) ~ age + sex Surv objects type=\"right\",\"counting\", \"interval1\" \"interval2\" supported, corresponding right-censored, left-truncated interval-censored observations. covariates, specify 1 right hand side, example Surv(time, dead) ~ 1. right hand side specified . remaining variables included covariates. example, Surv(time, dead) ~ . corresponds Surv(time, dead) ~ age + sex data contains variables time, dead, age, sex. default, covariates placed ``location'' parameter distribution, typically \"scale\" \"rate\" parameter, linear model, log-linear model parameter must positive. gives accelerated failure time model proportional hazards model (see dist ) depending distribution parameterised. Covariates can placed (``ancillary'') parameters using name parameter ``function'' formula. example, Weibull model, following expresses scale parameter terms age treatment variable treat, shape parameter terms sex treatment. Surv(time, dead) ~ age + treat + shape(sex) + shape(treat) However, names ancillary parameters clash real functions might used formulae ((), factor()), functions work formula. safer way model covariates ancillary parameters anc argument flexsurvreg. survreg users also note function strata() ignored, covariates surrounded strata() applied location parameter. Likewise function frailty() handled. anc alternative safer way model covariates ancillary parameters, , parameters main location parameter distribution. named list formulae, name component giving parameter modelled. model can also defined : Surv(time, dead) ~ age + treat, anc = list(shape = ~ sex + treat) data data frame find variables supplied formula. given, variables working environment. weights Optional numeric variable giving weights individual data. fitted model defined maximising weighted sum individual-specific log-likelihoods. bhazard Optional variable giving expected hazards relative survival models. model described Nelson et al. (2007). bhazard contain vector values person data. people observed events, bhazard refers hazard observed event time. people whose event time left-censored interval-censored, bhazard contain probability dying end corresponding interval, conditionally alive start. people whose event time right-censored, value bhazard ignored need specified. bhazard supplied, parameter estimates returned flexsurvreg outputs returned summary.flexsurvreg describe parametric model relative survival. relative survival models, log-likelihood returned flexsurvreg partial log-likelihood, omits constant term defined sum cumulative hazards event censoring time individual. Hence constant must added full likelihood needed. rtrunc Optional variable giving individual-specific right-truncation times. Used analysing data \"retrospective ascertainment\". example, suppose want estimate distribution time onset disease death, observed cases known died current date. case, times onset death individuals data right-truncated current date minus onset date. Predicted survival times new cases can described un-truncated version fitted distribution. models can suffer weakly identifiable parameters badly-behaved likelihood functions, advised compare convergence different initial values supplying different inits arguments flexsurvreg. subset Vector integers logicals specifying subset observations used fit. na.action missing-data filter function, applied 'subset' argument used. Default options()$na.action. dist Typically, one strings first column following table, identifying built-distribution. table also identifies location parameters, whether covariates parameters represent proportional hazards (PH) accelerated failure time (AFT) model. accelerated failure time model, covariate speeds slows passage time. coefficient (presented log scale) log(2), doubling covariate value give half expected survival time. \"exponential\" \"lognormal\" can used aliases \"exp\" \"lnorm\", compatibility survreg. Alternatively, dist can list specifying custom distribution. See section ``Custom distributions'' construct list. flexible spline-based distributions can also fitted flexsurvspline. parameterisations built-distributions used built-distribution functions: dgengamma, dgengamma.orig, dgenf, dgenf.orig, dweibull, dgamma, dexp, dlnorm, dgompertz, respectively. functions base R used available, otherwise, provided package. package vignette \"Distributions reference\" lists survivor functions covariate effect parameterisations used built-distribution. Weibull, exponential log-normal distributions, flexsurvreg simply works calling survreg obtain maximum likelihood estimates, calling optim double-check convergence obtain covariance matrix flexsurvreg's preferred parameterisation. Weibull parameterisation different survreg, instead consistent dweibull. \"scale\" reported survreg equivalent 1/shape defined dweibull hence flexsurvreg. first coefficient (Intercept) reported survreg equivalent log(scale) dweibull flexsurvreg. Similarly exponential distribution, rate, rather mean, modelled covariates. object flexsurv.dists lists names built- distributions, parameters, location parameter, functions used transform parameter ranges real line, functions used generate initial values parameter estimation. inits optional numeric vector giving initial values unknown parameter. numbered order: baseline parameters (order appear distribution function, e.g. shape scale Weibull), covariate effects location parameter, covariate effects remaining parameters. order printed estimates fitted model. specified, default initial values chosen simple summary survival censoring times, example mean often used initialize scale parameters. See object flexsurv.dists exact methods used. likelihood surface may uneven, advised run optimisation starting various different initial values ensure convergence true global maximum. fixedpars Vector indices parameters whose values fixed initial values optimisation. indices ordered inits. example, stable generalized Gamma model two covariates, fix third three generalized gamma parameters (shape Q, see help GenGamma) second covariate, specify fixedpars = c(3, 5) dfns alternative way define custom survival distribution (see section ``Custom distributions'' ). list whose components may include \"d\", \"p\", \"h\", \"H\" containing probability density, cumulative distribution, hazard, cumulative hazard functions distribution. example, list(d=dllogis, p=pllogis). dfns used, custom dlist must still provided, dllogis pllogis need visible global environment. useful flexsurvreg called within functions environments distribution functions also defined dynamically. aux named list arguments pass custom distribution functions. used, example, flexsurvspline supply knot locations modelling scale (e.g. hazard odds). used fix parameters distribution --- use fixedpars . cl Width symmetric confidence intervals maximum likelihood estimates, default 0.95. integ.opts List named arguments pass integrate, custom density hazard provided without cumulative version. example, integ.opts = list(rel.tol=1e-12) sr.control models use survreg find maximum likelihood estimates (Weibull, exponential, log-normal), list passed control argument survreg. hessian Calculate covariances confidence intervals parameters. Defaults TRUE. hess.control List options control covariance matrix computation. Available options : numeric. TRUE numerical methods used compute Hessian models analytic Hessian available. models include Weibull (versions), exponential, Gompertz spline models hazard odds scale. default use analytic Hessian models. models, numerical methods always used compute Hessian, whether option set. tol.solve. tolerance used solve inverting Hessian (default .Machine$double.eps) tol.evalues accepted tolerance negative eigenvalues covariance matrix (default 1e-05). Hessian positive definite, thus invertible, maximum likelihood. Hessian computed optimisation convergence inverted, either converged result maximum likelihood (e.g. \"saddle point\"), numerical methods used obtain Hessian inaccurate. suspect Hessian computed wrongly enough invertible, wrongly enough nearest valid inverse inaccurate estimate covariance matrix, tolerance values can modified (reducing tol.solve increasing tol.evalues) allow inverse computed. ... Optional arguments general-purpose optimisation routine optim. example, BFGS optimisation algorithm default flexsurvreg, can changed, example method=\"Nelder-Mead\" can robust poor initial values. optimisation fails converge, consider normalising problem using, example, control=list(fnscale = 2500), example, replacing 2500 number order magnitude likelihood. 'false' convergence reported non-positive-definite Hessian, consider tightening tolerance criteria convergence. optimisation takes long time, intermediate steps can printed using trace argument control list. See optim details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"list class \"flexsurvreg\" containing information fitted model. Components interest users may include: call copy function call, use post-processing. dlist List defining survival distribution used. res Matrix maximum likelihood estimates confidence limits, parameters natural scales. res.t Matrix maximum likelihood estimates confidence limits, parameters transformed real line (using log transform built- models necessary). coef, vcov confint methods flexsurvreg objects work scale. coefficients transformed maximum likelihood estimates, res.t. Calling coef() flexsurvreg object simply returns component. loglik Log-likelihood. differ Stata, sum log uncensored survival times added log-likelihood survival models, remove dependency time scale. relative survival models specified bhazard, partial log-likelihood omits constant term defined sum cumulative hazards event censoring times. logliki Vector individual contributions log-likelihood AIC Akaike's information criterion (-2*log likelihood + 2*number estimated parameters) cov Covariance matrix parameters, real-line scale (e.g. log scale), can extracted vcov. data Data used model fit. extract standard R formats, use use model.frame.flexsurvreg model.matrix.flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Parameters estimated maximum likelihood using algorithms available standard R optim function. Parameters defined positive estimated log scale. Confidence intervals estimated Hessian maximum, transformed back original scale parameters. usage flexsurvreg intended similar survreg survival package.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"custom-distributions","dir":"Reference","previous_headings":"","what":"Custom distributions","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"flexsurvreg intended easy extend handle new distributions. define new distribution use flexsurvreg, construct list following elements: \"name\" string naming distribution. called \"dist\", example, must visible working environment, least, either ) function called ddist defines probability density, b) function called hdist defines hazard. Ideally, case ) also function called pdist defines probability distribution cumulative density, case b) function called Hdist defining cumulative hazard. additional functions provided, flexsurv attempts automatically create numerically integrating density hazard function. However, model fitting much slower, may even work , analytic versions functions available. functions must accept vector arguments (representing different times, alternative values parameter) return results vector. function Vectorize may helpful : see example . functions may add-package (see example) may user-written. user-written must defined global environment, supplied explicitly dfns argument flexsurvreg. latter may useful functions created dynamically (source flexsurvspline) thus visible R's scoping rules. Arguments parameters must named conventional way -- example x first argument density function hazard, dnorm(x, ...) q first argument probability function. Density functions also argument log, parameters, TRUE, computes log density, using numerically stable additive formula possible. Additional functions names beginning \"DLd\" \"DLS\" may defined calculate derivatives log density log survival probability, respect parameters distribution. parameters expressed real line, example log transformation defined positive. first argument must named t, representing time, remaining arguments must named parameters density function. function must return matrix rows corresponding times, columns corresponding parameters distribution. derivatives used, available, speed model fitting optim. \"pars\" Vector strings naming parameters distribution. must names arguments density probability functions. \"location\" Name main parameter governing mean distribution. default parameter covariates placed formula supplied flexsurvreg. \"transforms\" List R functions transform range values taken parameter onto real line. example, c(log, log) distribution two positive parameters. \"inv.transforms\" List R functions defining corresponding inverse transformations. Note must lists, even single parameter distributions supplied , e.g. c(exp) list(exp). \"inits\" function observed survival times t (including right-censoring times, using halfway point interval-censored times) returns vector reasonable initial values maximum likelihood estimation parameter. example, function(t){ c(1, mean(t)) } always initialize first two parameters 1, second (scale parameter, instance) mean t. example, suppose want use extreme value survival distribution. available CRAN package eha, provides conventionally-defined density probability functions called eha::dEV eha::pEV. See Examples custom list case, subsequent command fit model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Jackson, C. (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08 Cox, C. (2008) generalized \\(F\\) distribution: umbrella parametric survival analysis. Statistics Medicine 27:4301-4312. Cox, C., Chu, H., Schneider, M. F. Muñoz, . (2007) Parametric survival analysis taxonomy hazard functions generalized gamma distribution. Statistics Medicine 26:4252-4374 Jackson, C. H. Sharples, L. D. Thompson, S. G. (2010) Survival models health economic evaluations: balancing fit parsimony improve prediction. International Journal Biostatistics 6(1):Article 34. Nelson, C. P., Lambert, P. C., Squire, . B., & Jones, D. R. (2007). Flexible parametric models relative survival, application coronary heart disease. Statistics medicine, 26(30), 5486-5498.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"","code":"## Compare generalized gamma fit with Weibull fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, dist=\"gengamma\") fitg #> Call: #> flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, #> dist = \"gengamma\") #> #> Estimates: #> est L95% U95% se #> mu 6.426 4.984 7.868 0.736 #> sigma 1.426 0.888 2.292 0.345 #> Q -0.766 -3.340 1.807 1.313 #> #> N = 26, Events: 12, Censored: 14 #> Total time at risk: 15588 #> Log-likelihood = -96.94907, df = 3 #> AIC = 199.8981 #> fitw <- flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, dist=\"weibull\") fitw #> Call: #> flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, #> dist = \"weibull\") #> #> Estimates: #> est L95% U95% se #> shape 1.108 0.674 1.822 0.281 #> scale 1225.419 690.421 2174.979 358.714 #> #> N = 26, Events: 12, Censored: 14 #> Total time at risk: 15588 #> Log-likelihood = -97.9539, df = 2 #> AIC = 199.9078 #> plot(fitg) lines(fitw, col=\"blue\", lwd.ci=1, lty.ci=1) ## Identical AIC, probably not enough data in this simple example for a ## very flexible model to be worthwhile. ## Custom distribution ## make \"dEV\" and \"pEV\" from eha package (if installed) ## available to the working environment if (require(\"eha\")) { custom.ev <- list(name=\"EV\", pars=c(\"shape\",\"scale\"), location=\"scale\", transforms=c(log, log), inv.transforms=c(exp, exp), inits=function(t){ c(1, median(t)) }) fitev <- flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, dist=custom.ev) fitev lines(fitev, col=\"purple\", col.ci=\"purple\") } #> Loading required package: eha #> #> Attaching package: 'eha' #> The following objects are masked from 'package:flexsurv': #> #> Hgompertz, Hllogis, Hlnorm, Hweibull, dgompertz, dllogis, #> hgompertz, hllogis, hlnorm, hweibull, pgompertz, pllogis, #> qgompertz, qllogis, rgompertz, rllogis #> Forming integrated rmst function... #> Forming integrated mean function... ## Custom distribution: supply the hazard function only hexp2 <- function(x, rate=1){ rate } # exponential distribution hexp2 <- Vectorize(hexp2) custom.exp2 <- list(name=\"exp2\", pars=c(\"rate\"), location=\"rate\", transforms=c(log), inv.transforms=c(exp), inits=function(t)1/mean(t)) flexsurvreg(Surv(futime, fustat) ~ 1, data = ovarian, dist=custom.exp2) #> Error in form.dp(dlist, dfns, integ.opts): Neither density function \"dexp2\" nor hazard function \"hexp2\" found flexsurvreg(Surv(futime, fustat) ~ 1, data = ovarian, dist=\"exp\") #> Call: #> flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, #> dist = \"exp\") #> #> Estimates: #> est L95% U95% se #> rate 0.000770 0.000437 0.001356 0.000222 #> #> N = 26, Events: 12, Censored: 14 #> Total time at risk: 15588 #> Log-likelihood = -98.0322, df = 1 #> AIC = 198.0644 #> ## should give same answer"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"function estimates distribution time initial final event, situations individuals observed experienced events certain time, thus right-truncated time. time initial event provides information time initial final event, given truncated observation scheme, initial events assumed occur exponential growth rate.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"","code":"flexsurvrtrunc( t, tinit, rtrunc, tmax, data = NULL, method = \"joint\", dist, theta = NULL, fixed.theta = TRUE, inits = NULL, fixedpars = NULL, dfns = NULL, integ.opts = NULL, cl = 0.95, optim_control = list() )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"t Vector time differences initial final event set individuals. tinit Absolute time initial event individual. rtrunc Individual-specific right truncation points scale t, individual's survival time t observed greater corresponding element rtrunc. used method=\"joint\". method=\"final\", right-truncation implicit. tmax Maximum possible time initial final events observed. used method=\"joint\", ignored method=\"final\". data Data frame containing t, rtrunc tinit. method \"joint\" \"joint-conditional\" method used. \"final\" \"conditional--final\" method used. \"conditional--initial\" method can implemented using flexsurvreg rtrunc argument. methods described Seaman et al. (2020). dist Typically, one strings first column following table, identifying built-distribution. table also identifies location parameters, whether covariates parameters represent proportional hazards (PH) accelerated failure time (AFT) model. accelerated failure time model, covariate speeds slows passage time. coefficient (presented log scale) log(2), doubling covariate value give half expected survival time. \"exponential\" \"lognormal\" can used aliases \"exp\" \"lnorm\", compatibility survreg. Alternatively, dist can list specifying custom distribution. See section ``Custom distributions'' construct list. flexible spline-based distributions can also fitted flexsurvspline. parameterisations built-distributions used built-distribution functions: dgengamma, dgengamma.orig, dgenf, dgenf.orig, dweibull, dgamma, dexp, dlnorm, dgompertz, respectively. functions base R used available, otherwise, provided package. package vignette \"Distributions reference\" lists survivor functions covariate effect parameterisations used built-distribution. Weibull, exponential log-normal distributions, flexsurvreg simply works calling survreg obtain maximum likelihood estimates, calling optim double-check convergence obtain covariance matrix flexsurvreg's preferred parameterisation. Weibull parameterisation different survreg, instead consistent dweibull. \"scale\" reported survreg equivalent 1/shape defined dweibull hence flexsurvreg. first coefficient (Intercept) reported survreg equivalent log(scale) dweibull flexsurvreg. Similarly exponential distribution, rate, rather mean, modelled covariates. object flexsurv.dists lists names built- distributions, parameters, location parameter, functions used transform parameter ranges real line, functions used generate initial values parameter estimation. theta Initial value (fixed value) exponential growth rate theta. Defaults 1. fixed.theta theta fixed initial value estimated. applies method=\"joint\". method=\"final\", theta must fixed. inits Initial values parameters parametric survival distributon. supplied, heuristic used. done flexsurvreg. fixedpars Integer indices parameters survival distribution fixed values supplied inits. length inits. dfns alternative way define custom survival distribution (see section ``Custom distributions'' ). list whose components may include \"d\", \"p\", \"h\", \"H\" containing probability density, cumulative distribution, hazard, cumulative hazard functions distribution. example, list(d=dllogis, p=pllogis). dfns used, custom dlist must still provided, dllogis pllogis need visible global environment. useful flexsurvreg called within functions environments distribution functions also defined dynamically. integ.opts List named arguments pass integrate, custom density hazard provided without cumulative version. example, integ.opts = list(rel.tol=1e-12) cl Width symmetric confidence intervals maximum likelihood estimates, default 0.95. optim_control List supply control argument optim control likelihood maximisation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"Covariates currently supported. Note flexsurvreg, rtrunc argument, can fit models similar kind data, models ignore information provided time initial event. nonparametric estimator survival right-truncation also provided survrtrunc. See Seaman et al. (2020) full comparison alternative models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"Seaman, S., Presanis, . Jackson, C. (2020) Estimating Time--Event Distribution Right-Truncated Data Epidemic: Review Methods","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"","code":"set.seed(1) ## simulate time to initial event X <- rexp(1000, 0.2) ## simulate time between initial and final event T <- rgamma(1000, 2, 10) ## right-truncate to keep only those with final event time ## before tmax tmax <- 40 obs <- X + T < tmax rtrunc <- tmax - X dat <- data.frame(X, T, rtrunc)[obs,] flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", theta = 0.2) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.93 1.78 2.1 0.659 0.0414 #> rate rate 9.22 8.39 10.1 2.222 0.0483 #> theta theta 1.22 NA NA 0.200 NA #> #> Log-likelihood = -7846.25, df = 2 #> AIC = 15696.5 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2, fixed.theta=FALSE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", theta = 0.2, fixed.theta = FALSE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.932 1.781 2.095 0.658 0.04144 #> rate rate 9.419 8.586 10.334 2.243 0.04728 #> theta theta 0.824 0.814 0.834 -0.193 0.00621 #> #> Log-likelihood = -1949.284, df = 3 #> AIC = 3904.568 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2, inits=c(1, 8)) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", theta = 0.2, inits = c(1, 8)) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.93 1.78 2.1 0.659 0.0414 #> rate rate 9.22 8.39 10.1 2.222 0.0483 #> theta theta 1.22 NA NA 0.200 NA #> #> Log-likelihood = -7846.25, df = 2 #> AIC = 15696.5 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2, method=\"final\") #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, method = \"final\", dist = \"gamma\", theta = 0.2) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.94 1.79 2.11 0.663 0.0415 #> rate rate 9.05 8.22 9.97 2.203 0.0493 #> theta theta 1.22 NA NA 0.200 NA #> #> Log-likelihood = 715.5208, df = 2 #> AIC = -1427.042 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.93 1.78 2.09 0.658 0.0415 #> rate rate 8.41 7.58 9.33 2.130 0.0529 #> theta theta 2.72 NA NA 1.000 NA #> #> Log-likelihood = -33947.91, df = 2 #> AIC = 67899.82 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"weibull\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"weibull\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.501 1.430 1.577 0.406 0.0249 #> scale scale 0.252 0.241 0.264 -1.378 0.0240 #> theta theta 2.718 NA NA 1.000 NA #> #> Log-likelihood = -33950.21, df = 2 #> AIC = 67904.42 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"lnorm\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"lnorm\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> meanlog meanlog -1.694 -1.758 -1.63 -1.694 0.0325 #> sdlog sdlog 0.893 0.848 0.94 -0.113 0.0264 #> theta theta 2.718 NA NA 1.000 NA #> #> Log-likelihood = -33991.77, df = 2 #> AIC = 67987.55 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gengamma\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gengamma\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> mu mu -1.446 -1.520 -1.371 -1.446 0.0379 #> sigma sigma 0.702 0.657 0.750 -0.354 0.0335 #> Q Q 0.798 0.631 0.964 0.798 0.0851 #> theta theta 2.718 NA NA 1.000 NA #> #> Log-likelihood = -33947.48, df = 3 #> AIC = 67900.97 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gompertz\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gompertz\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 2.58 2.18 2.97 2.576 0.2009 #> rate rate 2.63 2.37 2.92 0.968 0.0532 #> theta theta 2.72 NA NA 1.000 NA #> #> Log-likelihood = -33990.12, df = 2 #> AIC = 67984.25 #>"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"Flexible parametric modelling time--event data using spline model Royston Parmar (2002).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"","code":"flexsurvspline( formula, data, weights, bhazard, rtrunc, subset, k = 0, knots = NULL, bknots = NULL, scale = \"hazard\", timescale = \"log\", spline = \"rp\", ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"formula formula expression conventional R linear modelling syntax. response must survival object returned Surv function, covariates given right-hand side. example, Surv(time, dead) ~ age + sex specifies model log cumulative hazard (default, see scale) linear function covariates age sex. covariates, specify 1 right hand side, example Surv(time, dead) ~ 1. Time-varying covariate effects can specified using method described flexsurvreg placing covariates ancillary parameters. ancillary parameters named gamma1, ..., gammar r number knots k plus one (``degrees freedom'' defined Royston Parmar). default Weibull model, just one ancillary parameter gamma1. Therefore model one internal spline knot, equivalents Weibull shape scale parameters, higher-order term gamma2, vary age sex, can specified : Surv(time, dead) ~ age + sex + gamma1(age) + gamma1(sex) alternatively (safely, see flexsurvreg) Surv(time, dead) ~ age + sex, anc=list(gamma1=~age + sex) Surv objects type=\"right\",\"counting\", \"interval1\" \"interval2\" supported, corresponding right-censored, left-truncated interval-censored observations. data data frame find variables supplied formula. given, variables working environment. weights Optional variable giving case weights. bhazard Optional variable giving expected hazards relative survival models. rtrunc Optional variable giving individual right-truncation times (see flexsurvreg). Note models can suffer weakly identifiable parameters badly-behaved likelihood functions, advised compare convergence different initial values supplying different inits arguments flexsurvspline. subset Vector integers logicals specifying subset observations used fit. k Number knots spline. default k=0 gives Weibull, log-logistic lognormal model, \"scale\" \"hazard\", \"odds\" \"normal\" respectively. k equivalent df-1 notation stpm Stata. knots chosen equally-spaced quantiles log uncensored survival times, example, median one knot, 33% 67% quantiles log time (time, see \"timescale\") two knots. override default knot placement, specify knots instead. knots Locations knots axis log time (time, see \"timescale\"). specified, knot locations chosen described k . Either k knots must specified. specified, knots overrides k. bknots Locations boundary knots, axis log time (time, see \"timescale\"). supplied, chosen minimum maximum log death time. scale \"hazard\", log cumulative hazard modelled spline function. \"odds\", log cumulative odds modelled spline function. \"normal\", \\(-\\Phi^{-1}(S(t))\\) modelled spline function, \\(\\Phi^{-1}()\\) inverse normal distribution function qnorm. timescale \"log\" (default) log cumulative hazard (alternative) modelled spline function log time. \"identity\", modelled spline function time, however model satisfy desirable property cumulative hazard (alternative) approach 0 time zero. spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal. ... arguments passed flexsurvreg, example, anc, inits, fixedpars, weights, subset, na.action, options control optimisation. See flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"list class \"flexsurvreg\" elements described flexsurvreg, including extra components describing spline model. See particular: k Number knots. knots Location knots log time axis. scale scale model, hazard, odds normal. res Matrix maximum likelihood estimates confidence limits. Spline coefficients labelled \"gamma...\", covariate effects labelled names covariates. Coefficients gamma1,gamma2,... equivalent s0,s1,... Stata streg, gamma0 equivalent xb constant term. reproduce results, use noorthog option Stata, since orthogonalisation performed spline basis . Weibull model, example, gamma0,gamma1 -shape*log(scale), shape respectively dweibull flexsurvreg notation, (-Intercept/scale, 1/scale) survreg notation. log-logistic model shape scale b (eha::dllogis eha package), 1/b^equivalent exp(gamma0), equivalent gamma1. log-normal model log-scale mean mu standard deviation sigma, -mu/sigma equivalent gamma0 1/sigma equivalent gamma1. loglik maximised log-likelihood. differ Stata, sum log uncensored survival times added log-likelihood survival models, remove dependency time scale.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"function works wrapper around flexsurvreg dynamically constructing custom distribution using dsurvspline, psurvspline unroll.function. spline-based survival model Royston Parmar (2002), transformation \\(g(S(t,z))\\) survival function modelled natural cubic spline function log time \\(x = \\log(t)\\) plus linear effects covariates \\(z\\). $$g(S(t,z)) = s(x, \\bm{\\gamma}) + \\bm{\\beta}^T \\mathbf{z}$$ proportional hazards model (scale=\"hazard\") defines \\(g(S(t,\\mathbf{z})) = \\log(-\\log(S(t,\\mathbf{z}))) = \\log(H(t,\\mathbf{z}))\\), log cumulative hazard. proportional odds model (scale=\"odds\") defines \\(g(S(t,\\mathbf{z})) \\)\\( = \\log(S(t,\\mathbf{z})^{-1} - 1)\\), log cumulative odds. probit model (scale=\"normal\") defines \\(g(S(t,\\mathbf{z})) = \\)\\( -\\Phi^{-1}(S(t,\\mathbf{z}))\\), \\(\\Phi^{-1}()\\) inverse normal distribution function qnorm. knots, spline reduces linear function, models equivalent Weibull, log-logistic lognormal models respectively. spline coefficients \\(\\gamma_j: j=1, 2 \\ldots \\), called \"ancillary parameters\" , may also modelled linear functions covariates \\(\\mathbf{z}\\), $$\\gamma_j(\\mathbf{z}) = \\gamma_{j0} + \\gamma_{j1}z_1 + \\gamma_{j2}z_2 + ... $$ giving model effects covariates arbitrarily flexible functions time: non-proportional hazards odds model. Natural cubic splines cubic splines constrained linear beyond boundary knots \\(k_{min},k_{max}\\). spline function defined $$s(x,\\bm{\\gamma}) = \\gamma_0 + \\gamma_1 x + \\gamma_2 v_1(x) + \\ldots + $$$$ \\gamma_{m+1} v_m(x)$$ \\(v_j(x)\\) \\(j\\)th basis function $$v_j(x) = (x - k_j)^3_+ - \\lambda_j(x - k_{min})^3_+ - (1 - $$$$ \\lambda_j) (x - k_{max})^3_+$$ $$\\lambda_j = \\frac{k_{max} - k_j}{k_{max} - k_{min}}$$ \\((x - )_+ = max(0, x - )\\).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Wang W, Yan J (2021). Shape-Restricted Regression Splines R Package splines2. Journal Data Science, 19(3), 498-517. Jackson, C. (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"","code":"## Best-fitting model to breast cancer data from Royston and Parmar (2002) ## One internal knot (2 df) and cumulative odds scale spl <- flexsurvspline(Surv(recyrs, censrec) ~ group, data=bc, k=1, scale=\"odds\") ## Fitted survival plot(spl, lwd=3, ci=FALSE) ## Simple Weibull model fits much less well splw <- flexsurvspline(Surv(recyrs, censrec) ~ group, data=bc, k=0, scale=\"hazard\") lines(splw, col=\"blue\", ci=FALSE) ## Alternative way of fitting the Weibull if (FALSE) { splw2 <- flexsurvreg(Surv(recyrs, censrec) ~ group, data=bc, dist=\"weibull\") }"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"Constructor mixture multi-state model based flexsurvmix","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"","code":"fmixmsm(...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"... Named arguments. argument fitted model returned flexsurvmix. name argument names starting state model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"list flexsurvmix objects, following attribute(s): pathways list potential pathways absorption, models without cycles. models cycles element has_cycle=TRUE, plus pathways discovered function found cycle gave .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Construct a multi-state model from a set of parametric survival models — fmsm","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"Construct multi-state model set parametric survival models","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"","code":"fmsm(..., trans)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"... Objects returned flexsurvreg flexsurvspline representing fitted survival models. trans matrix integers specifying models correspond transitions. \\(r,s\\) entry \\(\\)th argument specified ... model state \\(r\\) state \\(s\\) transition. entry NA transition disallowed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"list containing objects given ..., attributes \"trans\" \"statenames\" defining transition structure matrix state names, list components named describe transitions correspond . arguments ... named, used define transition names, otherwise default names chosen based state names.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized F distribution — GenF","title":"Generalized F distribution — GenF","text":"Density, distribution function, hazards, quantile function random generation generalized F distribution, using reparameterisation Prentice (1975).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized F distribution — GenF","text":"","code":"dgenf(x, mu = 0, sigma = 1, Q, P, log = FALSE) pgenf(q, mu = 0, sigma = 1, Q, P, lower.tail = TRUE, log.p = FALSE) Hgenf(x, mu = 0, sigma = 1, Q, P) hgenf(x, mu = 0, sigma = 1, Q, P) qgenf(p, mu = 0, sigma = 1, Q, P, lower.tail = TRUE, log.p = FALSE) rgenf(n, mu = 0, sigma = 1, Q, P)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized F distribution — GenF","text":"x, q Vector quantiles. mu Vector location parameters. sigma Vector scale parameters. Q Vector first shape parameters. P Vector second shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized F distribution — GenF","text":"dgenf gives density, pgenf gives distribution function, qgenf gives quantile function, rgenf generates random deviates, Hgenf retuns cumulative hazard hgenf hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized F distribution — GenF","text":"\\(y \\sim F(2s_1, 2s_2)\\), \\(w = \\)\\( \\log(y)\\) \\(x = \\exp(w\\sigma + \\mu)\\) original generalized F distribution location parameter \\(\\mu\\), scale parameter \\(\\sigma>0\\) shape parameters \\(s_1,s_2\\). stable version described Prentice (1975), \\(s_1,s_2\\) replaced shape parameters \\(Q,P\\), \\(P>0\\), $$s_1 = 2(Q^2 + 2P + Q\\delta)^{-1}, \\quad s_2 = 2(Q^2 + 2P - Q\\delta)^{-1}$$ equivalently $$Q = \\left(\\frac{1}{s_1} - \\frac{1}{s_2}\\right)\\left(\\frac{1}{s_1} + \\frac{1}{s_2}\\right)^{-1/2}, \\quad P = \\frac{2}{s_1 + s_2} $$ Define \\(\\delta = (Q^2 + 2P)^{1/2}\\), \\(w = (\\log(x) - \\mu)\\delta /\\sigma\\), probability density function \\(x\\) $$ f(x) = \\frac{\\delta (s_1/s_2)^{s_1} e^{s_1 w}}{\\sigma x (1 + s_1 e^w/s_2) ^ {(s_1 + s_2)} B(s_1, s_2)} $$$$ $$ original parameterisation available package dgenf.orig, sake completion / compatibility. definitions, dgenf(x, mu=mu, sigma=sigma, Q=Q, P=P) = dgenf.orig(x, mu=mu, sigma=sigma/delta, s1=s1, s2=s2) generalized F distribution P=0 equivalent generalized gamma distribution dgengamma, dgenf(x, mu, sigma, Q, P=0) equals dgengamma(x, mu, sigma, Q). generalized gamma reduces several common distributions, described GenGamma help page. generalized F distribution includes log-logistic distribution (see eha::dllogis) special case: dgenf(x, mu=mu, sigma=sigma, Q=0, P=1) = eha::dllogis(x, shape=sqrt(2)/sigma, scale=exp(mu)) range hazard trajectories available distribution discussed detail Cox (2008). Jackson et al. (2010) give application modelling oral cancer survival use health economic evaluation screening.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Generalized F distribution — GenF","text":"parameters Q P usually called \\(q\\) \\(p\\) literature - made upper-case R functions avoid clashing conventional arguments q probability function p quantile function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized F distribution — GenF","text":"R. L. Prentice (1975). Discrimination among parametric models. Biometrika 62(3):607-614. Cox, C. (2008). generalized \\(F\\) distribution: umbrella parametric survival analysis. Statistics Medicine 27:4301-4312. Jackson, C. H. Sharples, L. D. Thompson, S. G. (2010). Survival models health economic evaluations: balancing fit parsimony improve prediction. International Journal Biostatistics 6(1):Article 34.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized F distribution — GenF","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized F distribution (original parameterisation) — GenF.orig","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"Density, distribution function, quantile function random generation generalized F distribution, using less flexible original parameterisation described Prentice (1975).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"","code":"dgenf.orig(x, mu = 0, sigma = 1, s1, s2, log = FALSE) pgenf.orig(q, mu = 0, sigma = 1, s1, s2, lower.tail = TRUE, log.p = FALSE) Hgenf.orig(x, mu = 0, sigma = 1, s1, s2) hgenf.orig(x, mu = 0, sigma = 1, s1, s2) qgenf.orig(p, mu = 0, sigma = 1, s1, s2, lower.tail = TRUE, log.p = FALSE) rgenf.orig(n, mu = 0, sigma = 1, s1, s2)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"x, q vector quantiles. mu Vector location parameters. sigma Vector scale parameters. s1 Vector first F shape parameters. s2 vector second F shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"dgenf.orig gives density, pgenf.orig gives distribution function, qgenf.orig gives quantile function, rgenf.orig generates random deviates, Hgenf.orig retuns cumulative hazard hgenf.orig hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"\\(y \\sim F(2s_1, 2s_2)\\), \\(w = \\)\\( \\log(y)\\) \\(x = \\exp(w\\sigma + \\mu)\\) original generalized F distribution location parameter \\(\\mu\\), scale parameter \\(\\sigma>0\\) shape parameters \\(s_1>0,s_2>0\\). probability density function \\(x\\) $$f(x | \\mu, \\sigma, s_1, s_2) = \\frac{(s_1/s_2)^{s_1} e^{s_1 w}}{\\sigma x (1 + s_1 e^w/s_2) ^ {(s_1 + s_2)} B(s_1, s_2)}$$ \\(w = (\\log(x) - \\mu)/\\sigma\\), \\(B(s_1,s_2) = \\Gamma(s_1)\\Gamma(s_2)/\\Gamma(s_1+s_2)\\) beta function. \\(s_2 \\rightarrow \\infty\\), distribution \\(x\\) tends towards original generalized gamma distribution following parameters: dgengamma.orig(x, shape=1/sigma, scale=exp(mu) / s1^sigma, k=s1) See GenGamma.orig includes several common distributions special cases. alternative parameterisation generalized F distribution, originating Prentice (1975) given package GenF, preferred statistical modelling, since stable \\(s_1\\) tends infinity, includes new class distributions negative first shape parameter. original provided sake completion compatibility.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"R. L. Prentice (1975). Discrimination among parametric models. Biometrika 62(3):607-614.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized gamma distribution — GenGamma","title":"Generalized gamma distribution — GenGamma","text":"Density, distribution function, hazards, quantile function random generation generalized gamma distribution, using parameterisation originating Prentice (1974). Also known (generalized) log-gamma distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized gamma distribution — GenGamma","text":"","code":"dgengamma(x, mu = 0, sigma = 1, Q, log = FALSE) pgengamma(q, mu = 0, sigma = 1, Q, lower.tail = TRUE, log.p = FALSE) Hgengamma(x, mu = 0, sigma = 1, Q) hgengamma(x, mu = 0, sigma = 1, Q) qgengamma(p, mu = 0, sigma = 1, Q, lower.tail = TRUE, log.p = FALSE) rgengamma(n, mu = 0, sigma = 1, Q)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized gamma distribution — GenGamma","text":"x, q vector quantiles. mu Vector ``location'' parameters. sigma Vector ``scale'' parameters. Note inconsistent meanings term ``scale'' - parameter analogous (log-scale) standard deviation log-normal distribution, ``sdlog'' dlnorm, rather ``scale'' parameter gamma distribution dgamma. Constrained positive. Q Vector shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized gamma distribution — GenGamma","text":"dgengamma gives density, pgengamma gives distribution function, qgengamma gives quantile function, rgengamma generates random deviates, Hgengamma retuns cumulative hazard hgengamma hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized gamma distribution — GenGamma","text":"\\(\\gamma \\sim Gamma(Q^{-2}, 1)\\) , \\(w = log(Q^2 \\gamma) / Q\\), \\(x = \\exp(\\mu + \\sigma w)\\) follows generalized gamma distribution probability density function $$f(x | \\mu, \\sigma, Q) = \\frac{|Q|(Q^{-2})^{Q^{-2}}}{\\sigma x \\Gamma(Q^{-2})} \\exp(Q^{-2}(Qw - \\exp(Qw)))$$ parameterisation preferred original parameterisation generalized gamma Stacy (1962) since numerically stable near \\(Q=0\\) (log-normal distribution), allows \\(Q<=0\\). original available package dgengamma.orig, sake completion compatibility software - implicitly restricted Q>0 (k>0 original notation). parameters dgengamma dgengamma.orig related follows. dgengamma.orig(x, shape=shape, scale=scale, k=k) = dgengamma(x, mu=log(scale) + log(k)/shape, sigma=1/(shape*sqrt(k)), Q=1/sqrt(k)) generalized gamma distribution simplifies gamma, log-normal Weibull distributions following parameterisations: properties generalized gamma applications survival analysis discussed detail Cox (2007). generalized F distribution GenF extends generalized gamma four parameters.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized gamma distribution — GenGamma","text":"Prentice, R. L. (1974). log gamma model maximum likelihood estimation. Biometrika 61(3):539-544. Farewell, V. T. Prentice, R. L. (1977). study distributional shape life testing. Technometrics 19(1):69-75. Lawless, J. F. (1980). Inference generalized gamma log gamma distributions. Technometrics 22(3):409-419. Cox, C., Chu, H., Schneider, M. F. Muñoz, . (2007). Parametric survival analysis taxonomy hazard functions generalized gamma distribution. Statistics Medicine 26:4252-4374 Stacy, E. W. (1962). generalization gamma distribution. Annals Mathematical Statistics 33:1187-92","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized gamma distribution — GenGamma","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"Density, distribution function, hazards, quantile function random generation generalized gamma distribution, using original parameterisation Stacy (1962).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"","code":"dgengamma.orig(x, shape, scale = 1, k, log = FALSE) pgengamma.orig(q, shape, scale = 1, k, lower.tail = TRUE, log.p = FALSE) Hgengamma.orig(x, shape, scale = 1, k) hgengamma.orig(x, shape, scale = 1, k) qgengamma.orig(p, shape, scale = 1, k, lower.tail = TRUE, log.p = FALSE) rgengamma.orig(n, shape, scale = 1, k)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"x, q vector quantiles. shape vector ``Weibull'' shape parameters. scale vector scale parameters. k vector ``Gamma'' shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"dgengamma.orig gives density, pgengamma.orig gives distribution function, qgengamma.orig gives quantile function, rgengamma.orig generates random deviates, Hgengamma.orig retuns cumulative hazard hgengamma.orig hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"\\(w \\sim Gamma(k,1)\\), \\(x = \\exp(w/shape + \\log(scale))\\) follows original generalised gamma distribution parameterisation given (Stacy 1962). Defining shape\\(=b>0\\), scale\\(=>0\\), \\(x\\) probability density $$f(x | , b, k) = \\frac{b}{\\Gamma(k)} \\frac{x^{bk - 1}}{^{bk}} $$$$ \\exp(-(x/)^b)$$ original generalized gamma distribution simplifies gamma, exponential Weibull distributions following parameterisations: Also k tends infinity, tends log normal (dlnorm) following parameters (Lawless, 1980): dlnorm(x, meanlog=log(scale) + log(k)/shape, sdlog=1/(shape*sqrt(k))) stable behaviour distribution tends log-normal, alternative parameterisation developed Prentice (1974). given dgengamma, now preferred statistical modelling. also flexible, including new class distributions negative shape k. generalized F distribution GenF.orig, similar alternative parameterisation GenF, extend generalized gamma four parameters.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"Stacy, E. W. (1962). generalization gamma distribution. Annals Mathematical Statistics 33:1187-92. Prentice, R. L. (1974). log gamma model maximum likelihood estimation. Biometrika 61(3):539-544. Lawless, J. F. (1980). Inference generalized gamma log gamma distributions. Technometrics 22(3):409-419.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/get_basepars.html","id":null,"dir":"Reference","previous_headings":"","what":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","title":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","text":"Evaluate baseline time--event distribution parameters given covariate values flexsurvmix model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/get_basepars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","text":"","code":"get_basepars(x, newdata, event)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/get_basepars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","text":"x Fitted model object newdata Data frame alternative covariate values event Event","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Glance at a flexsurv model object — glance.flexsurvreg","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"Glance accepts model object returns tibble exactly one row model summaries.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"","code":"# S3 method for flexsurvreg glance(x, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"one-row tibble containing columns: N Number observations used fitting events Number events censored Number censored events trisk Total length time--risk (.e. follow-) df Degrees freedom (.e. number estimated parameters) logLik Log-likelihood AIC Akaike's \"Information Criteria\" BIC Bayesian Information Criteria","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") glance(fitg) #> # A tibble: 1 × 8 #> N events censored trisk df logLik AIC BIC #> #> 1 26 12 14 15588 4 -89.7 187. 192."},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":null,"dir":"Reference","previous_headings":"","what":"The Gompertz distribution — Gompertz","title":"The Gompertz distribution — Gompertz","text":"Density, distribution function, hazards, quantile function random generation Gompertz distribution unrestricted shape.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The Gompertz distribution — Gompertz","text":"","code":"dgompertz(x, shape, rate = 1, log = FALSE) pgompertz(q, shape, rate = 1, lower.tail = TRUE, log.p = FALSE) qgompertz(p, shape, rate = 1, lower.tail = TRUE, log.p = FALSE) rgompertz(n, shape = 1, rate = 1) hgompertz(x, shape, rate = 1, log = FALSE) Hgompertz(x, shape, rate = 1, log = FALSE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The Gompertz distribution — Gompertz","text":"x, q vector quantiles. shape, rate vector shape rate parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The Gompertz distribution — Gompertz","text":"dgompertz gives density, pgompertz gives distribution function, qgompertz gives quantile function, hgompertz gives hazard function, Hgompertz gives cumulative hazard function, rgompertz generates random deviates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"The Gompertz distribution — Gompertz","text":"Gompertz distribution shape parameter \\(\\) rate parameter \\(b\\) probability density function $$f(x | , b) = ^{ax}\\exp(-b/(e^{ax} - 1))$$ hazard $$h(x | , b) = b e^{ax}$$ hazard increasing shape \\(>0\\) decreasing \\(<0\\). \\(=0\\) Gompertz equivalent exponential distribution constant hazard rate \\(b\\). probability distribution function $$F(x | , b) = 1 - \\exp(-b/(e^{ax} - 1))$$ Thus \\(\\) negative, letting \\(x\\) tend infinity shows non-zero probability \\(\\exp(b/)\\) living forever. occasions qgompertz rgompertz return Inf.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"The Gompertz distribution — Gompertz","text":"implementations Gompertz restrict \\(\\) strictly positive, ensures probability survival decreases zero \\(x\\) increases infinity. flexible implementation given consistent streg Stata. functions eha::dgompertz similar available package eha label parameters way round, called shape called rate , called 1 / scale called shape . terminology consistent exponential dexp Weibull dweibull distributions R.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"The Gompertz distribution — Gompertz","text":"Stata Press (2007) Stata release 10 manual: Survival analysis epidemiological tables.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"The Gompertz distribution — Gompertz","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":null,"dir":"Reference","previous_headings":"","what":"Hazard and cumulative hazard functions — hexp","title":"Hazard and cumulative hazard functions — hexp","text":"Hazard cumulative hazard functions distributions built flexsurv, whose distribution functions base R.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hazard and cumulative hazard functions — hexp","text":"","code":"hexp(x, rate = 1, log = FALSE) Hexp(x, rate = 1, log = FALSE) hgamma(x, shape, rate = 1, log = FALSE) Hgamma(x, shape, rate = 1, log = FALSE) hlnorm(x, meanlog = 0, sdlog = 1, log = FALSE) Hlnorm(x, meanlog = 0, sdlog = 1, log = FALSE) hweibull(x, shape, scale = 1, log = FALSE) Hweibull(x, shape, scale = 1, log = FALSE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hazard and cumulative hazard functions — hexp","text":"x Vector quantiles rate Rate parameter (exponential gamma) log Compute log hazard log cumulative hazard shape Shape parameter (Weibull gamma) meanlog Mean log scale (log normal) sdlog Standard deviation log scale (log normal) scale Scale parameter (Weibull)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hazard and cumulative hazard functions — hexp","text":"Hazard (functions beginning 'h') cumulative hazard (functions beginning 'H').","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Hazard and cumulative hazard functions — hexp","text":"exponential Weibull available analytically, programmed numerically stable efficient forms. gamma log-normal, simply computed minus log survivor function (cumulative hazard) ratio density survivor function (hazard), expected robust extreme values quick compute.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Hazard and cumulative hazard functions — hexp","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"Hazard ratio function time parametric survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"","code":"hr_flexsurvreg( x, newdata = NULL, t = NULL, start = 0, ci = TRUE, B = 1000, cl = 0.95, na.action = na.pass )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"x Object returned flexsurvreg flexsurvspline. newdata data frame two rows, specifying set covariate values. hazard ratio calculated hazard(z2)/hazard(z1), z1 first row newdata z2 second row. newdata must supplied unless model x includes just one covariate. one covariate, default constructed, defines hazard ratio second first level factor (covariate factor), value 1 value 0 (covariate numeric). t Times calculate fitted values . default, sorted unique observation (including censoring) times data - left-truncated datasets \"stop\" times. start Optional left-truncation time times. returned survival, hazard cumulative hazard conditioned survival time. Predicted times returned \"rmst\", \"mean\", \"median\" \"quantile\" times since time zero, times since start time. vector length t can supplied allow different truncation times prediction time, though make sense usual case function used calculate predicted trajectory single individual. default start time changed version 0.4 flexsurv - previously vector start times observed data. ci Set FALSE omit confidence intervals. B Number simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy, set B=0 turn calculation CIs SEs. cl Width symmetric confidence intervals, relative 1. na.action Function determining done missing values newdata. na.pass (default) summaries NA produced missing covariate values. na.omit, missing values dropped, behaviour summary.flexsurvreg flexsurv version 1.2.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"data frame estimate confidence limits hazard ratio, one row times requested t.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"Add fitted survival (hazard cumulative hazard) curves flexsurvreg model fit existing plot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"","code":"# S3 method for flexsurvreg lines( x, newdata = NULL, X = NULL, type = \"survival\", t = NULL, est = TRUE, ci = NULL, B = 1000, cl = 0.95, col = \"red\", lty = 1, lwd = 2, col.ci = NULL, lty.ci = 2, lwd.ci = 1, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"x Output flexsurvreg, representing fitted survival model object. newdata Covariate values produce fitted curves , data frame, described plot.flexsurvreg. X Covariate values produce fitted curves , matrix, described plot.flexsurvreg. type \"survival\" survival, \"cumhaz\" cumulative hazard, \"hazard\" hazard, plot.flexsurvreg. t Vector times plot fitted values . est Plot fitted curves (TRUE FALSE.) ci Plot confidence intervals fitted curves. B Number simulations controlling accuracy confidence intervals, used summary. cl Width confidence intervals, default 0.95 95% intervals. col Colour fitted curve(s). lty Line type fitted curve(s). lwd Line width fitted curve(s). col.ci Colour confidence limits, defaulting fitted curve. lty.ci Line type confidence limits. lwd.ci Line width confidence limits, defaulting fitted curve. ... arguments passed generic plot lines functions.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"Equivalent plot.flexsurvreg(...,add=TRUE).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":null,"dir":"Reference","previous_headings":"","what":"The log-logistic distribution — Llogis","title":"The log-logistic distribution — Llogis","text":"Density, distribution function, hazards, quantile function random generation log-logistic distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The log-logistic distribution — Llogis","text":"","code":"dllogis(x, shape = 1, scale = 1, log = FALSE) pllogis(q, shape = 1, scale = 1, lower.tail = TRUE, log.p = FALSE) qllogis(p, shape = 1, scale = 1, lower.tail = TRUE, log.p = FALSE) rllogis(n, shape = 1, scale = 1) hllogis(x, shape = 1, scale = 1, log = FALSE) Hllogis(x, shape = 1, scale = 1, log = FALSE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The log-logistic distribution — Llogis","text":"x, q vector quantiles. shape, scale vector shape scale parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The log-logistic distribution — Llogis","text":"dllogis gives density, pllogis gives distribution function, qllogis gives quantile function, hllogis gives hazard function, Hllogis gives cumulative hazard function, rllogis generates random deviates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"The log-logistic distribution — Llogis","text":"log-logistic distribution shape parameter \\(>0\\) scale parameter \\(b>0\\) probability density function $$f(x | , b) = (/b) (x/b)^{-1} / (1 + (x/b)^)^2$$ hazard $$h(x | , b) = (/b) (x/b)^{-1} / (1 + (x/b)^)$$ \\(x>0\\). hazard decreasing shape \\(\\leq 1\\), unimodal \\(> 1\\). probability distribution function $$F(x | , b) = 1 - 1 / (1 + (x/b)^)$$ \\(> 1\\), mean \\(b c / sin(c)\\), \\(> 2\\) variance \\(b^2 * (2*c/sin(2*c) - c^2/sin(c)^2)\\), \\(c = \\pi/\\), otherwise undefined.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"The log-logistic distribution — Llogis","text":"Various different parameterisations distribution used. one used , interpretation parameters standard Weibull distribution (dweibull). Like Weibull, survivor function transformation \\((x/b)^\\) non-negative real line [0,1], different link function. Covariates \\(b\\) represent time acceleration factors, ratios expected survival. parameterisation also used eha::dllogis eha package.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"The log-logistic distribution — Llogis","text":"Stata Press (2007) Stata release 10 manual: Survival analysis epidemiological tables.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"The log-logistic distribution — Llogis","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"Log likelihood flexsurvreg model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"","code":"# S3 method for flexsurvreg logLik(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"object fitted model object class flexsurvreg, e.g. returned flexsurvreg flexsurvspline. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"Log-likelihood (numeric) additional attributes df (degrees freedom, number parameters estimated), number observations nobs (including observed events censored observations).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"Calculate mean time start process final (\"absorbing\") state mixture multi-state model. Models cycles supported.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"","code":"meanfinal_fmixmsm(x, newdata = NULL, final = FALSE, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"x Object returned fmixmsm, representing multi-state model built piecing together mixture models fitted flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. final TRUE mean time final state calculated final state, taking weighted average mean time travel pathway ending final state, weighted probability pathway. FALSE (default) separate mean calculated pathway. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"data frame mean times absorption, covariate values pathway (final state)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean and restricted mean survival functions — mean_exp","title":"Mean and restricted mean survival functions — mean_exp","text":"Mean restricted mean survival time functions distributions built flexsurv.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean and restricted mean survival functions — mean_exp","text":"","code":"mean_exp(rate = 1) rmst_exp(t, rate = 1, start = 0) mean_gamma(shape, rate = 1) rmst_gamma(t, shape, rate = 1, start = 0) rmst_genf(t, mu, sigma, Q, P, start = 0) mean_genf(mu, sigma, Q, P) rmst_genf.orig(t, mu, sigma, s1, s2, start = 0) mean_genf.orig(mu, sigma, s1, s2) rmst_gengamma(t, mu = 0, sigma = 1, Q, start = 0) mean_gengamma(mu = 0, sigma = 1, Q) rmst_gengamma.orig(t, shape, scale = 1, k, start = 0) mean_gengamma.orig(shape, scale = 1, k) rmst_gompertz(t, shape, rate = 1, start = 0) mean_gompertz(shape, rate = 1) mean_llogis(shape = 1, scale = 1) rmst_llogis(t, shape = 1, scale = 1, start = 0) mean_lnorm(meanlog = 0, sdlog = 1) rmst_lnorm(t, meanlog = 0, sdlog = 1, start = 0) mean_weibull(shape, scale = 1) rmst_weibull(t, shape, scale = 1, start = 0) rmst_weibullPH(t, shape, scale = 1, start = 0) mean_weibullPH(shape, scale = 1)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean and restricted mean survival functions — mean_exp","text":"rate Rate parameter (exponential gamma) t Vector times restricted mean survival time evaluated start Optional left-truncation time times. returned restricted mean survival conditioned survival time. shape Shape parameter (Weibull, gamma, log-logistic, generalized gamma [orig], generalized F [orig]) mu Mean log scale (generalized gamma, generalized F) sigma Standard deviation log scale (generalized gamma, generalized F) Q Vector first shape parameters (generalized gamma, generalized F) P Vector second shape parameters (generalized F) s1 Vector first F shape parameters (generalized F [orig]) s2 vector second F shape parameters (generalized F [orig]) scale Scale parameter (Weibull, log-logistic, generalized gamma [orig], generalized F [orig]) k vector shape parameters (generalized gamma [orig]). meanlog Mean log scale (log normal) sdlog Standard deviation log scale (log normal)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean and restricted mean survival functions — mean_exp","text":"mean survival (functions beginning 'mean') restricted mean survival (functions beginning 'rmst_').","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Mean and restricted mean survival functions — mean_exp","text":"exponential, Weibull, log-logistic, lognormal, gamma, mean survival provided analytically. Restricted mean survival exponential distribution also provided analytically. Mean restricted means distributions calculated via numeric integration.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Mean and restricted mean survival functions — mean_exp","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"returns mean event-specific parametric time--event distribution mixture model, mean time event conditionally event one happens.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"","code":"mean_flexsurvmix(x, newdata = NULL, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"Mean times next event conditionally alternative event, given specified covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"Returns list data frames, component containing data used model fit mixture component.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"","code":"# S3 method for flexsurvmix model.frame(formula, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"formula Fitted model object flexsurvmix. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"list data frames","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"Extract data model fitted flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"","code":"# S3 method for flexsurvreg model.frame(formula, ...) # S3 method for flexsurvreg model.matrix(object, par = NULL, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"formula fitted model object, returned flexsurvreg. ... arguments (used). object fitted model object, returned flexsurvreg. par String naming parameter whose linear model matrix desired. default value par=NULL returns matrix consisting model matrices models object cbinded together, intercepts excluded. really ``model matrix'' usual sense, however, columns directly correspond covariate coefficients matrix estimates fitted model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"model.frame returns data frame original variables used model fit. model.matrix returns design matrix part model includes covariates. required part indicated \"par\" argument (see ).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"Cumulative transition-specific intensity/hazard functions fully-parametric multi-state competing risks models, using piecewise-constant approximation allow prediction using functions mstate package.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"","code":"msfit.flexsurvreg( object, t, newdata = NULL, variance = TRUE, tvar = \"trans\", trans, B = 1000 )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. model fitted data consisting one row observed transition additional rows corresponding censored times competing transitions. \"long\" format, counting process format, explained flexsurv vignette. model contain categorical covariate indicating transition. flexsurv variable can name, indicated tvar argument. Cox models demonstrated mstate usually included model formulae strata(trans), note strata function anything flexsurv. formula supplied flexsurvreg precise parameters assumed vary transition type. Alternatively, parameters (including covariate effects) assumed different different transitions, list transition-specific models can formed. list one component permitted transition multi-state model. computationally efficient, particularly larger models datasets. See example , vignette. t Vector times. need observed event times, since model parametric, can outside range data. grid frequent times provide better approximation cumulative hazard trajectory prediction probtrans mssample, cost greater computational expense. newdata data frame specifying values covariates fitted model, transition number. must specified covariates. variable names fitted model formula. must either one value per covariate (typical situation) \\(n\\) values per covariate, different one \\(n\\) allowed transitions. variance Calculate variances covariances transition cumulative hazards (TRUE FALSE). based simulation normal asymptotic distribution estimates, computationally-expensive. tvar Name categorical variable model formula represents transition number. defined factor, factor levels correspond elements trans, conventionally sequence integers starting 1. required x list transition-specific models. trans Matrix indicating allowed transitions multi-state model, format understood mstate: matrix integers whose \\(r,s\\) entry \\(\\) \\(\\)th transition type (reading across rows) \\(r,s\\), NAs diagonal \\(r,s\\) transition disallowed. B Number simulations normal asymptotic distribution used calculate variances. Decrease greater speed expense accuracy.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"object class \"msfit\", form objects used mstate package. msfit method mstate returns equivalent cumulative intensities Cox regression models fitted coxph.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"Liesbeth C. de Wreede, Marta Fiocco, Hein Putter (2011). mstate: R Package Analysis Competing Risks Multi-State Models. Journal Statistical Software, 38(7), 1-30. doi:10.18637/jss.v038.i07 Mandel, M. (2013). \"Simulation based confidence intervals functions complicated derivatives.\" American Statistician 67(2):76-81","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"","code":"## 3 state illness-death model for bronchiolitis obliterans ## Compare clock-reset / semi-Markov multi-state models ## Simple exponential model (reduces to Markov) bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) mexp <- msfit.flexsurvreg(bexp, t=seq(0,12,by=0.1), trans=tmat, tvar=\"trans\", variance=FALSE) ## Cox semi-parametric model within each transition bcox <- coxph(Surv(years, status) ~ strata(trans), data=bosms3) if (require(\"mstate\")){ mcox <- mstate::msfit(bcox, trans=tmat) ## Flexible parametric spline-based model bspl <- flexsurvspline(Surv(years, status) ~ trans + gamma1(trans), data=bosms3, k=3) mspl <- msfit.flexsurvreg(bspl, t=seq(0,12,by=0.1), trans=tmat, tvar=\"trans\", variance=FALSE) ## Compare fit: exponential model is OK but the spline is better plot(mcox, lwd=1, xlim=c(0, 12), ylim=c(0,4)) cols <- c(\"black\",\"red\",\"green\") for (i in 1:3){ lines(mexp$Haz$time[mexp$Haz$trans==i], mexp$Haz$Haz[mexp$Haz$trans==i], col=cols[i], lwd=2, lty=2) lines(mspl$Haz$time[mspl$Haz$trans==i], mspl$Haz$Haz[mspl$Haz$trans==i], col=cols[i], lwd=3) } legend(\"topright\", lwd=c(1,2,3), lty=c(1,2,1), c(\"Cox\", \"Exponential\", \"Flexible parametric\"), bty=\"n\") } #> Loading required package: mstate ## Fit a list of models, one for each transition ## More computationally efficient, but only valid if parameters ## are different between transitions. if (FALSE) { bexp.list <- vector(3, mode=\"list\") for (i in 1:3) { bexp.list[[i]] <- flexsurvreg(Surv(years, status) ~ 1, subset=(trans==i), data=bosms3, dist=\"exp\") } ## The list of models can be passed to this and other functions, ## as if it were a single multi-state model. msfit.flexsurvreg(bexp.list, t=seq(0,12,by=0.1), trans=tmat) }"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"Number observations contributing fitted flexible survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"","code":"# S3 method for flexsurvreg nobs(object, cens = TRUE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. cens Include censored observations number. TRUE default. FALSE number observed events returned. See BIC.flexsurvreg discussion issues defining sample size censored data. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"returns mod$N component fitted model object mod. See flexsurvreg, flexsurvspline full documentation components.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"default, matches behaviour nobs method survreg objects, including censored uncensored observations. weighted flexsurvreg analysis done, function returns sum weights.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"Produce matrix alternative parameter estimates sampling uncertainty, covariate values supplied user. Used summary.flexsurvreg obtaining confidence intervals around functions parameters.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"","code":"normboot.flexsurvreg( x, B, newdata = NULL, X = NULL, transform = FALSE, raw = FALSE, tidy = FALSE, rawsim = NULL )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"x fitted model flexsurvreg (flexsurvspline). B Number samples. newdata Data frame list containing covariate values evaluate parameters . covariates model, least one newdata X must supplied, unless raw=TRUE. X Alternative (less convenient) format covariate values: matrix one row, one column covariate factor contrast. Formed \"model matrices\", one named parameter distribution, intercepts excluded, cbinded together. transform TRUE results transformed real-line scale, typically log parameter defined positive. default FALSE returns parameters natural scale. raw Return samples baseline parameters covariate effects, rather default adjusting baseline parameters covariates. tidy FALSE (default) list returned. TRUE data frame returned, consisting list elements rbinded together, integer variables labelling covariate number simulation replicate number. rawsim allows input raw samples previous run normboot.flexsurvreg. useful running normboot.flexsurvreg multiple time dataset counterfactual contrasts, e.g. treat =0 vs. treat =1. Used standsurv.flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"newdata includes one covariate combination, matrix returned B rows, one column named parameter survival distribution. one covariate combination requested (e.g. newdata data frame one row), list matrices returned, one covariate combination.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"Mandel, M. (2013). \"Simulation based confidence intervals functions complicated derivatives.\" American Statistician (press).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"","code":"fite <- flexsurvreg(Surv(futime, fustat) ~ age, data = ovarian, dist=\"exp\") normboot.flexsurvreg(fite, B=10, newdata=list(age=50)) #> rate #> [1,] 0.0001333406 #> [2,] 0.0002711950 #> [3,] 0.0003700718 #> [4,] 0.0002548242 #> [5,] 0.0005457485 #> [6,] 0.0002299253 #> [7,] 0.0004888764 #> [8,] 0.0001547695 #> [9,] 0.0005135426 #> [10,] 0.0004136617 #> attr(,\"X\") #> age #> 1 50 #> attr(,\"X\")attr(,\"newdata\") #> age #> 1 50 #> attr(,\"rawsim\") #> rate age #> [1,] -18.29776 0.18750322 #> [2,] -14.33221 0.12239078 #> [3,] -14.75103 0.13698433 #> [4,] -14.90062 0.13251367 #> [5,] -10.99314 0.06959569 #> [6,] -15.71307 0.14670627 #> [7,] -13.66212 0.12077431 #> [8,] -17.76240 0.17977660 #> [9,] -11.44435 0.07740335 #> [10,] -12.31628 0.09051640 normboot.flexsurvreg(fite, B=10, X=matrix(50,nrow=1)) #> rate #> [1,] 0.0003826964 #> [2,] 0.0007727804 #> [3,] 0.0002973256 #> [4,] 0.0004210293 #> [5,] 0.0003696239 #> [6,] 0.0003892618 #> [7,] 0.0002302111 #> [8,] 0.0004541271 #> [9,] 0.0002247796 #> [10,] 0.0002689798 #> attr(,\"X\") #> [,1] #> [1,] 50 #> attr(,\"rawsim\") #> rate age #> [1,] -12.31256 0.08888573 #> [2,] -10.19412 0.06057214 #> [3,] -12.99376 0.09746149 #> [4,] -14.20243 0.12859241 #> [5,] -12.97912 0.10152183 #> [6,] -13.83425 0.11965986 #> [7,] -14.85106 0.12949092 #> [8,] -10.52134 0.05648414 #> [9,] -15.71354 0.14626291 #> [10,] -14.89006 0.13338376 normboot.flexsurvreg(fite, B=10, newdata=list(age=0)) ## closer to... #> rate #> [1,] 9.179604e-06 #> [2,] 8.001138e-06 #> [3,] 3.313562e-06 #> [4,] 5.777548e-08 #> [5,] 2.844863e-06 #> [6,] 6.954191e-07 #> [7,] 6.404087e-07 #> [8,] 6.187050e-06 #> [9,] 2.166374e-06 #> [10,] 2.559143e-07 #> attr(,\"X\") #> age #> 1 0 #> attr(,\"X\")attr(,\"newdata\") #> age #> 1 0 #> attr(,\"rawsim\") #> rate age #> [1,] -11.59853 0.07562969 #> [2,] -11.73593 0.09619946 #> [3,] -12.61749 0.09538749 #> [4,] -16.66670 0.16569939 #> [5,] -12.77000 0.10285181 #> [6,] -14.17875 0.12219826 #> [7,] -14.26116 0.12455604 #> [8,] -11.99305 0.08907006 #> [9,] -13.04246 0.09910768 #> [10,] -15.17842 0.13991248 fite$res #> est L95% U95% se #> rate 8.883706e-07 1.440514e-08 5.478617e-05 1.868243e-06 #> age 1.185227e-01 5.210364e-02 1.849418e-01 3.388790e-02"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"List maximum likelihood estimates transition-specific parameters flexible parametric multi-state model, given covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"","code":"pars.fmsm(x, trans, newdata = NULL, tvar = \"trans\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"x multi-state model fitted flexsurvreg. See msfit.flexsurvreg required form model data. x can also list flexsurvreg models, one component permitted transition multi-state model, illustrated msfit.flexsurvreg. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. tvar Variable data representing transition type. required x list models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"list one component permitted transition. component one element parameter parametric distribution generates corresponding event multi-state model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"returns estimate probability density time competing event, vector times supplied user.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"","code":"pdf_flexsurvmix(x, newdata = NULL, t = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. t Vector times evaluate probability density","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"data frame row giving fitted density dens combination covariate values, time competing event.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"requires model Markov, valid semi-Markov models, works wrapping pmatrix.fs calculate transition probability large time. also works fmsm object formed transition-specific time--event models, therefore works competing risks models, defined just one starting state multiple destination states representing competing events. models, function returns probability governing competing event happens next. However function simply wraps pmatrix.fs, models, pmatrix.fs pmatrix.simfs can used large forecast time t.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"","code":"pfinal_fmsm(x, newdata = NULL, fromstate, maxt = 1e+05, B = 0, cores = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"x Object returned fmsm, representing multi-state model formed transition-specific time--event models fitted flexsurvreg. newdata Data frame covariate values, one column per covariate, one row per alternative value. fromstate State calculate transition probability state. refer name row transition matrix attr(x,trans). maxt Large time use forecasting final state probabilities. transition probability zero time used. Note Inf work. default 100000. B Number simulations use calculate 95% confidence intervals based asymptotic normal distribution basic parameter estimates. B=0 intervals calculated. cores Number processor cores use. NULL (default) single core used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"data frame one row per covariate value destination state, giving state column state, probability column val. Additional columns lower upper confidence limits returned B=0.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Plots of fitted flexible survival models — plot.flexsurvreg","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"Plot fitted survival, cumulative hazard hazard parametric model nonparametric estimates diagnose goodness--fit. Alternatively plot user-defined function model parameters time.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"","code":"# S3 method for flexsurvreg plot( x, newdata = NULL, X = NULL, type = \"survival\", fn = NULL, t = NULL, start = 0, est = TRUE, ci = NULL, B = 1000, cl = 0.95, col.obs = \"black\", lty.obs = 1, lwd.obs = 1, col = \"red\", lty = 1, lwd = 2, col.ci = NULL, lty.ci = 2, lwd.ci = 1, ylim = NULL, add = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce fitted values . See summary.flexsurvreg. factor covariates model, Kaplan-Meier (nonparametric hazard...) curves plotted distinct groups, default, fitted curves also plotted groups. plot Kaplan-Meier fitted curves subset groups, use plot(survfit()) followed lines.flexsurvreg(). continuous covariates, single population Kaplan-Meier curve drawn. default, single fitted curve drawn covariates set mean values data - categorical covariates, means 0/1 indicator variables taken. X Alternative way supply covariate values, model matrix. See summary.flexsurvreg. newdata easier way. type \"survival\" survival, plotted Kaplan-Meier estimates plot.survfit. \"cumhaz\" cumulative hazard, plotted transformed Kaplan-Meier estimates plot.survfit. \"hazard\" hazard, plotted smooth nonparametric estimates muhaz. nonparametric estimates tend unstable, plots intended just roughly indicate shape hazards time. min.time max.time options muhaz may sometimes need passed arguments plot.flexsurvreg avoid error . Ignored \"fn\" specified. fn Custom function parameters summarise time. first two arguments function must t representing time, start representing left-truncation points, remaining arguments must parameters distribution. return vector length t. t Vector times plot fitted values , see summary.flexsurvreg. start Left-truncation points, see summary.flexsurvreg. est Plot fitted curves (TRUE FALSE.) ci Plot confidence intervals fitted curves. default, TRUE one observed/fitted curve plotted, FALSE multiple curves plotted. B Number simulations controlling accuracy confidence intervals, used summary. Decrease greater speed expense accuracy, set B=0 turn calculation CIs. cl Width confidence intervals, default 0.95 95% intervals. col.obs Colour nonparametric curve. lty.obs Line type nonparametric curve. lwd.obs Line width nonparametric curve. col Colour fitted parametric curve(s). lty Line type fitted parametric curve(s). lwd Line width fitted parametric curve(s). col.ci Colour fitted confidence limits, defaulting fitted curve. lty.ci Line type fitted confidence limits. lwd.ci Line width fitted confidence limits. ylim y-axis limits: vector two elements. add TRUE, add lines existing plot, otherwise new axes drawn. ... options passed plot.survfit muhaz, example, control smoothness nonparametric hazard estimates. min.time max.time options muhaz may sometimes need changed defaults.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"standard plot arguments \"xlim\",\"xlab\" may work. function designed quick check model fit. Users wanting publication-quality graphs advised set empty plot desired axes first (e.g. plot(...,type=\"n\",...)), use suitable lines functions add lines. case weights used fit model, used producing nonparametric estimates survival cumulative hazard, hazard estimates.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"Plot standardized metrics marginal survival, restricted mean survival hazard, based fitted flexsurv model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"","code":"# S3 method for standsurv plot(x, contrast = FALSE, ci = FALSE, expected = FALSE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"x standsurv object returned standsurv contrast contrasts standardized metrics plotted. Defaults FALSE ci confidence intervals plotted (calculated standsurv)? expected marginal expected survival / hazard also plotted? can invoked rmap ratetable passed standsurv ... currently used","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"ggplot showing standardized metric calculated standsurv time. Modification plot possible adding ggplot objects, see Examples.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"","code":"## Use bc dataset, with an age variable appended ## mean age is higher in those with smaller observed survival times newbc <- bc newbc$age <- rnorm(dim(bc)[1], mean = 65-scale(newbc$recyrs, scale=FALSE), sd = 5) ## Fit a Weibull flexsurv model with group and age as covariates weib_age <- flexsurvreg(Surv(recyrs, censrec) ~ group+age, data=newbc, dist=\"weibull\") ## Calculate standardized survival and the difference in standardized survival ## for the three levels of group across a grid of survival times standsurv_weib_age <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length=100), contrast = \"difference\", ci=TRUE, boot = TRUE, B=10, seed=123) #> Calculating bootstrap standard errors / confidence intervals #> Calculating bootstrap standard errors / confidence intervals for contrasts plot(standsurv_weib_age) plot(standsurv_weib_age) + ggplot2::theme_bw() + ggplot2::ylab(\"Survival\") + ggplot2::xlab(\"Time (years)\") + ggplot2::guides(color=ggplot2::guide_legend(title=\"Prognosis\"), fill=ggplot2::guide_legend(title=\"Prognosis\")) plot(standsurv_weib_age, contrast=TRUE, ci=TRUE) + ggplot2::ylab(\"Difference in survival\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot_survtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","title":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","text":"plot.survrtrunc creates new plot, lines.survrtrunc adds lines exising plot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot_survtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","text":"","code":"# S3 method for survrtrunc plot(x, ...) # S3 method for survrtrunc lines(x, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot_survtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","text":"x Object class \"survrtrunc\" returned survrtrunc. ... arguments passed plot.survfit lines.survfit.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"transition probability matrix time-inhomogeneous Markov multi-state models fitted time--event data flexsurvreg. \\(r,s\\) entry giving probability individual state \\(s\\) time \\(t\\), given state \\(r\\) time \\(0\\).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"","code":"pmatrix.fs( x, trans = NULL, t = 1, newdata = NULL, condstates = NULL, ci = FALSE, tvar = \"trans\", sing.inf = 1e+10, B = 1000, cl = 0.95, tidy = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally, must Markov / clock-forward model, can time-inhomogeneous. See package vignette explanation. x can also list models, one component permitted transition, illustrated msfit.flexsurvreg. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. t Time vector times predict state occupancy probabilities . newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. condstates xInstead unconditional probability state \\(s\\) time \\(t\\) given state \\(r\\) time 0, return probability conditional particular subset states time \\(t\\). subset specified condstates argument, vector character labels integers. used, example, competing risks situations, e.g. competing states death recovery disease, want compute probability patient died, given died recovered. absorbing states, \\(t\\) increases, converges case fatality ratio. compute , set \\(t\\) large number, Inf work. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. Turned default, since computationally intensive. turned , users increase B results reach desired precision. tvar Variable data representing transition type. required x list models. sing.inf singularity observed hazard, example Weibull distribution shape < 1 infinite hazard t=0, workaround, hazard assumed large finite number, sing.inf, time. results sensitive exact value assumed, users make sure adjusting parameter cases. B Number simulations normal asymptotic distribution used calculate variances. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. tidy TRUE return results tidy data frame ... Arguments passed ode deSolve.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"transition probability matrix, t length 1. t longer, return list matrices, data frame tidy TRUE. ci=TRUE, element attributes \"lower\" \"upper\" giving matrices corresponding confidence limits. formatted printing may extracted using attr().","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"computed solving Kolmogorov forward differential equation numerically, using methods deSolve package. equation $$\\frac{dP(t)}{dt} = P(t) Q(t)$$ \\(P(t)\\) transition probability matrix time \\(t\\), \\(Q(t)\\) transition hazard intensity function \\(t\\). initial condition \\(P(0) = \\). Note package msm similar method pmatrix.msm. pmatrix.fs give results pmatrix.msm conditions hold: time--event distribution exponential transitions, thus flexsurvreg model fitted dist=\"exp\" model time-homogeneous. msm model fitted exacttimes=TRUE, thus event times known, time-dependent covariates. msm allows exponential piecewise-exponential time--event distributions, flexsurvreg allows flexible models. msm however designed particular panel data, process observed arbitrary times, thus times transition unknown, makes flexible models difficult. function valid Markov (\"clock-forward\") multi-state models, though warning error currently given model Markov. See pmatrix.simfs equivalent semi-Markov (\"clock-reset\") models.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(Tstart, Tstop, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # more likely to be dead (state 3) as time moves on, or if start with # BOS (state 2) pmatrix.fs(bexp, t=c(5,10), trans=tmat) #> $`5` #> [,1] [,2] [,3] #> [1,] 0.2962297 0.2672185 0.4365518 #> [2,] 0.0000000 0.2672312 0.7327688 #> [3,] 0.0000000 0.0000000 1.0000000 #> #> $`10` #> [,1] [,2] [,3] #> [1,] 0.08775208 0.15056691 0.7616810 #> [2,] 0.00000000 0.07141257 0.9285874 #> [3,] 0.00000000 0.00000000 1.0000000 #> #> attr(,\"nst\") #> [1] 3"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"transition probability matrix semi-Markov multi-state models fitted time--event data flexsurvreg. \\(r,s\\) entry giving probability individual state \\(s\\) time \\(t\\), given state \\(r\\) time \\(0\\).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"","code":"pmatrix.simfs( x, trans, t = 1, newdata = NULL, ci = FALSE, tvar = \"trans\", tcovs = NULL, M = 1e+05, B = 1000, cl = 0.95, cores = NULL, tidy = FALSE )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally semi-Markov, time variable represents time since last transition. words response form Surv(time,status). See package vignette explanation. x can also list flexsurvreg models, one component permitted transition, illustrated msfit.flexsurvreg. can constructed fmsm. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. required x list constructed fmsm. t Time predict state occupancy probabilities . can single number vector different numbers. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. turned default, since two levels simulation required. turned , users adjust B /M results reach desired precision. simulation M generally vectorised, therefore increasing B usually expensive increasing M. tvar Variable data representing transition type. required x list models. tcovs Predictable time-dependent covariates age, see sim.fmsm. M Number individuals simulate order approximate transition probabilities. Users adjust obtain required precision. B Number simulations normal asymptotic distribution used calculate confidence limits. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. cores Number processor cores used calculating confidence limits repeated simulation. default uses single-core processing. tidy TRUE results returned tidy data frame columns estimate confidence limits, rows per state transition time interval.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"transition probability matrix. ci=TRUE, attributes \"lower\" \"upper\" giving matrices corresponding confidence limits. formatted printing may extracted using attr().","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"computed simulating large number individuals M using maximum likelihood estimates fitted model function sim.fmsm. Therefore requires random sampling function parametric survival model available: see \"Details\" section sim.fmsm. available built-distributions, though users may need write custom models. Note random sampling method flexsurvspline models currently inefficient, looping M individuals slow. pmatrix.fs efficient method based solving Kolmogorov forward equation numerically, requires multi-state model Markov. error warning given running pmatrix.simfs Markov model, still invalid.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # more likely to be dead (state 3) as time moves on, or if start with # BOS (state 2) pmatrix.simfs(bexp, t=5, trans=tmat) #> 1 2 3 #> 1 0.29456 0.26769 0.43775 #> 2 0.00000 0.26781 0.73219 #> 3 0.00000 0.00000 1.00000 pmatrix.simfs(bexp, t=10, trans=tmat) #> 1 2 3 #> 1 0.08806 0.15162 0.76032 #> 2 0.00000 0.07005 0.92995 #> 3 0.00000 0.00000 1.00000 # these results should converge to those in help(pmatrix.fs), as M # increases here and ODE solving precision increases there, since with # an exponential distribution, the semi-Markov model is the same as the # Markov model."},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"Probability pathway taken mixture multi-state model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"","code":"ppath_fmixmsm(x, newdata = NULL, final = FALSE, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"x Object returned fmixmsm, representing multi-state model built piecing together mixture models fitted flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. final TRUE probabilities pathways final state added together, produce probability ultimate outcome absorbing state multi-state model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"Data frame pathway probabilities covariate value pathway.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Predictions from flexible survival models — predict.flexsurvreg","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"Predict outcomes flexible survival models covariate values specified newdata.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"","code":"# S3 method for flexsurvreg predict( object, newdata, type = \"response\", times, start = 0, conf.int = FALSE, conf.level = 0.95, se.fit = FALSE, p = c(0.1, 0.9), ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce fitted values. must column every covariate model formula used fit object, one row every combination covariate values obtain fitted predictions. newdata omitted, original data used fit model used, extracted model.frame(object). However currently work model formula contains functions, e.g. ~ factor(x). names model frame must correspond variables original data. type Character vector type predictions desired. \"response\" mean survival time (default). \"mean\" acceptable synonym \"quantile\" quantiles survival distribution specified p \"rmst\" restricted mean survival time \"survival\" survival probabilities \"cumhaz\" cumulative hazards \"hazard\" hazards \"link\" fitted values location parameter, analogous linear predictor generalized linear models (type = \"lp\" type = \"linear\" acceptable synonyms). natural scale parameter, log scale. times Vector time horizons compute fitted values. applies type \"survival\", \"cumhaz\", \"hazard\", \"rmst\". silently ignored types. specified, predictions \"survival\", \"cumhaz\", \"hazard\" made observed event time model.frame(object). \"rmst\", times specified predictions made maximum observed event time data used fit object. Specifying times = Inf valid, return mean survival (equal type = \"response\"). start Optional left-truncation time times. returned survival, hazard, cumulative hazard conditioned survival time. start must length 1 length times. Predicted times returned type \"rmst\" \"quantile\" times since time zero, times since start time. conf.int Logical. confidence intervals returned? Default FALSE. conf.level Width symmetric confidence intervals, relative 1. se.fit Logical. standard errors fitted values returned? Default FALSE. p Vector quantiles return fitted values type = \"quantile\". Default c(0.1, 0.9). ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"tibble number rows newdata order. multiple predictions requested, tibble containing single list-column data frames. list-column data frames - dimensions data frame identical. Rows added value times p requested. function wrapper around summary.flexsurvreg, designed help flexsurv integrate \"tidymodels\" ecosystem, particular censored package. summary.flexsurvreg returns results conventional format.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"Matthew T. Warkentin (https://github.com/mattwarkentin)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") ## Simplest prediction: mean or median, for covariates defined by original dataset predict(fitg) #> # A tibble: 26 × 1 #> .pred_time #> #> 1 246. #> 2 204. #> 3 411. #> 4 1295. #> 5 1687. #> 6 990. #> 7 947. #> 8 734. #> 9 503. #> 10 1105. #> # ℹ 16 more rows predict(fitg, type = \"quantile\", p = 0.5) #> # A tibble: 26 × 2 #> .quantile .pred_quantile #> #> 1 0.5 194. #> 2 0.5 161. #> 3 0.5 325. #> 4 0.5 1022. #> 5 0.5 1331. #> 6 0.5 781. #> 7 0.5 747. #> 8 0.5 579. #> 9 0.5 397. #> 10 0.5 872. #> # ℹ 16 more rows ## Simple prediction for user-defined covariate values predict(fitg, newdata = data.frame(age = c(40, 50, 60))) #> # A tibble: 3 × 1 #> .pred_time #> #> 1 4169. #> 2 1738. #> 3 724. predict(fitg, type = \"quantile\", p = 0.5, newdata = data.frame(age = c(40,50,60))) #> # A tibble: 3 × 2 #> .quantile .pred_quantile #> #> 1 0.5 3291. #> 2 0.5 1372. #> 3 0.5 572. ## Predict multiple quantiles and unnest require(tidyr) #> Loading required package: tidyr pr <- predict(fitg, type = \"survival\", times = c(600, 800)) tidyr::unnest(pr, .pred) #> # A tibble: 52 × 2 #> .eval_time .pred_survival #> #> 1 600 0.0548 #> 2 800 0.0202 #> 3 600 0.0292 #> 4 800 0.00926 #> 5 600 0.200 #> 6 800 0.104 #> 7 600 0.751 #> 8 800 0.624 #> 9 600 0.841 #> 10 800 0.742 #> # ℹ 42 more rows"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"Probabilities competing events flexsurvmix model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"","code":"probs_flexsurvmix(x, newdata = NULL, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"data frame containing probability competing events occur next, event covariate values specified newdata.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"quantities variously known transition probabilities, state occupancy probabilities, values \"cumulative incidence\" function, values \"subdistribution\" function. probabilities individual experienced event particular kind time t.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"","code":"p_flexsurvmix(x, newdata = NULL, startname = \"start\", t = 1, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. startname Name state individuals start. considers model multi-state model people start state, may transition one competing events. t Vector times t calculate probabilities transition . B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"data frame transition probabilities time, covariate value destination state.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"Note \"cumulative incidence\" misnomer, \"incidence\" typically means hazard, quantities computed cumulative hazards, probabilities.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"Calculate quantiles time start process possible final (\"absorbing\") state mixture multi-state model. Models cycles supported.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"","code":"qfinal_fmixmsm( x, newdata = NULL, final = FALSE, B = NULL, n = 10000, probs = c(0.025, 0.5, 0.975) )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"x Object returned fmixmsm, representing multi-state model built piecing together mixture models fitted flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. final TRUE mean time final state calculated final state, taking weighted average mean time travel pathway ending final state, weighted probability pathway. FALSE (default) separate mean calculated pathway. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed. n Number individual-level simulations use characterise time--event distributions probs Quantiles calculate, default, c(0.025, 0.5, 0.975)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"Data frame quantiles time final state pathway covariate value, final state covariate value.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":null,"dir":"Reference","previous_headings":"","what":"Generic function to find quantiles of a distribution — qgeneric","title":"Generic function to find quantiles of a distribution — qgeneric","text":"Generic function find quantiles distribution, given equivalent probability distribution function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generic function to find quantiles of a distribution — qgeneric","text":"","code":"qgeneric(pdist, p, matargs = NULL, scalarargs = NULL, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generic function to find quantiles of a distribution — qgeneric","text":"pdist Probability distribution function, example, pnorm normal distribution, must defined current workspace. accept return vectorised parameters values. also return correct values entire real line, example positive distribution pdist(x)==0 \\(x<0\\). p Vector probabilities find quantiles . matargs Character vector giving elements ... represent vector parameters distribution. Empty default. vectorised, become matrices. used arguments gamma knots qsurvspline. scalarargs Character vector naming scalar arguments distribution function vectorised. used arguments scale timescale qsurvspline. ... remaining arguments define parameters distribution pdist. MUST named explicitly. may also contain standard arguments log.p (logical; default FALSE, TRUE, probabilities p given log(p)), lower.tail (logical; TRUE (default), probabilities P[X <= x] otherwise, P[X > x].). distribution bounded , contain arguments lbound ubound respectively, returned p 0 1 respectively. Defaults -Inf Inf respectively.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generic function to find quantiles of a distribution — qgeneric","text":"Vector quantiles distribution p.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generic function to find quantiles of a distribution — qgeneric","text":"function used default custom distributions quantile function provided. works finding root equation \\(h(q) = pdist(q) - p = 0\\). Starting interval \\((-1, 1)\\), interval width expanded 50% \\(h()\\) opposite sign either end. root found using uniroot. assumes suitably smooth, continuous distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generic function to find quantiles of a distribution — qgeneric","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generic function to find quantiles of a distribution — qgeneric","text":"","code":"qnorm(c(0.025, 0.975), 0, 1) #> [1] -1.959964 1.959964 qgeneric(pnorm, c(0.025, 0.975), mean=0, sd=1) # must name the arguments #> [1] -1.959964 1.959964"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/quantile_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","title":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","text":"returns quantiles event-specific parametric time--event distribution mixture model, describes time event conditionally event one happens.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/quantile_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","text":"","code":"quantile_flexsurvmix(x, newdata = NULL, B = NULL, probs = c(0.025, 0.5, 0.975))"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/quantile_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed. probs Vector alternative quantiles, default c(0.025, 0.95, 0.975) giving median 95% interval.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. generics augment, glance, tidy","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate residuals for flexible survival models — residuals.flexsurvreg","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"Calculates residuals flexsurvreg flexsurvspline model fits.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"","code":"# S3 method for flexsurvreg residuals(object, type = \"response\", ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. type Character string type residual desired. Currently \"response\" \"coxsnell\" supported. residual types may become available future versions. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"Numeric vector length nobs(object).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"Residuals type = \"response\" calculated naive difference observed survival covariate-specific predicted mean survival predict.flexsurvreg, ignoring whether event time observed censored. type=\"coxsnell\" returns Cox-Snell residual, defined estimated cumulative hazard data point. check fit fully featured utility provided function coxsnell_flexsurvreg.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") residuals(fitg, type=\"response\") #> [1] -187.21560 -88.78121 -255.36822 -873.56963 -1255.83883 -541.96330 #> [7] -483.01162 -258.61757 -25.66308 -541.58483 -324.11343 -977.14761 #> [13] 20.81491 -167.52130 -3640.36131 -2316.90107 -3552.79251 -1681.40682 #> [19] -105.56084 -1679.31116 476.11922 64.41307 -2839.10079 -193.52725 #> [25] -126.81187 -462.83150"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"returns restricted mean event-specific parametric time--event distribution mixture model, mean time event conditionally event one happens, conditionally event time less time horizon tot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"","code":"rmst_flexsurvmix(x, newdata = NULL, tot = Inf, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. tot Time horizon compute restricted mean . B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"Restricted mean times next event conditionally alternative event, given specified covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":null,"dir":"Reference","previous_headings":"","what":"Generic function to find restricted mean survival time for some distribution — rmst_generic","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"Generic function find restricted mean distribution, given equivalent probability distribution function, using numeric integration.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"","code":"rmst_generic(pdist, t, start = 0, matargs = NULL, scalarargs = NULL, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"pdist Probability distribution function, example, pnorm normal distribution, must defined current workspace. accept return vectorised parameters values. also return correct values entire real line, example positive distribution pdist(x)==0 \\(x<0\\). t Vector times rmst evaluated start Optional left-truncation time times. returned restricted mean survival conditioned survival time. matargs Character vector giving elements ... represent vector parameters distribution. Empty default. vectorised, become matrices. used arguments gamma knots psurvspline. scalarargs Character vector naming scalar arguments distribution function vectorised. used, example, arguments scale timescale psurvspline. ... remaining arguments define parameters distribution pdist. MUST named explicitly.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"Vector restricted mean survival times distribution p.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"function used default custom distributions rmst function provided. assumes suitably smooth, continuous distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"","code":"rmst_lnorm(500, start=250, meanlog=7.4225, sdlog = 1.1138) #> [1] 237.8849 rmst_generic(plnorm, 500, start=250, meanlog=7.4225, sdlog = 1.1138) #> [1] 237.8849 # must name the arguments"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"Simulate changes state transition times semi-Markov multi-state model fitted using flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"","code":"sim.fmsm( x, trans = NULL, t, newdata = NULL, start = 1, M = 10, tvar = \"trans\", tcovs = NULL, tidy = FALSE, debug = FALSE )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Alternatively x can list fitted flexsurvreg model objects. ith element list model corresponding ith transition trans. efficient way fit multi-state model, valid parameters different different transitions. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. t Time, vector times M individuals, simulate trajectories . newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. start Starting state, vector starting states M individuals. M Number individual trajectories simulate. tvar Variable data representing transition type. required x list models. tcovs Names \"predictable\" time-dependent covariates newdata, .e. whose values change rate time. Age typical example. simulation, values updated transition time, adding current time value supplied newdata. assumes covariate measured unit time. tcovs supplied character vector. tidy TRUE simulated data returned tidy data frame one row per simulated transition. See simfs_bytrans function rearrange data format simulated non-tidy format. Currently includes event times, excludes times censoring reported tidy=FALSE. debug Print intermediate outputs: development use.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"tidy=TRUE, data frame one row simulated transition, giving individual ID id, start state start, end state end, transition label trans, time transition since start process (time), time since previous transition (delay). tidy=FALSE, list two matrices named st t. rows matrix represent simulated individuals. columns t contain times individual changes state, corresponding states st. first columns always contain starting states starting times. last column t represents either time individual moves absorbing state, right-censoring transient state time given t argument sim.fmsm.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"sim.fmsm relies presence function sample random numbers parametric survival distribution used fitted model x, example rweibull Weibull models. x fitted using custom distribution, called dist say, must function called (something like) rdist either working environment, supplied dfns argument flexsurvreg. must format standard R functions rweibull, first argument n, remaining arguments giving parameters distribution. must vectorised respect parameter arguments. function valid semi-Markov (\"clock-reset\") models, though warning error currently given model type. equivalent time-inhomogeneous Markov (\"clock-forward\") models currently implemented.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"","code":"bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) sim.fmsm(bexp, M=10, t=5, trans=tmat) #> $st #> [,1] [,2] [,3] #> [1,] 1 2 2 #> [2,] 1 2 2 #> [3,] 1 3 3 #> [4,] 1 3 3 #> [5,] 1 2 3 #> [6,] 1 1 1 #> [7,] 1 1 1 #> [8,] 1 3 3 #> [9,] 1 2 3 #> [10,] 1 2 2 #> #> $t #> [,1] [,2] [,3] #> [1,] 0 0.04056377 5.0000000 #> [2,] 0 2.37118887 5.0000000 #> [3,] 0 2.12455204 2.1245520 #> [4,] 0 0.36715147 0.3671515 #> [5,] 0 0.94681789 1.9433587 #> [6,] 0 5.00000000 5.0000000 #> [7,] 0 5.00000000 5.0000000 #> [8,] 0 4.25651403 4.2565140 #> [9,] 0 0.05740866 2.5896499 #> [10,] 0 2.77917357 5.0000000 #> #> attr(,\"trans\") #> [,1] [,2] [,3] #> [1,] NA 1 2 #> [2,] NA NA 3 #> [3,] NA NA NA"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"Estimates probability final outcome (\"absorbing\" state), mean quantiles time outcome people experience , simulating large sample individuals model. can used Markov semi-Markov models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"","code":"simfinal_fmsm( x, newdata = NULL, probs = c(0.025, 0.5, 0.975), t = 1000, M = 1e+05, B = 0, cores = NULL )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"x Object returned fmsm, representing multi-state model formed transition-specific time--event models fitted flexsurvreg. newdata Data frame covariate values, one column per covariate, one row per alternative value. probs Quantiles calculate, default, c(0.025, 0.5, 0.975) median 95% interval. t Maximum time simulate , passed sim.fmsm, summaries taken subset individuals simulated data absorbing state time. M Number individuals simulate. B Number simulations use calculate 95% confidence intervals based asymptotic normal distribution basic parameter estimates. B=0 intervals calculated. cores Number processor cores use. NULL (default) single core used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"tidy data frame rows combination covariate values quantity interest. quantity interest identified column quantity, value quantity val, additional columns lower upper giving 95% confidence intervals quantity, B>0.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"competing risks model, .e. model defined just one starting state multiple destination states representing competing events, returns probability governing next event happens, distribution time event conditionally event happening.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":null,"dir":"Reference","previous_headings":"","what":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"Reformat simulated multi-state data one row per simulated transition","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"","code":"simfs_bytrans(simfs)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"simfs Output sim.fmsm representing simulated histories multi-state model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"Data frame four columns giving transition start state, transition end state, transition name time taken transition.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"Simulate times competing events mixture multi-state model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"","code":"simt_flexsurvmix(x, newdata = NULL, n)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. n Number simulations","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"Data frame n*m rows column competing event, m number alternative covariate values, number rows newdata. simulated time represents time event conditionally event one occurs. function simulate event occurs.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"Simulate censored time--event data fitted flexsurvreg model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"","code":"# S3 method for flexsurvreg simulate( object, nsim = 1, seed = NULL, newdata = NULL, start = NULL, censtime = NULL, tidy = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"object Object returned flexsurvreg. nsim Number simulations per row newdata. seed Random number seed. returned result function, described simulate lm method. newdata Data frame defining alternative sets covariate values simulate . omitted, defaults data originally used fit model. start Optional left-truncation time times. returned survival, hazard cumulative hazard conditioned survival time. Predicted times returned \"rmst\", \"mean\", \"median\" \"quantile\" times since time zero, times since start time. vector length t can supplied allow different truncation times prediction time, though make sense usual case function used calculate predicted trajectory single individual. default start time changed version 0.4 flexsurv - previously vector start times observed data. censtime right-censoring time, vector times matching rows newdata. NULL (default) uncensored times events simulated. tidy TRUE \"tidy\" \"long\"-format data frame returned, rows defined combinations covariates simulation replicates. simulation replicate indicated column named . FALSE, data frame returned one row per set covariate values, different columns different simulation replicates. traditional format `simulate` methods base R. either case, simulated time indicator whether time event time (rather time right-censoring) returned different columns. ... arguments (currently used).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"data frame, format determined whether tidy specified.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"","code":"fit <- flexsurvreg(formula = Surv(futime, fustat) ~ rx, data = ovarian, dist=\"weibull\") fit2 <- flexsurvspline(formula = Surv(futime, fustat) ~ rx, data = ovarian, k=3) nd = data.frame(rx=1:2) simulate(fit, seed=1002, newdata=nd) #> time_1 event_1 #> 1 575.5959 1 #> 2 2391.6927 1 simulate(fit, seed=1002, newdata=nd, start=500) #> time_1 event_1 #> 1 993.9562 1 #> 2 2750.1742 1 simulate(fit2, nsim=3, seed=1002, newdata=nd) #> time_1 time_2 time_3 event_1 event_2 event_3 #> 1 457.8966 3564.307 943.0164 1 1 1 #> 2 419.5862 731.334 9729.0033 1 1 1 simulate(fit2, nsim=3, seed=1002, newdata=nd, start=c(500,1000)) #> time_1 time_2 time_3 event_1 event_2 event_3 #> 1 2081.447 12780.637 4008.034 1 1 1 #> 2 2872.484 3469.562 24816.827 1 1 1"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":null,"dir":"Reference","previous_headings":"","what":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"Returns tidy data.frame marginal survival probabilities, hazards, restricted mean survival, quantiles marginal survival function user-defined time points covariate patterns. Standardization performed undefined covariates model. user provides data standardize . Contrasts can calculated resulting estimates average treatment effect average treatment effect treated treated subset data supplied.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"","code":"standsurv( object, newdata = NULL, at = list(list()), atreference = 1, type = \"survival\", t = NULL, ci = FALSE, se = FALSE, boot = FALSE, B = NULL, cl = 0.95, trans = \"log\", contrast = NULL, trans.contrast = NULL, seed = NULL, rmap, ratetable, scale.ratetable = 365.25, n.gauss.quad = 100, quantiles = 0.5, interval = c(1e-08, 500) )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce marginal values . specified fitted model data.frame used. must column every covariate model formula user wishes standardize . format original data, factors single variable, 0/1 contrasts. covariates fixed specified . one row every combination covariates standardize . newdata contains variable named '(weights)' weighted mean used create standardized estimates. default behaviour fitted model contains case weights, stored fitted model data.frame. list scenarios specific covariates fixed certain values. element must list. example, covariate group levels \"Good\", \"Medium\" \"Poor\", standardized survival plots group averaging covariates specified using =list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")). atreference reference scenario making contrasts. Default 1 (.e. first element ). type \"survival\" marginal survival probabilities. relative survival framework returns marginal -cause survival (see details). \"hazard\" hazard marginal survival probability. relative survival framework returns marginal -cause hazard (see details). \"rmst\" standardized restricted mean survival. \"relsurvival\" marginal relative survival (can specified relative survival model fitted flexsurv). \"excesshazard\" marginal excess hazards (can specified relative survival model fitted flexsurv). \"quantile\" quantiles marginal -cause survival distribution. quantiles option also needs provided. t Times calculate marginal values . ci confidence intervals calculated? Defaults FALSE se standard errors calculated? Defaults FALSE boot bootstrapping used calculate standard error confidence intervals? Defaults FALSE, case delta method used B Number bootstrap simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy. specify boot = TRUE cl Width symmetric confidence intervals, relative 1. trans Transformation apply calculating standard errors via delta method obtain confidence intervals. default transformation \"log\". possible names \"none\", \"loglog\", \"logit\". contrast Contrasts standardized measures defined scenarios. Options \"difference\" \"ratio\". n-1 new columns created n number scenarios. Default NULL (.e. contrasts calculated). trans.contrast Transformation apply calculating standard errors contrasts via delta method obtain confidence intervals. default transformation \"none\" differences survival, hazard, quantiles, RMST, \"log\" ratios survival, hazard, quantiles RMST. seed random seed use (bootstrapping confidence intervals) rmap list maps data set names expected ratetable names. must specified -cause survival hazards required fitting relative survival model. can also specified expected rates required plotting purposes. See details section . ratetable table expected event rates (see ratetable) scale.ratetable Transformation time scale fitted flexsurv model time scale ratetable. example, analysis time fitted model years ratetable units/day use scale.ratetable = 365.25. default often ratetable units/day (see example). n.gauss.quad Number Gaussian quadrature points used integrating -cause survival function calculating RMST relative survival framework (default = 100) quantiles type=\"quantile\", specifies quantiles survival time distribution return estimates . interval Interval survival times quantile root finding. Default c(1e-08, 500).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"tibble containing one row time-point. column naming convention {} ith scenario corresponding confidence intervals (specified) named {}_lci {}_uci. Contrasts named contrast{k}_{j} comparison kth versus jth scenario. addition tidy long-format data.frames returned attributes standsurv_at standsurv_contrast. can passed ggplot plotting purposes (see plot.standsurv).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"syntax standsurv follows closely Stata's standsurv command written Paul Lambert Michael Crowther. function calculates standardized (marginal) measures including standardized survival functions, standardized restricted mean survival times, quantiles hazard standardized survival. standardized survival defined $$S_s(t|X=x) = E(S(t|X=x,Z)) = \\frac{1}{N} \\sum_{=1}^N S(t|X=x,Z=z_i)$$ hazard standardized survival weighted average individual hazard functions time t, weighted survival function time: $$h_s(t|X=x) = \\frac{\\sum_{=1}^N S(t|X=x,Z=z_i)h(t|X=x,Z=z_i)}{\\sum_{=1}^N S(t|X=x,Z=z_i)}$$ Marginal expected survival hazards can calculated providing population-based lifetable class ratetable ratetable mapping stratification factors lifetable user dataset using rmap. stratification factors fitted survival model user must specify newdata along covariates model. marginal expected survival calculated using \"Ederer\" method assumes censoring relevant approach forecasting (see survexp). worked example given . Marginal -cause survival hazards can calculated fitting relative survival model, utilise expected survival population ratetable. See Rutherford et al. (Chapter 6) details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"Paul Lambert, 2021. \"STANDSURV: Stata module compute standardized (marginal) survival related functions,\" Statistical Software Components S458991, Boston College Department Economics. https://ideas.repec.org/c/boc/bocode/s458991.html Rutherford, MJ, Lambert PC, Sweeting MJ, Pennington B, Crowther MJ, Abrams KR, Latimer NR. 2020. \"NICE DSU Technical Support Document 21: Flexible Methods Survival Analysis\" https://nicedsu.sites.sheffield.ac.uk/tsds/flexible-methods--survival-analysis-tsd","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"Michael Sweeting ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"","code":"## mean age is higher in those with smaller observed survival times newbc <- bc set.seed(1) newbc$age <- rnorm(dim(bc)[1], mean = 65-scale(newbc$recyrs, scale=FALSE), sd = 5) ## Fit a Weibull flexsurv model with group and age as covariates weib_age <- flexsurvreg(Surv(recyrs, censrec) ~ group+age, data=newbc, dist=\"weibull\") ## Calculate standardized survival and the difference in standardized survival ## for the three levels of group across a grid of survival times standsurv_weib_age <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length.out=100), contrast = \"difference\", ci=FALSE) standsurv_weib_age #> # A tibble: 100 × 6 #> time at1 at2 at3 contrast2_1 contrast3_1 #> #> 1 0 1 1 1 0 0 #> 2 0.0707 0.999 0.998 0.996 -0.00111 -0.00353 #> 3 0.141 0.998 0.995 0.988 -0.00293 -0.00931 #> 4 0.212 0.996 0.991 0.980 -0.00517 -0.0164 #> 5 0.283 0.994 0.986 0.970 -0.00772 -0.0244 #> 6 0.354 0.992 0.981 0.959 -0.0105 -0.0331 #> 7 0.424 0.989 0.976 0.947 -0.0135 -0.0425 #> 8 0.495 0.987 0.970 0.935 -0.0167 -0.0523 #> 9 0.566 0.984 0.964 0.922 -0.0201 -0.0626 #> 10 0.636 0.981 0.958 0.908 -0.0236 -0.0732 #> # ℹ 90 more rows ## Calculate hazard of standardized survival and the marginal hazard ratio ## for the three levels of group across a grid of survival times ## 10 bootstraps for confidence intervals (this should be larger) if (FALSE) { haz_standsurv_weib_age <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length.out=100), type=\"hazard\", contrast = \"ratio\", boot = TRUE, B=10, ci=TRUE) haz_standsurv_weib_age plot(haz_standsurv_weib_age, ci=TRUE) ## Hazard ratio plot shows a decreasing marginal HR ## Whereas the conditional HR is constant (model is a PH model) plot(haz_standsurv_weib_age, contrast=TRUE, ci=TRUE) ## Calculate standardized survival from a Weibull model together with expected ## survival matching to US lifetables # age at diagnosis in days. This is required to match to US ratetable, whose # timescale is measured in days newbc$agedays <- floor(newbc$age * 365.25) ## Create some random diagnosis dates centred on 01/01/2010 with SD=1 year ## These will be used to match to expected rates in the lifetable newbc$diag <- as.Date(floor(rnorm(dim(newbc)[1], mean = as.Date(\"01/01/2010\", \"%d/%m/%Y\"), sd=365)), origin=\"1970-01-01\") ## Create sex (assume all are female) newbc$sex <- factor(\"female\") standsurv_weib_expected <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length.out=100), rmap=list(sex = sex, year = diag, age = agedays), ratetable = survival::survexp.us, scale.ratetable = 365.25, newdata = newbc) ## Plot marginal survival with expected survival superimposed plot(standsurv_weib_expected, expected=TRUE) }"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Summaries of fitted flexible survival models — summary.flexsurvreg","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"Return fitted survival, cumulative hazard hazard series times fitted flexsurvreg flexsurvspline model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"","code":"# S3 method for flexsurvreg summary( object, newdata = NULL, X = NULL, type = \"survival\", fn = NULL, t = NULL, quantiles = 0.5, start = 0, cross = TRUE, ci = TRUE, se = FALSE, B = 1000, cl = 0.95, tidy = FALSE, na.action = na.pass, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce fitted values . list can coerced data frame. must column every covariate model formula, one row every combination covariates fitted values wanted . format original data, factors single variable, 0/1 contrasts. omitted, continuous covariates, single summary provided covariates set mean values data - categorical covariates, means 0/1 indicator variables taken. factor covariates model, distinct groups used default. X Alternative way defining covariate values produce fitted values . Since version 0.4, newdata easier way require user create factor contrasts, X kept backwards compatibility. Columns X represent different covariates, rows represent multiple combinations covariate values. example matrix(c(1,2),nrow=2) one covariate model, want survival covariate values 1 2. vector can also supplied just one combination covariates needed. ``factor'' (categorical) covariates, values contrasts representing factor levels (returned contrasts function) used. example, covariate agegroup specified unordered factor levels 20-29, 30-39, 40-49, 50-59, baseline level 20-29, three contrasts. return summaries groups 20-29 40-49, supply X = rbind(c(0,0,0), c(0,1,0)), since contrasts zero baseline level, second contrast ``turned '' third level 40-49. type \"survival\" survival probabilities. \"cumhaz\" cumulative hazards. \"hazard\" hazards. \"rmst\" restricted mean survival. \"mean\" mean survival. \"median\" median survival (alternative type=\"quantile\" quantiles=0.5). \"quantile\" quantiles survival time distribution. \"link\" fitted value location parameter (.e. \"linear predictor\" natural scale parameter, log scale) Ignored \"fn\" specified. fn Custom function parameters summarise time. optional first two arguments t representing time, start representing left-truncation points, remaining arguments must parameters distribution. vectorised, return vector corresponding vectors given t, start parameter vectors. t Times calculate fitted values . default, sorted unique observation (including censoring) times data - left-truncated datasets \"stop\" times. quantiles type=\"quantile\", specifies quantiles survival time distribution return estimates . start Optional left-truncation time times. returned survival, hazard cumulative hazard conditioned survival time. Predicted times returned \"rmst\", \"mean\", \"median\" \"quantile\" times since time zero, times since start time. vector length t can supplied allow different truncation times prediction time, though make sense usual case function used calculate predicted trajectory single individual. default start time changed version 0.4 flexsurv - previously vector start times observed data. cross TRUE (default) summaries calculated combinations times specified t covariate vectors specifed newdata. FALSE, times t length equal number rows newdata, one summary produced row newdata paired corresponding element t. used, e.g. determining Cox-Snell residuals. ci Set FALSE omit confidence intervals. se Set TRUE include standard errors. B Number simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy, set B=0 turn calculation CIs SEs. cl Width symmetric confidence intervals, relative 1. tidy TRUE, results returned tidy data frame instead list. can help using ggplot2 package compare summaries different covariate values. na.action Function determining done missing values newdata. na.pass (default) summaries NA produced missing covariate values. na.omit, missing values dropped, behaviour summary.flexsurvreg flexsurv version 1.2. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"tidy=FALSE, list one component unique covariate value (categorical covariates) one component (covariates continuous covariates). components matrix one row time t, giving estimated survival (cumulative hazard, hazard) 95% confidence limits. list components named covariate names values define . tidy=TRUE, data frame returned instead. formed stacking list components, additional columns identify covariate values block corresponds . multiple summaries, additional list component named X contains matrix exact values contrasts (dummy covariates) defining summary. plot.flexsurvreg function can used quickly plot model-based summaries empirical summaries Kaplan-Meier curves, diagnose model fit. Confidence intervals obtained sampling randomly asymptotic normal distribution maximum likelihood estimates taking quantiles (see, e.g. Mandel (2013)).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"Time-dependent covariates currently supported. covariate values assumed constant time fitted curve.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"Mandel, M. (2013). \"Simulation based confidence intervals functions complicated derivatives.\" American Statistician (press).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvrtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","title":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","text":"function extracts quantities interest untruncated version model individual-specific right truncation points fitted flexsurvrtrunc. Note covariates currently supported flexsurvrtrunc.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvrtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","text":"","code":"# S3 method for flexsurvrtrunc summary( object, type = \"survival\", fn = NULL, t = NULL, quantiles = 0.5, ci = TRUE, se = FALSE, B = 1000, cl = 0.95, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvrtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. type \"survival\" survival probabilities. \"cumhaz\" cumulative hazards. \"hazard\" hazards. \"rmst\" restricted mean survival. \"mean\" mean survival. \"median\" median survival (alternative type=\"quantile\" quantiles=0.5). \"quantile\" quantiles survival time distribution. Ignored \"fn\" specified. fn Custom function parameters summarise time. optional first argument t representing time, remaining arguments must parameters distribution. return vector length t. t Times calculate fitted values . default, sorted unique observation (including censoring) times data - left-truncated datasets \"stop\" times. quantiles type=\"quantile\", specifies quantiles survival time distribution return estimates . ci Set FALSE omit confidence intervals. se Set TRUE include standard errors. B Number simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy, set B=0 turn calculation CIs SEs. cl Width symmetric confidence intervals, relative 1. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"Estimates survivor function right-truncated, uncensored data reversing time, interpreting data left-truncated, applying Kaplan-Meier / Lynden-Bell estimator transforming back.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"","code":"survrtrunc(t, rtrunc, tmax, data = NULL, eps = 0.001, conf.int = 0.95)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"t Vector observed times initial event final event. rtrunc Individual-specific right truncation points, individual's survival time t observed greater corresponding element rtrunc. greater tmax, actual individual-level truncation point individuals taken tmax. tmax Maximum possible time event observed. data Data frame find t rtrunc . supplied, working environment. eps Small number added t implementing time-reversed estimator, ensure risk set consistent forward reverse time scales. just large enough t+eps ==t. need changing default 0.001, unless t extremely large small data rounded integer. conf.int Confidence level, defaulting 0.95.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"list components: time Time points estimated survival changes. surv Estimated survival time, truncated tmax. se.surv Standard error survival. std.err Standard error -log(survival). Named way consistency survfit. lower Lower confidence limits survival. upper Upper confidence limits survival.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"Note estimate untruncated survivor function - instead estimates survivor function truncated time defined maximum possible time might observed data. Define \\(X\\) time initial event, \\(Y\\) time final event, wish determine distribution \\(T = Y- X\\). Observations recorded \\(Y \\leq t_{max}\\). distribution \\(T\\) resulting sample right-truncated rtrunc \\( = t_{max} - X\\). Equivalently, distribution \\(t_{max} - T\\) left-truncated, since observed \\(t_{max} - T \\geq X\\). standard Kaplan-Meier type estimator implemented survfit used (described Lynden-Bell, 1971) results transformed back. situation might happen disease epidemic, \\(X\\) date disease onset individual, \\(Y\\) date death, wish estimate distribution time \\(T\\) onset death, given observed people died date \\(t_{max}\\). estimated survival unstable highest times, consider replacing tmax slightly lower value, necessary, removing individuals t > tmax, estimand changed survivor function truncated slightly narrower interval.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"D. Lynden-Bell (1971) method allowing known observational selection small samples applied 3CR quasars. Monthly Notices Royal Astronomical Society, 155:95–118. Seaman, S., Presanis, . Jackson, C. (2020) Review methods estimating distribution time event right-truncated data.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"","code":"## simulate some event time data set.seed(1) X <- rweibull(100, 2, 10) T <- rweibull(100, 2, 10) ## truncate above tmax <- 20 obs <- X + T < tmax rtrunc <- tmax - X dat <- data.frame(X, T, rtrunc)[obs,] sf <- survrtrunc(T, rtrunc, data=dat, tmax=tmax) plot(sf, conf.int=TRUE) ## Kaplan-Meier estimate ignoring truncation is biased sfnaive <- survfit(Surv(T) ~ 1, data=dat) lines(sfnaive, conf.int=TRUE, lty=2, col=\"red\") ## truncate above the maximum observed time tmax <- max(X + T) + 10 obs <- X + T < tmax rtrunc <- tmax - X dat <- data.frame(X, T, rtrunc)[obs,] sf <- survrtrunc(T, rtrunc, data=dat, tmax=tmax) plot(sf, conf.int=TRUE) ## estimates identical to the standard Kaplan-Meier sfnaive <- survfit(Surv(T) ~ 1, data=dat) lines(sfnaive, conf.int=TRUE, lty=2, col=\"red\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":null,"dir":"Reference","previous_headings":"","what":"Royston/Parmar spline survival distribution — Survspline","title":"Royston/Parmar spline survival distribution — Survspline","text":"Probability density, distribution, quantile, random generation, hazard, cumulative hazard, mean restricted mean functions Royston/Parmar spline model. functions parameters distribution collected together single argument gamma. equivalent functions one argument per parameter, see Survsplinek.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Royston/Parmar spline survival distribution — Survspline","text":"","code":"dsurvspline( x, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, log = FALSE ) psurvspline( q, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, lower.tail = TRUE, log.p = FALSE ) qsurvspline( p, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, lower.tail = TRUE, log.p = FALSE ) rsurvspline( n, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 ) Hsurvspline( x, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 ) hsurvspline( x, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 ) rmst_survspline( t, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, start = 0 ) mean_survspline( gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Royston/Parmar spline survival distribution — Survspline","text":"x, q, t Vector times. gamma Parameters describing baseline spline function, described flexsurvspline. may supplied vector number elements equal length knots, case parameters common times. Alternatively matrix may supplied, rows corresponding different times, columns corresponding knots. beta Vector covariate effects. supported ignored since version 2.3, argument removed 2.4. X Matrix covariate values. supported ignored since version 2.3, argument removed 2.4. knots Locations knots axis log time, supplied increasing order. Unlike flexsurvspline, include two boundary knots. additional knots, boundary locations used. one additional knots, boundary knots beyond minimum maximum values log times. flexsurvspline exactly minimum maximum values. may principle supplied matrix, way gamma, applications knots fixed. scale \"hazard\", \"odds\", \"normal\", described flexsurvspline. default knots addition boundaries, model reduces Weibull, log-logistic log-normal respectively. scale must common times. timescale \"log\" \"identity\" described flexsurvspline. spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal. offset extra constant add linear predictor \\(\\eta\\). supported ignored since version 2.3, argument removed 2.4. log, log.p Return log density probability. lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n Number random numbers simulate. start Optional left-truncation time times. returned restricted mean survival conditioned survival time.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Royston/Parmar spline survival distribution — Survspline","text":"dsurvspline gives density, psurvspline gives distribution function, hsurvspline gives hazard Hsurvspline gives cumulative hazard, described flexsurvspline. qsurvspline gives quantile function, computed crude numerical inversion (using qgeneric). rsurvspline generates random survival times using qsurvspline sample uniform random numbers. Due numerical root-finding involved qsurvspline, slow compared typical random number generation functions.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Royston/Parmar spline survival distribution — Survspline","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Wang W, Yan J (2021). Shape-Restricted Regression Splines R Package splines2. Journal Data Science, 19(3), 498-517.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Royston/Parmar spline survival distribution — Survspline","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Royston/Parmar spline survival distribution — Survspline","text":"","code":"## reduces to the weibull regscale <- 0.786; cf <- 1.82 a <- 1/regscale; b <- exp(cf) dweibull(1, shape=a, scale=b) #> [1] 0.1137858 dsurvspline(1, gamma=c(log(1 / b^a), a)) # should be the same #> [1] 0.1137858 ## reduces to the log-normal meanlog <- 1.52; sdlog <- 1.11 dlnorm(1, meanlog, sdlog) #> [1] 0.1407338 dsurvspline(1, gamma = c(-meanlog/sdlog, 1/sdlog), scale=\"normal\") #> [1] 0.1407338 # should be the same"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":null,"dir":"Reference","previous_headings":"","what":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"Probability density, distribution, quantile, random generation, hazard, cumulative hazard, mean restricted mean functions Royston/Parmar spline model, one argument per parameter. equivalent functions parameters collected together single argument, see Survspline.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"","code":"mean_survspline0( gamma0, gamma1, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline1( gamma0, gamma1, gamma2, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline2( gamma0, gamma1, gamma2, gamma3, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline3( gamma0, gamma1, gamma2, gamma3, gamma4, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline4( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline5( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline6( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline7( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rmst_survspline0( t, gamma0, gamma1, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline1( t, gamma0, gamma1, gamma2, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline2( t, gamma0, gamma1, gamma2, gamma3, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline3( t, gamma0, gamma1, gamma2, gamma3, gamma4, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline4( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline5( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline6( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline7( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) dsurvspline0( x, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline1( x, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline2( x, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline3( x, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline4( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline5( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline6( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline7( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) psurvspline0( q, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline1( q, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline2( q, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline3( q, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline4( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline5( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline6( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline7( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline0( p, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline1( p, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline2( p, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline3( p, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline4( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline5( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline6( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline7( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) rsurvspline0( n, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline1( n, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline2( n, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline3( n, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline4( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline5( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline6( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline7( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline0( x, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline1( x, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline2( x, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline3( x, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline4( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline5( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline6( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline7( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline0( x, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline1( x, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline2( x, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline3( x, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline4( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline5( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline6( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline7( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8 Parameters describing baseline spline function, described flexsurvspline. knots Locations knots axis log time, supplied increasing order. Unlike flexsurvspline, include two boundary knots. additional knots, boundary locations used. one additional knots, boundary knots beyond minimum maximum values log times. flexsurvspline exactly minimum maximum values. may principle supplied matrix, way gamma, applications knots fixed. scale \"hazard\", \"odds\", \"normal\", described flexsurvspline. default knots addition boundaries, model reduces Weibull, log-logistic log-normal respectively. scale must common times. timescale \"log\" \"identity\" described flexsurvspline. spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal. start Optional left-truncation time times. returned restricted mean survival conditioned survival time. x, q, t Vector times. log, log.p Return log density probability. lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n Number random numbers simulate.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"functions go 7 spline knots, 9 parameters. like higher-dimension versions, just submit issue https://github.com/chjackson/flexsurv-dev/issues.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Tidy a flexsurv model object — tidy.flexsurvreg","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"Tidy summarizes information components model tidy data frame.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"","code":"# S3 method for flexsurvreg tidy( x, conf.int = FALSE, conf.level = 0.95, pars = \"all\", transform = \"none\", ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. conf.int Logical. confidence intervals returned? Default FALSE. conf.level confidence level use confidence interval conf.int = TRUE. Default 0.95. pars One \"\", \"baseline\", \"coefs\" parameters, baseline distribution parameters, covariate effects (.e. regression betas), respectively. Default \"\". transform Character vector transformations apply requested pars. Default \"none\", returns pars -. Users can specify one types transformations: \"baseline.real\" transforms baseline distribution parameters real number line used estimation. \"coefs.exp\" exponentiates covariate effects. See Details complete explanation. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"tibble containing columns: term, estimate, std.error, statistic, p.value, conf.low, conf.high, default. statistic p.value provided covariate effects (NA baseline distribution parameters). computed Wald-type test statistics p-values standard normal distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"flexsurvreg models estimate two types coefficients, baseline distribution parameters, covariate effects act baseline distribution. design, flexsurvreg returns distribution parameters scale found relevant d/p/q/r functions. Covariate effects returned log-scale, represents either log-time ratios (accelerated failure time models) log-hazard ratios proportional hazard models. default, tidy() return baseline distribution parameters natural scale covariate effects log-scale. transform baseline distribution parameters real-value number line (scale used estimation), pass character argument \"baseline.real\" transform. get time ratios hazard ratios, pass \"coefs.exp\" transform. transformations may done together submitting arguments character vector.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") tidy(fitg) #> # A tibble: 4 × 5 #> term estimate std.error statistic p.value #> #> 1 mu 11.7 1.66 NA NA #> 2 sigma 0.751 0.244 NA NA #> 3 Q 0.295 0.912 NA NA #> 4 age -0.0875 0.0250 -3.50 0.000467 tidy(fitg, pars = \"coefs\", transform = \"coefs.exp\") #> # A tibble: 1 × 5 #> term estimate std.error statistic p.value #> #> 1 age 0.916 1.03 -3.50 0.000467"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":null,"dir":"Reference","previous_headings":"","what":"Tidy a standsurv object. — tidy.standsurv","title":"Tidy a standsurv object. — tidy.standsurv","text":"function used internally standsurv tidy data.frames automatically returned function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tidy a standsurv object. — tidy.standsurv","text":"","code":"# S3 method for standsurv tidy(x, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tidy a standsurv object. — tidy.standsurv","text":"x standsurv object. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tidy a standsurv object. — tidy.standsurv","text":"Returns additional tidy data.frames (tibbles) stored attributes named standpred_at standpred_contrast.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":null,"dir":"Reference","previous_headings":"","what":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"matrix whose \\(r,s\\) entry expected amount time spent state \\(s\\) time-inhomogeneous, continuous-time Markov multi-state process starts state \\(r\\), maximum time \\(t\\). defined integral corresponding transition probability time.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"","code":"totlos.fs( x, trans = NULL, t = 1, newdata = NULL, ci = FALSE, tvar = \"trans\", sing.inf = 1e+10, B = 1000, cl = 0.95, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally, must Markov / clock-forward model, can time-inhomogeneous. See package vignette explanation. x can also list models, one component permitted transition, illustrated msfit.flexsurvreg. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. t Time vector times predict . Must finite. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. Turned default, since computationally intensive. turned , users increase B results reach desired precision. tvar Variable data representing transition type. required x list models. sing.inf singularity observed hazard, example Weibull distribution shape < 1 infinite hazard t=0, workaround, hazard assumed large finite number, sing.inf, time. results sensitive exact value assumed, users make sure adjusting parameter cases. B Number simulations normal asymptotic distribution used calculate variances. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. ... Arguments passed ode deSolve.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"matrix lengths stay \\(T(t)\\), t length 1, list matrices t longer. ci=TRUE, element attributes \"lower\" \"upper\" giving matrices corresponding confidence limits. formatted printing may extracted using attr(). result also attribute P giving transition probability matrices, since unavoidably computed side effect. suppressed printing, can extracted attr(...,\"P\").","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"computed solving second order extension Kolmogorov forward differential equation numerically, using methods deSolve package. equation expressed linear system $$\\frac{dT(t)}{dt} = P(t)$$ $$\\frac{dP(t)}{dt} = P(t) Q(t)$$ solved \\(T(t)\\) \\(P(t)\\) simultaneously, \\(T(t)\\) matrix total lengths stay, \\(P(t)\\) transition probability matrix time \\(t\\), \\(Q(t)\\) transition hazard intensity function \\(t\\). initial conditions \\(T(0) = 0\\) \\(P(0) = \\). Note package msm similar method totlos.msm. totlos.fs give results totlos.msm conditions hold: time--event distribution exponential transitions, thus flexsurvreg model fitted dist=\"exp\", time-homogeneous. msm model fitted exacttimes=TRUE, thus event times known, time-dependent covariates. msm allows exponential piecewise-exponential time--event distributions, flexsurvreg allows flexible models. msm however designed particular panel data, process observed arbitrary times, thus times transition unknown, makes flexible models difficult. function valid Markov (\"clock-forward\") multi-state models, though warning error currently given model Markov. See totlos.simfs equivalent semi-Markov (\"clock-reset\") models.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(Tstart, Tstop, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # predict 4 years spent without BOS, 3 years with BOS, before death # As t increases, this should converge totlos.fs(bexp, t=10, trans=tmat) #> [,1] [,2] [,3] #> [1,] 3.749105 2.126570 4.124326 #> [2,] 0.000000 3.518329 6.481671 #> [3,] 0.000000 0.000000 10.000000 totlos.fs(bexp, t=1000, trans=tmat) #> [,1] [,2] [,3] #> [1,] 4.109742 2.956493 992.9338 #> [2,] 0.000000 3.788904 996.2111 #> [3,] 0.000000 0.000000 1000.0000 totlos.fs(bexp, t=c(5,10), trans=tmat) #> $`5` #> [,1] [,2] [,3] #> [1,] 2.892316 1.068225 1.039459 #> [2,] 0.000000 2.776392 2.223608 #> [3,] 0.000000 0.000000 5.000000 #> #> $`10` #> [,1] [,2] [,3] #> [1,] 3.749105 2.126570 4.124326 #> [2,] 0.000000 3.518329 6.481671 #> [3,] 0.000000 0.000000 10.000000 #> # Answers should match results in help(totlos.simfs) up to Monte Carlo # error there / ODE solving precision here, since with an exponential # distribution, the \"semi-Markov\" model there is the same as the Markov # model here"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":null,"dir":"Reference","previous_headings":"","what":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"expected total time spent state semi-Markov multi-state models fitted time--event data flexsurvreg. defined integral transition probability matrix, though analytically possible computed simulation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"","code":"totlos.simfs( x, trans, t = 1, start = 1, newdata = NULL, ci = FALSE, tvar = \"trans\", tcovs = NULL, group = NULL, M = 1e+05, B = 1000, cl = 0.95, cores = NULL )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally semi-Markov, time variable represents time since last transition. words response form Surv(time,status). See package vignette explanation. x can also list flexsurvreg models, one component permitted transition, illustrated msfit.flexsurvreg. can constructed fmsm. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. required x list constructed fmsm. t Maximum time predict . start Starting state. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. turned default, since two levels simulation required. turned , users adjust B /M results reach desired precision. simulation M generally vectorised, therefore increasing B usually expensive increasing M. tvar Variable data representing transition type. required x list models. tcovs Predictable time-dependent covariates age, see sim.fmsm. group Optional grouping states. example, four states, group=c(1,1,2,2), totlos.simfs returns expected total time states 1 2 combined, states 3 4 combined. M Number individuals simulate order approximate transition probabilities. Users adjust obtain required precision. B Number simulations normal asymptotic distribution used calculate confidence limits. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. cores Number processor cores used calculating confidence limits repeated simulation. default uses single-core processing.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"expected total time spent state (group states given group) time t, corresponding confidence intervals requested.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"computed simulating large number individuals M using maximum likelihood estimates fitted model function sim.fmsm. Therefore requires random sampling function parametric survival model available: see \"Details\" section sim.fmsm. available built-distributions, though users may need write custom models. Note random sampling method flexsurvspline models currently inefficient, looping M slow. equivalent function time-inhomogeneous Markov models totlos.fs. Note neither functions give errors warnings used wrong type model, results invalid.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # predict 4 years spent without BOS, 3 years with BOS, before death # As t increases, this should converge totlos.simfs(bexp, t=10, trans=tmat) #> 1 2 3 #> 3.744539 2.125464 4.129996 totlos.simfs(bexp, t=1000, trans=tmat) #> 1 2 3 #> 4.127571 2.957678 992.914751"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"Given function matrix arguments, construct equivalent function takes vector arguments defined columns matrix. new function simply uses cbind vector arguments make matrix, calls old one.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"","code":"unroll.function(mat.fn, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"mat.fn function number arguments, matrices. ... series arguments. names define arguments mat.fn matrices. values define vector strings appended names arguments new function. example fn <- unroll.function(oldfn, gamma=1:3, alpha=0:1) make new function fn arguments gamma1,gamma2,gamma3,alpha0,alpha1. Calling fn(gamma1=,gamma2=b,gamma3=c,alpha0=d,alpha1=e) give answer oldfn(gamma=cbind(,b,c),alpha=cbind(d,e))","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"new function, vector arguments.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"usage-in-flexsurv","dir":"Reference","previous_headings":"","what":"Usage in flexsurv","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"used flexsurvspline allow spline models, arbitrary number parameters, fitted using flexsurvreg. ``custom distributions'' facility flexsurvreg expects user-supplied probability density distribution functions one explicitly named argument scalar parameter, given R vectorisation, arguments supplied vector alternative parameter values. However, spline models varying number scalar parameters, determined number knots spline. dsurvspline psurvspline argument called gamma. can supplied matrix, number columns n determined number knots (plus 2), rows referring alternative parameter values. following statements used source flexsurvspline: convert functions arguments gamma0, gamma1,...,gamman, corresponding columns gamma, n = nk-1, arguments format.","code":"dfn <- unroll.function(dsurvspline, gamma=0:(nk-1)) pfn <- unroll.function(psurvspline, gamma=0:(nk-1))"},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"","code":"fn <- unroll.function(ncol, x=1:3) fn(1:3, 1:3, 1:3) # equivalent to... #> [1] 3 ncol(cbind(1:3,1:3,1:3)) #> [1] 3"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"Variance-covariance matrix flexsurvreg model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"","code":"# S3 method for flexsurvreg vcov(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"object fitted model object class flexsurvreg, e.g. returned flexsurvreg flexsurvspline. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"Variance-covariance matrix estimated parameters, scale estimated (positive parameters log scale).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":null,"dir":"Reference","previous_headings":"","what":"Weibull distribution in proportional hazards parameterisation — WeibullPH","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"Density, distribution function, hazards, quantile function random generation Weibull distribution proportional hazards parameterisation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"","code":"dweibullPH(x, shape, scale = 1, log = FALSE) pweibullPH(q, shape, scale = 1, lower.tail = TRUE, log.p = FALSE) qweibullPH(p, shape, scale = 1, lower.tail = TRUE, log.p = FALSE) hweibullPH(x, shape, scale = 1, log = FALSE) HweibullPH(x, shape, scale = 1, log = FALSE) rweibullPH(n, shape, scale = 1)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"x, q Vector quantiles. shape Vector shape parameters. scale Vector scale parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"dweibullPH gives density, pweibullPH gives distribution function, qweibullPH gives quantile function, rweibullPH generates random deviates, HweibullPH retuns cumulative hazard hweibullPH hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"Weibull distribution proportional hazards parameterisation `shape' parameter `scale' parameter m density given $$f(x) = m x^{-1} exp(- m x^) $$ cumulative distribution function \\(F(x) = 1 - exp( -m x^)\\), survivor function \\(S(x) = exp( -m x^)\\), cumulative hazard \\(m x^\\) hazard \\(m x^{-1}\\). dweibull base R alternative 'accelerated failure time' (AFT) parameterisation shape scale b. shape parameter \\(\\) versions. scale parameters related \\(b = m^{-1/}\\), equivalently m = b^-. survival modelling, covariates typically included linear model log scale parameter. Thus, proportional hazards model, coefficients model \\(m\\) interpreted log hazard ratios. AFT model, covariates \\(b\\) interpreted time acceleration factors. example, doubling value covariate coefficient \\(beta=log(2)\\) give half expected survival time. coefficients related log hazard ratios \\(\\gamma\\) \\(\\beta = -\\gamma / \\).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-23-2024--","dir":"Changelog","previous_headings":"","what":"Version 2.3 (2024-??-??)","title":"Version 2.3 (2024-??-??)","text":"Analytic Hessian calculation models possible, , Weibull, Gompertz, exponential, spline models hazard odds scales. Analytic gradient calculation Weibull proportional hazards models. Weighted likelihood relative survival models now implemented consistently models, weighted sum individual log-likelihoods. standsurv now returns results order times t given user, consistency summary.flexsurvreg. Quantiles standardised survival now available standsurv. Non-default factor contrasts now handled. pmatrix.simfs can now accept vector times t tidy output option. BIC AICc functions added. Column name predict() output changed \"time\" \"eval_time\", consistency tidymodels update. Default value t now chosen hr_flexsurvreg. coxsnell.flexsurvreg now handles delayed entry. Warning given name location parameter included ancillary part model specification. Fix computing quantiles custom distributions (#187). Thank contributed code version: @mikesweeting @stephematician @ndunnewind @mattwarkentin @hfrick @kkmann; reported issues: @anddis @irtimmins @sbihorel @zou-ims @aghaynes @huftis @mafed @hezht3 @sebffischer (anyone else reported issues via email).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-222-2023-01-31","dir":"Changelog","previous_headings":"","what":"Version 2.2.2 (2023-01-31)","title":"Version 2.2.2 (2023-01-31)","text":"CRAN release: 2023-02-01 Allow unicode characters vignette, satisfy R CMD check r-devel.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-221-2022-12-22","dir":"Changelog","previous_headings":"","what":"Version 2.2.1 (2022-12-22)","title":"Version 2.2.1 (2022-12-22)","text":"CRAN release: 2022-12-22 New simulate.flexsurvreg method simulate data fitted flexsurvreg flexsurvspline model. Thanks Mark Clements help . Fix bug summary() method type = \"quantile\" \"median\" left-truncation prediction (start > 0). Correction examples interpretation Cox-Snell residuals.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-22-2022-06-16","dir":"Changelog","previous_headings":"","what":"Version 2.2 (2022-06-16)","title":"Version 2.2 (2022-06-16)","text":"CRAN release: 2022-06-17 New function standsurv survival hazards standardised observed distribution covariates. Contributed Michael Sweeting mikesweeting79@gmail.com. See new vignette . New function hr_flexsurvreg compute hazard ratio fitted flexsurvreg flexsurvspline model function time, confidence intervals. summary.flexsurvreg rewritten make cleaner faster. User-visible changes: Custom summary functions summary.flexsurvreg must now vectorised. new argument cross specifies whether compute summaries combinations times t covariate values, covariate values matched corresponding times t, custom summary functions. Covariate names tidy=FALSE now consistently don’t include spaces. Better handling NAs summary prediction functions. Thanks Matthew Warkentin. New functions Cox-Snell residuals: coxsnell_flexsurvreg residuals(…, type=“coxsnell”). rmst_generic, mean_survspline, rmst_survspline related functions (e.g. mean_survspline1) handle alternative parameter values vectorised way. Allow output functions work models stripped data x$data <- NULL, possible.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-21-2021-09-13","dir":"Changelog","previous_headings":"","what":"Version 2.1 (2021-09-13)","title":"Version 2.1 (2021-09-13)","text":"CRAN release: 2021-09-13 Fix bug affected models baseline hazard offsets exponential, Weibull, Gompertz hazard/odds-based spline models, convergence may falsely reported due incorrect likelihood derivatives. New vignette section better help page documentation relative survival models. start parameter added predict.flexsurvreg. New function pdf_flexsurmix fitted density function flexsurvmix model. Fix tidy method one-parameter exponential models. Fixes h/Hgamma h/Hlnorm log = TRUE. Minor numerical improvements h/H functions distributions. Bug fix simfs_bytrans transitions don’t happen. NaNs produced warnings occur less often fitting.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-20-2021-02-22","dir":"Changelog","previous_headings":"","what":"Version 2.0 (2021-02-22)","title":"Version 2.0 (2021-02-22)","text":"CRAN release: 2021-02-22 new class multi-state models based mixtures (Larson Dinse 1985). new vignette multi-state modelling describes model class contrasts standard (cause-specific hazards) multi-state models. Different parametric families now supported different transitions multi-state models. New function fmsm allows list flexsurvreg objects associated particular transition structure matrix, create multi-state model. New function simfinal_fmsm summarise times probabilities final absorbing events multi-state models, using simulation. features right-truncated data. Individual-level right-truncation times supported new “rtrunc” argument flexsurvreg flexsurvspline. comparable non-parametric estimator right-truncated data provided new function, survrtrunc. Alternative parametric estimators, make use time initiating event, provided new function, flexsurvrtrunc. new vignette describes properties different built-parametric distributions detail. qgeneric now vectorised, thanks vuniroot function imported rstpm2 package Mark Clements. massively boosts speed rsurvspline, hence speeding simulations spline-based multi-state models. pmatrix.fs can now calculate transition probabilities conditionally transition one subset states. “tidy” argument pmatrix.fs tidy data frame output. “tidy” argument sim.fmsm returning simulations tidy data frame format one row per transition, associated function simfs_bytrans. Bootstrapping function bootci.fmsm made available users get confidence intervals / distributions flexsurv model output functions. Parallel processing capability bootstrap confidence intervals. Distribution mean functions Royston-Parmar model named like dsurvspline2, psurvspline4 , one argument per parameter, rather parameters collected single argument, going 7 knots / 9 parameters. Return value pars.fmsm now list rather matrix, even model family transition. summary.flexsurvreg given new argument “na.action” control whether missing values “newdata” dropped. Defaults producing summaries NA missing values, previously missing values dropped. S3 methods added generics defined broom package. functions create tidy data frames containing results fitted models. new functions tidy.flexsurvreg, glance.flexsurvreg, augment.flexsurvreg. S3 methods added predict residuals generics. predict.flexsurvreg full support model outcomes supported summary.flexsurvreg. residuals.flexsurvreg currently supports naive difference observed survival predicted mean, neglecting censoring. Case weights accounted nonparametric survival cumulative hazard estimates plot.flexsurvreg. Thanks https://github.com/andbe.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-111-2019-03-18","dir":"Changelog","previous_headings":"","what":"Version 1.1.1 (2019-03-18)","title":"Version 1.1.1 (2019-03-18)","text":"CRAN release: 2019-03-18 New type=“quantiles” type=“link” summary.flexsurvreg. Thanks Leonardo Marques contribution. Allow different covariates per transition multi-state models supplied list flexsurvreg objects. Thanks David McAllister contribution. Bug fix qllogis lower.tail=FALSE. Bug fix likelihood events observed. Bug fix “ylim” argument plot method survival cumulative hazard. Allow dynamic symbols C code. Various minor code doc fixes, see github commit history.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-11-2017-03-27","dir":"Changelog","previous_headings":"","what":"Version 1.1 (2017-03-27)","title":"Version 1.1 (2017-03-27)","text":"CRAN release: 2017-03-27 Substantial speed improvements fitting built-models, implementing PDFs CDFs C++. Thanks Paul Metcalfe contributing . Results may therefore differ previous versions edge cases. result package now depends Rcpp. Mean, median restricted mean included built-functions summary.flexsurvreg. Thanks Jordan Amdahl contribution. Documentation migrated roxygen. Thanks Paul Metcalfe contribution. Various minor bug fixes, see github commits.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-102-2016-09-26","dir":"Changelog","previous_headings":"","what":"Version 1.0.2 (2016-09-26)","title":"Version 1.0.2 (2016-09-26)","text":"Bug fix: “start” ignored plot.flexsurvreg. Thanks Ruth Keogh. Built-distribution names now case-insensitive. Thanks Jordan Amdahl. Fix Weibull hazard function avoid numeric instability. Thanks Jordan Amdahl. Fix hsurvspline t includes 0. Thanks Jordan Amdahl. Vectorised parameters supported qgeneric.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-101-2016-05-31","dir":"Changelog","previous_headings":"","what":"Version 1.0.1 (2016-05-31)","title":"Version 1.0.1 (2016-05-31)","text":"Bug fix: covariates labelled wrongly summary.flexsurvreg tidy output. Thanks Owain Saunders.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-100-2016-05-10","dir":"Changelog","previous_headings":"","what":"Version 1.0.0 (2016-05-10)","title":"Version 1.0.0 (2016-05-10)","text":"CRAN release: 2016-05-11 Version number bumped 1.0.0 accompany publication vignette Journal Statistical Software.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-071-2016-03-24","dir":"Changelog","previous_headings":"","what":"Version 0.7.1 (2016-03-24)","title":"Version 0.7.1 (2016-03-24)","text":"CRAN release: 2016-03-24 Slightly efficient likelihood calculations, removed spurious warning likelihood interval censoring. Tests modified work latest (current) testthat.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-07-2015-11-13","dir":"Changelog","previous_headings":"","what":"Version 0.7 (2015-11-13)","title":"Version 0.7 (2015-11-13)","text":"CRAN release: 2015-11-13 flexsurvspline now allows log cumulative hazard (alternatives) modelled spline function time instead log time. routine generating initial values flexsurvspline improved. now obeys constraint log cumulative hazard increasing, thus avoiding errors optim() wasn’t satisfied. Cox regression used fallback initialise covariate effects fails. result, flexsurv now depends “quadprog” package. dweibullPH related functions give Weibull distribution proportional hazards parameterisation, “weibullPH” supported built-model flexsurvreg. Option summary.flexsurvreg return tidy data frame. New “logliki” component model objects, containing vector log-likelihoods observation estimated fixed parameters. Fix various bugs supplying “newdata” summary functions (github issue #7). behaviour now like predict.lm, e.g. variables newdata originally factors supplied factor character, numeric. Fix bug prevented plots drawn categorical covariates default. Fix bugs spline models data censored, data interval censored (github issue #3). Fix bugs subsetting flexsurvspline (github issue #6).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-06-2015-04-13","dir":"Changelog","previous_headings":"","what":"Version 0.6 (2015-04-13)","title":"Version 0.6 (2015-04-13)","text":"CRAN release: 2015-04-14 CRAN release. Also includes changes Version 0.5.1. Full support multi-state models fitted list independent transition-specific models. New function pars.fmsm return transition-specific parameters multi-state models. Bug fix empirical hazard plots categorical covariates. Thanks Milan Bouchet-Valat.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-051-2015-02-24","dir":"Changelog","previous_headings":"","what":"Version 0.5.1 (2015-02-24)","title":"Version 0.5.1 (2015-02-24)","text":"github-release. Log-logistic distribution built flexsurvreg, distribution functions provided. Bug fix tcovs option semi-Markov model simulation. “digits” argument supported default model print function. passed “format” format parameter estimates, defaults 3. Bug fix “events” printed output interval censored data. Thanks Sabrina Russo. pgompertz returns Inf q=Inf, even parameters denoting “living forever”, since CDF P(X <= q) P(X < q). affected fits Gompertz distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-05-2014-09-22","dir":"Changelog","previous_headings":"","what":"Version 0.5 (2014-09-22)","title":"Version 0.5 (2014-09-22)","text":"CRAN release: 2014-09-22 Major new release, version number bumped 0.3 0.5. New package vignettes: user guide vignette examples. Development moved r-forge https://github.com/chjackson/flexsurv-dev. Spline models ancillary covariates: Major rewrite flexsurvspline. now works calling flexsurvreg custom distribution written dynamically. Models can now include covariate effects vary spline functions time, including covariates “gamma1” parameters. New argument “anc” flexsurvreg, alternative preferred way modelling covariates ancillary parameters. New general utility “unroll.function” converts function matrix arguments equivalent function vector arguments. new flexsurvspline works unrolling “dsurvspline”. Quantile, random number, hazard cumulative hazard functions spline distribution. Autogeneration initial values flexsurvspline now accounts left-truncation. Thanks Ana Borges report. new modelling features: Several utilities parametric multi-state modelling, including transition probabilities simulation (“pmatrix.fs”, “totlos.fs”, “sim.fmsm”,“pmatrix.simfs”, “totlos.simfs”). “msfit.flexsurvreg” method also gives cumulative transition-specific hazards format “mstate” package. Interval censoring supported Surv() response. Relative survival models, using “bhazard” argument flexsurvreg specify expected mortality rate. flexsurvreg now uses survreg internally fit Weibull, exponential log-normal models, unless left-truncation. Custom distributions: Custom distributions can defined hazard function. can optionally supplemented cumulative hazard function, otherwise obtained numerical integration. custom distributions specified density, cumulative distribution can now omitted, calculated numerical integration. New arguments “dfns” “aux” flexsurvreg, can used supply custom distribution functions arguments pass . Document density functions custom distributions need “log” argument. Documented supply derivatives custom distributions use optimisation. Output functions: New “newdata” argument summary.flexsurvreg plot.flexsurvreg easier way supplying covariate values. User-defined summary functions can used summary.flexsurvreg plot.flexsurvreg alternative survival, hazard cumulative hazard. New function “normboot.flexsurvreg” simulate parameters asymptotic normal distribution estimates. Used representing uncertainty function parameters. summary.flexsurvreg can called ci=FALSE omit confidence intervals. “start” argument defaults 0 prediction times summary.flexsurvreg. Bug fix summary.flexsurvreg left-truncated models, returning probabilities > 1 truncation time. New model.frame model.matrix methods extract data fitted flexsurvreg objects. Accept vector X summary.flexsurvreg, give informative error X wrong format. Thanks Mark Danese. Extra arguments can passed muhaz plot.muhaz plot.flexsurvreg(…,type=“hazard”,…) Printed output: Use format() signif() printing flexsurvreg objects, avoid spurious zero significant figures. Thanks Kenneth Chen. Standard errors included printed output flexsurvreg, parameters optimised natural log scales (includes built-distributions). Distribution functions: Bug fix rgengamma Q=0 (log-normal) sigma equal 1. Don’t warn shape parameters exactly zero generalized gamma F, just give NaN. basis() fss() functions natural cubic spline basis made available users.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-031-2014-02-14","dir":"Changelog","previous_headings":"","what":"Version 0.3.1 (2014-02-14)","title":"Version 0.3.1 (2014-02-14)","text":"R-forge release. Distribution functions tidied , making special value handling vectorisation consistent. Hazard cumulative hazard functions supported distributions. Vectors different col, lwd lty can passed plot.flexsurvreg multiple fitted lines. Thanks Julia Sandberg report.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-03-2014-01-19","dir":"Changelog","previous_headings":"","what":"Version 0.3 (2014-01-19)","title":"Version 0.3 (2014-01-19)","text":"CRAN release: 2014-01-20 CRAN release. Includes changes 0.2.1 0.2.3.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-023-2013-10-09","dir":"Changelog","previous_headings":"","what":"Version 0.2.3 (2013-10-09)","title":"Version 0.2.3 (2013-10-09)","text":"R-forge release. Parameters location parameter can now covariates flexsurvreg. Thanks Milan Bouchet-Valat help . subset na.action arguments flexsurvreg flexsurvspline. coef, vcov confint methods fitted model objects. Distribution functions generalized gamma, generalized F, Gompertz, now allow parameters vectorised. Bug fix analytic derivatives Weibull. Restored print output introduced 0.1.2 accidentally removed 0.1.5.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-022-2013-07-26","dir":"Changelog","previous_headings":"","what":"Version 0.2.2 (2013-07-26)","title":"Version 0.2.2 (2013-07-26)","text":"R-forge release. Case weights supported flexsurvreg flexsurvspline.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-021-2013-07-03","dir":"Changelog","previous_headings":"","what":"Version 0.2.1 (2013-07-03)","title":"Version 0.2.1 (2013-07-03)","text":"R-forge release. Default left truncation times set wrongly user-supplied times summary.flexsurvreg, giving wrong confidence intervals. now default 0. Confidence intervals set 1 t=0 spline models. Thanks Paul Pynsent. dgompertz,dgengamma,dgengamma.orig,dgenf,dgenf.orig fixed return -Inf instead 0 density zero log=TRUE. Thanks Gao Zheng.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-02-2013-05-13","dir":"Changelog","previous_headings":"","what":"Version 0.2 (2013-05-13)","title":"Version 0.2 (2013-05-13)","text":"CRAN release: 2013-05-15 New summary() method fitted flexsurvreg flexsurvspline model objects gives fitted survival, cumulative hazard hazard curves, confidence intervals mosly computed simulation method. allows plot.flexsurvreg plot confidence intervals fitted survival, hazard cumulative hazard. Left-truncated survival observations supported flexsurvreg flexsurvspline. New psurvspline dsurvspline functions giving distribution density function spline model. Analytic derivatives used optimisation spline (odds hazard scale, normal), exponential, Weibull Gompertz models. Default BFGS optimisation method, uses derivatives available much faster, instead Nelder-Mead. Work around NaN warnings spline models presumably due parameters violating implicit constraints. “knots” specified, boundary knots set min/max uncensored times, times, match results “k” specified. Thanks Paul Pynsent.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-015-2012-08-29","dir":"Changelog","previous_headings":"","what":"Version 0.1.5 (2012-08-29)","title":"Version 0.1.5 (2012-08-29)","text":"CRAN release: 2012-08-29 Data now stored fitted flexsurvreg flexsurvspline model objects, avoiding environment search errors allowing package functions called within functions. Thanks Hanna Daniel report. Gompertz documentation clarified case chance living forever. qgompertz rgompertz now return Inf cases, warning, instead NaN. Thanks Michael Sweeting.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-014-2012-03-22","dir":"Changelog","previous_headings":"","what":"Version 0.1.4 (2012-03-22)","title":"Version 0.1.4 (2012-03-22)","text":"CRAN release: 2012-03-24 maxt argument plot.flexsurvreg. Plots longer complain data named “dat”. Corrected wrong bug fix Version 0.1.3 transforming parameter estimates output fixedpars=TRUE. AIC penalty corrected models fixed parameters. qgengamma corrected parameter Q<0. Thanks Benn Ackley.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-013-2012-01-17","dir":"Changelog","previous_headings":"","what":"Version 0.1.3 (2012-01-17)","title":"Version 0.1.3 (2012-01-17)","text":"CRAN release: 2012-01-17 longer complains invalid initial values zero survival times. Don’t transform parameter estimates output fixedpars=TRUE. Checking functions distribution utilities don’t complain vectorised parameter values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-012-2011-11-08","dir":"Changelog","previous_headings":"","what":"Version 0.1.2 (2011-11-08)","title":"Version 0.1.2 (2011-11-08)","text":"CRAN release: 2011-11-09 Initial CRAN release. features print output flexsurvreg flexsurvspline models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-011-2011-04-19","dir":"Changelog","previous_headings":"","what":"Version 0.1.1 (2011-04-19)","title":"Version 0.1.1 (2011-04-19)","text":"Fix drop=FALSE bug flexsurvspline.inits caused flexsurvspline fail single covariates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-01-2011-03-14","dir":"Changelog","previous_headings":"","what":"Version 0.1 (2011-03-14)","title":"Version 0.1 (2011-03-14)","text":"Initial release","code":""}] +[{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"standardized-survival-measures","dir":"Articles","previous_headings":"Background","what":"Standardized survival measures","title":"Calculating standardized survival measures in flexsurv","text":"standsurv post-estimation command takes flexsurvreg object calculates standardized survival measures. fitting parametric survival model flexsurv often useful compute visualise marginal (standardized) survival. example, suppose survival model fitted adjusted treatment group, age, sex. separate predicted survival curve can obtained individual based covariate pattern prediction can obtained setting covariates mean values (can obtained using summary.flexsurvreg), may useful obtain marginal survival treatment group. Regression standardization achieves fitting regression model including treatment group \\(Z\\), covariates \\(X\\) possible interactions \\(X\\) \\(Z\\). standardized survival can estimated obtaining predictions every individual study fixed treatment arm averaging individual-specific estimates. marginal survival distribution covariates study assuming participants assigned arm \\(Z=z\\) : \\[\\begin{equation} S_s(t|Z=z) = E[S(t | Z=z, X)] = \\frac{1}{N} \\sum_{=1}^{N} S(t | Z=z, X=x_i) \\end{equation}\\] covariate values (vectors) \\(x_1,...,x_{N}\\). standarization done \\(N\\) patients study provides counterfactual marginal estimate setting \\(Z=z\\). standardized survival therefore estimate marginal survival study patients assigned group \\(z\\). certain assumptions, differences marginal survival provide estimates causal effects (Syriopoulou, Rutherford, Lambert (2021)) certain estimands average treatment effect (ATE) can targeted: \\[ ATE = S_s(t|Z=z_1) - S_s(t|Z=z_0)]\\] Alternatively, average treatment effect treated (ATET) estimand can targeted averaging patients intervention treatment arm \\(Z=z_1\\). Standardization estimates can also obtained target populations interest. example may important predict survival external population different characteristics study population. hazard function standardized survival can obtained understand shape hazard changes time. provides estimate marginal hazard. can shown (Rutherford et al. (2020), Appendix ) hazard standardized survival can calculated \\[\\begin{equation} h_s(t|Z=z) = \\frac{\\sum_{=1}^{N} S(t|Z=z,X=x_i)h(t|Z=z,X=x_i)}{\\sum_{=1}^{N} S(t | Z=z, X=x_i)} \\end{equation}\\] weighted average \\(N\\) individual hazard functions, weighted probability survival time \\(t\\). Patients unlikely survived \\(t\\) contribute less weight hazard function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"calculating-marginal-expected-survival-and-hazard","dir":"Articles","previous_headings":"Background","what":"Calculating marginal expected survival and hazard","title":"Calculating standardized survival measures in flexsurv","text":"economic evaluations parametric survival models used extrapolate clinical trial data estimate lifetime benefits. context often useful plot marginal ‘expected’ (general population) survival alongside parametric models fitted extrapolated trial data order aid interpretation visual comparison trial subjects population large. Displaying expected survival hazard functions can aid understanding whether assumed hazard survival functions credible (Rutherford et al. (2020)). Expected survival defined -cause survival general population key characteristics study subjects. General population mortality rates often taken national lifetables stratified age, sex, calendar year occasionally prognostic factors (e.g. deprivation indices). Ederer “exact” method estimating expected survival assumes subjects trial population censored end stated follow-time (Ederer, Axtell, Cutler 1961). expected survival survival expect see age-sex matched general population patients continuously followed-. approach used standsurv calculate expected survival “appropriate forcasting, sample size calculations predictions ‘future’ censoring issue” (Therneau 1999). Based exact method, marginal expected survival using background mortality rates calculated using \\(N\\) patients trial time point \\(t\\): \\[\\begin{equation} S^*(t) = \\frac{1}{N} \\sum_{=1}^N S_i^*(t) \\end{equation}\\] \\(S_i^*(t)\\) expected survival \\(\\)th subject time \\(t\\). follows marginal expected hazard weighted average expected hazard rates: \\[\\begin{equation} h^*(t) = \\frac{ \\sum_{=1}^N S_i^*(t) h_i^*(t)}{\\sum_{=1}^N S_i^*(t)} \\end{equation}\\] expected survival \\(\\)th subject follow-time \\(t\\) calculated based matching general population hazard rates. lifetables utilised often provide mortality rates sex (\\(s\\)), age (\\(\\)) calendar year (\\(y\\)), yearly 5-yearly categories. practice expected survival time \\(t\\) given subject calculated cumulative hazard. given follow-time \\(t\\) sum \\(h^*_{asy} \\times \\textrm{Number days state } (,s,y)\\) follow-\\(h^*_{asy}\\) expected hazard age \\(\\), sex \\(s\\), year \\(y\\). requires follow-time individual study dataset split multiple timescales (e.g. age year) time epochs, can visualised Lexis diagram. epoch can matched corresponding expected mortality rate.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"incorporation-of-background-mortality-into-survival-models","dir":"Articles","previous_headings":"Background","what":"Incorporation of background mortality into survival models","title":"Calculating standardized survival measures in flexsurv","text":"Incorporating background mortality survival models directly recommended helps avoid extremely implausible projections (Rutherford et al. (2020)). can done using excess mortality / relative survival model population based ‘expected’ rates, often life tables, introduced explain background mortality. concept behind models partition -cause mortality excess mortality caused disease interest due causes. parametric model can applied isolated excess mortality. may particularly useful making long-term extrapolations pattern disease-specific mortality cause mortality likely different time. Alternatively, cause death information available reliable, separate cause-specific model can fitted disease-specific mortality cause mortality. -cause mortality rate time \\(t\\) individual \\(\\) can partitioned two constituent parts: \\[\\begin{equation} h_i(t) = h^*_i(t) + \\lambda_i(t) \\end{equation}\\] \\(h_i(t)\\) -cause mortality rate (hazard), \\(h^*_i(t)\\) expected background mortality rate \\(\\lambda_i(t)\\) excess mortality rate. Equivalently, hazard rates can transformed survival scale gives -cause survival time \\(t\\) product expected survival relative survival: \\[\\begin{equation} S_i(t) = S^*_i(t) R_i(t) \\end{equation}\\] relative survival, \\(R_i(t)\\), therefore ratio -cause survival expected survival background population. Typically, \\(h_i^*(t)\\) (hence \\(S_i^*(t)\\)) obtained population lifetables. expected mortality rates assumed fixed known parametric model used estimate relative survival (equivalently excess hazard).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"standsurv","dir":"Articles","previous_headings":"","what":"standsurv","title":"Calculating standardized survival measures in flexsurv","text":"standsurv post-estimation command takes flexsurv regression calculates standardized survival measures contrasts. Expected mortality rates survival can also obtained. main features command enables calculation plotting specified follow-times Marginal survival, hazard restricted mean survival time (RMST) metrics Marginal expected (population) survival hazard functions matched study population Marginal -cause survival -cause hazard fitting relative survival models Contrasts survival, hazard RMST metrics (e.g. marginal hazard ratio, differences marginal RMST) Confidence intervals standard errors measures contrasts using either delta method bootstrapping simple syntax user can specify groups wish calculate marginal metrics. groups can formed combination covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"a-worked-example-the-pbc-dataset","dir":"Articles","previous_headings":"standsurv","what":"A worked example: the pbc dataset","title":"Calculating standardized survival measures in flexsurv","text":"example use data German Breast Cancer Study Group 1984-1989, R dataset bc found flexsurv package. dataset death, censoring times 686 primary node positive breast cancer patients together 3-level prognostic group variable levels “Good”, “Medium” “Poor”. demonstration collapse prognostic variable 2 levels: “Good” “Medium/Poor”. also create artificial ages diagnosis dates patients, along assuming patients female. allow correlation age diagnosis patient survival time age prognostic variable. mean age 65 standard deviation 5. load dataset create additional variables. plot Kaplan-Meier shows clear separation survival curves two prognostic groups.","code":"library(flexsurv) library(flexsurvcure) library(ggplot2) library(dplyr) library(survminer) data(bc) set.seed(236236) ## Age at diagnosis is correlated with survival time. A longer survival time ## gives a younger mean age bc$age <- rnorm(dim(bc)[1], mean = 65 - scale(bc$recyrs, scale=F), sd = 5) ## Create age at diagnosis in days - used later for matching to expected rates bc$agedays <- floor(bc$age * 365.25) ## Create some random diagnosis dates between 01/01/1984 and 31/12/1989 bc$diag <- as.Date(floor(runif(dim(bc)[1], as.Date(\"01/01/1984\", \"%d/%m/%Y\"), as.Date(\"31/12/1989\", \"%d/%m/%Y\"))), origin=\"1970-01-01\") ## Create sex (assume all are female) bc$sex <- factor(\"female\") ## 2-level prognostic variable bc$group2 <- ifelse(bc$group==\"Good\", \"Good\", \"Medium/Poor\") head(bc) #> censrec rectime group recyrs age agedays diag sex group2 #> 1 0 1342 Good 3.676712 64.38839 23517 1986-09-15 female Good #> 2 0 1578 Good 4.323288 67.31488 24586 1986-08-12 female Good #> 3 0 1760 Good 4.821918 61.77993 22565 1985-11-10 female Good #> 4 0 1152 Good 3.156164 65.20415 23815 1987-02-28 female Good #> 5 0 967 Good 2.649315 68.74975 25110 1986-05-18 female Good #> 6 0 629 Good 1.723288 64.53328 23570 1987-03-07 female Good km <- survfit(Surv(recyrs, censrec)~group2, data=bc) kmsurvplot <- ggsurvplot(km) kmsurvplot + xlab(\"Time from diagnosis (years)\")"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"a-stratified-weibull-model","dir":"Articles","previous_headings":"standsurv","what":"A stratified Weibull model","title":"Calculating standardized survival measures in flexsurv","text":"start fitting Weibull model group separately. One way fit single saturated model whereby group affects scale shape parameters Weibull distribution. effectively means separate scale shape parameter group, equivalent fitting two separate models. model make proportional hazards assumption hence hazard ratio change time. saturated model approach advantages can use model easily investigate treatment effects using standsurv shall see later. Including group main formula flexsurvreg allows group affect scale parameter Weibull distribution whilst use anc argument flexsurvreg additionally allow group affect shape parameter. Given model contains group2 covariates can obtain predicted (fitted) survival two groups using summary function storing predictions tidy data.frame argument tidy=T. Weibull model appear fit data well try parametric distributions. However, illustration purposes shall continue using Weibull model. now show predictions can obtained standsurv benefit addition flexibility.","code":"model.weibull.sep <- flexsurvreg(Surv(recyrs, censrec)~group2, anc = list(shape = ~ group2), data=bc, dist=\"weibullPH\") model.weibull.sep #> Call: #> flexsurvreg(formula = Surv(recyrs, censrec) ~ group2, anc = list(shape = ~group2), #> data = bc, dist = \"weibullPH\") #> #> Estimates: #> data mean est L95% U95% se #> shape NA 1.68681 1.32989 2.13952 0.20461 #> scale NA 0.02187 0.01119 0.04274 0.00748 #> group2Medium/Poor 0.66618 1.84846 1.14534 2.55157 0.35874 #> shape(group2Medium/Poor) 0.66618 -0.28237 -0.54219 -0.02254 0.13257 #> exp(est) L95% U95% #> shape NA NA NA #> scale NA NA NA #> group2Medium/Poor 6.35001 3.14351 12.82725 #> shape(group2Medium/Poor) 0.75400 0.58147 0.97771 #> #> N = 686, Events: 299, Censored: 387 #> Total time at risk: 2113.425 #> Log-likelihood = -830.4043, df = 4 #> AIC = 1668.809 predictions <- summary(model.weibull.sep, type = \"survival\", tidy=T) ggplot() + geom_line(aes(x=time, y=est, color = group2), data=predictions) + geom_step(aes(x=time, y=surv, group=strata), data=kmsurvplot$data.survplot)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"using-standsurv-to-calculate-marginal-survival","dir":"Articles","previous_headings":"standsurv","what":"Using standsurv to calculate marginal survival","title":"Calculating standardized survival measures in flexsurv","text":"standsurv works similarly margins command R standsurv Stata allowing user specify list scenarios specific covariates fixed certain values. done using argument standsurv provide list scenarios scenario list containing covariates fixed. worked example two scenarios list(group2 = \"Good\") list(group2 = \"Medium/Poor\"). covariates specified scenarios averaged , hence creating marginal, standardized, estimates metric interest. example , covariates model get answer obtained summary. later worked example extends models containing covariates. default calculate survival probabilities event times data can changed type t arguments, respectively. returned object tidy data.frame columns named at1 atn n scenarios specified argument. details labels scenarios stored attributes standsurv object. utilised plot function. plot marginal estimates can easily produced using plot function, produces ggplot object. plot can easily manipulated, example changing axis labels adding plots.","code":"ss.weibull.sep.surv <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\"))) ss.weibull.sep.surv #> # A tibble: 574 × 3 #> time at1 at2 #> #> 1 0.0219 1.00 0.999 #> 2 0.0411 1.00 0.998 #> 3 0.0438 1.00 0.997 #> 4 0.0466 1.00 0.997 #> 5 0.0493 1.00 0.997 #> 6 0.0795 1.00 0.994 #> 7 0.115 0.999 0.991 #> 8 0.126 0.999 0.990 #> 9 0.156 0.999 0.987 #> 10 0.173 0.999 0.985 #> # ℹ 564 more rows plot(ss.weibull.sep.surv) plot(ss.weibull.sep.surv) + xlab(\"Time since diagnosis (years)\") + geom_step(aes(x=time, y=surv, group=strata), data=kmsurvplot$data.survplot)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"other-metrics-marginal-hazards-and-marginal-rmst","dir":"Articles","previous_headings":"standsurv","what":"Other metrics: marginal hazards and marginal RMST","title":"Calculating standardized survival measures in flexsurv","text":"can use type argument calculate marginal hazards restricted mean survival time (RMST). example plot hazard functions two groups obtained follows: Whilst plot RMST given ","code":"ss.weibull.sep.haz <- standsurv(model.weibull.sep, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\"))) plot(ss.weibull.sep.haz) + xlab(\"Time since diagnosis (years)\") ss.weibull.sep.rmst <- standsurv(model.weibull.sep, type = \"rmst\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\"))) plot(ss.weibull.sep.rmst) + xlab(\"Time since diagnosis (years)\")"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"calculating-contrasts","dir":"Articles","previous_headings":"standsurv","what":"Calculating contrasts","title":"Calculating standardized survival measures in flexsurv","text":"advantage fitting saturated model now becomes clear can calculate contrasts scenarios. Suppose interested difference survival functions two groups. easily calculated using contrast = \"difference\" argument, plot contrast can obtained using contrast = TRUE argument plot function. Alternatively, may wish visualise implied hazard ratio fitting separate Weibull models two groups. breast cancer example see hazard ratio (treatment effect) starts high decreasing, suggesting Medium/Poor prognosis start high elevated risk continued excess risk end follow-, compared Good prognosis.","code":"ss.weibull.sep.3 <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), contrast = \"difference\") plot(ss.weibull.sep.3, contrast=TRUE) + xlab(\"Time since diagnosis (years)\") + ylab(\"Difference in survival probabilities\") + geom_hline(yintercept = 0) ss.weibull.sep.4 <- standsurv(model.weibull.sep, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), contrast = \"ratio\") plot(ss.weibull.sep.4, contrast=TRUE) + xlab(\"Time since diagnosis (years)\") + ylab(\"Hazard ratio\") + geom_hline(yintercept = 1)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"confidence-intervals-and-standard-errors","dir":"Articles","previous_headings":"standsurv","what":"Confidence intervals and standard errors","title":"Calculating standardized survival measures in flexsurv","text":"Confidence intervals standard errors metric interest contrasts can obtained either bootstrapping using delta method. Bootstrap confidence intervals calculated specifying ci = TRUE, boot = TRUE, providing number bootstrap samples using B. can also set seed using seed argument allow reproducibility. instead delta method used obtain confidence intervals specify ci = TRUE, boot = FALSE. delta method obtains confidence intervals calculating standard errors given transformation metric interest assuming normality. default use log transformation; hence type = \"survival\" confidence intervals symmetric log survival probabilities. Alternative transformations can specified using trans argument. code shows confidence intervals marginal survival calculated bootstrap method (B = 100) compared delta method. computational efficiency predict 10 time points.","code":"ss.weibull.sep.boot <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=10), ci = TRUE, boot = TRUE, B = 100, seed = 2367) #> Calculating bootstrap standard errors / confidence intervals ss.weibull.sep.deltam <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=10), ci = TRUE, boot = FALSE) #> Calculating standard errors / confidence intervals using delta method plot(ss.weibull.sep.boot, ci = TRUE) + geom_ribbon(aes(x=time, ymin=survival_lci, ymax=survival_uci, color=at, linetype = \"Delta method\"), fill=NA, data=attr(ss.weibull.sep.deltam,\"standpred_at\")) + scale_linetype_manual(values = c(\"Bootstrap\" = \"solid\", \"Delta method\"= \"dashed\")) + ggtitle(\"Comparison of bootstrap and delta method confidence intervals\") #> Scale for linetype is already present. #> Adding another scale for linetype, which will replace the existing scale."},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"adding-age-as-a-covariate","dir":"Articles","previous_headings":"standsurv","what":"Adding age as a covariate","title":"Calculating standardized survival measures in flexsurv","text":"Suppose age added covariate survival model. age included scenarios standsurv default produce standardized estimates survival averaged age distribution study population. Alternatively pass new prediction dataset standsurv obtain standardized estimates population. example, obtain marginal survival estimates fitting stratified Weibull model, firstly standardized age-distribution study population secondly standardized older population mean age 75 standard deviation 5.","code":"model.weibull.age.sep <- flexsurvreg(Surv(recyrs, censrec)~group2 + age, anc = list(shape = ~ group2 + age), data=bc, dist=\"weibullPH\") ## Marginal survival standardized to age distribution of study population ss.weibull.age.sep.surv <- standsurv(model.weibull.age.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50) ) ## Marginal survival standardized to an older population # create a new prediction dataset as a copy of the bc data but whose ages are drawn from # a normal distribution with mean age 75, sd 5. newpred.data <- bc set.seed(247) newpred.data$age = rnorm(dim(bc)[1], 75, 5) ss.weibull.age2.sep.surv <- standsurv(model.weibull.age.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50), newdata=newpred.data) ## Overlay both marginal survival curves plot(ss.weibull.age.sep.surv) + geom_line(aes(x=time, y=survival, color=at, linetype = \"Older population\"), data = attr(ss.weibull.age2.sep.surv, \"standpred_at\") ) + scale_linetype_manual(values = c(\"Study\" = \"solid\", \"Older population\"= \"dashed\")) #> Scale for linetype is already present. #> Adding another scale for linetype, which will replace the existing scale."},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"calculating-expected-survival-and-hazard-in-standsurv","dir":"Articles","previous_headings":"standsurv","what":"Calculating expected survival and hazard in standsurv","title":"Calculating standardized survival measures in flexsurv","text":"overlay marginal expected survival hazard curves require lifetable population hazard rates. demonstrate use US lifetable comes survival package, called survexp.us. lifetables can obtained directly Human Mortality Database (HMD) using HMDHFDplus package. survexp.us lifetable ratetable object stratification factors age, sex year. gives rates mortality per person-day combinations stratification factors. summary survexp.us object shows time-scale days. use lifetable get expected rates trial population need match age, sex year variables dataset ratetable. can use rmap argument . standsurv utilises survexp function survival package calculate expected survival times specified t using ‘exact’ method Ederer. note sex data coded ratetable (“male” “female”) importantly variables record age diagnosis diagnosis date days. important user ensures study data correctly coded variables timescale ratetable matching successful. code demonstrates data therefore need match year variable ratetable diag variable study data, age variable ratetable agedays variable study data. need specify three arguments standsurv. First, lifetable, must ratetable object specified using ratetable argument. Second, may need pass trial dataset standsurv stratifying factors appear covariates flexsurv model. Finally, need careful tell standsurv time scale transformation fitted flexsurv model time scale ratetable. can use scale.ratetable argument . Typically ratetable objects expressed days (e.g. rates per person-day). default therefore scale.ratetable = 365.25, indicates survival model fitted years ratetable days. running standsurv can plot expected survival (hazard) using argument expected = TRUE plot() function. can see marginal expected survival much higher marginal (predicted) survival breast cancer population. can also obtain expected hazards: hazard plot shows model predicting increasing hazard time cancer population, remains significantly higher expected hazard general population. monotonically increasing hazard imposed Weibull distribution may implausible may make us question suitability Weibull model wish extrapolate.","code":"summary(survexp.us) #> Rate table with 3 dimensions: #> age ranges from 0 to 39812.25; with 110 categories #> sex has levels of: male female #> year ranges from 1940-01-01 to 2020-01-01; with 81 categories ss.weibull.sep.expected <- standsurv(model.weibull.sep, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.expected, expected = T) ss.weibull.sep.expectedh <- standsurv(model.weibull.sep, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,7,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.expectedh, expected = T)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"incorporation-of-background-mortality","dir":"Articles","previous_headings":"standsurv","what":"Incorporation of background mortality","title":"Calculating standardized survival measures in flexsurv","text":"relative survival model can fitted using flexsurv incorporating background mortality rates. model estimates excess hazard rates relative survival measures. prediction purposes, following fitting relative survival model, standsurv allows user either obtain marginal predictions relative survival / excess hazard -cause survival / -cause hazard. latter calculated multiplying relative survival estimates expected survival get -cause survival, adding excess hazard rates expected hazard get -cause hazard. demonstrate fitting relative survival cure model breast cancer data obtaining predicted -cause survival -cause hazard 30-years diagnosis. mixture cure model makes assumption proportion study population never experience event. relative survival framework cure model assumes excess mortality rate approaches zero (equivalently relative survival reaches asymptote determined cure fraction). fit relative survival cure model Weibull distribution assumed uncured. relative survival mixture-cure model fitted . must pass flexsurvcure expected hazard rates event / censoring time individual, expected rates event times used likelihood function parametric relative survival model. need initally data wrangling. Firstly, calculate attained age attained year (whole years) event time study subjects. Secondly, join data expected rates using matching variables attained age, attained year sex. example, express expected rate per person-year timescale used flexsurv regression model. can now use standsurv obtain -cause survival hazard predictions using type = \"survival\" type = \"hazard\". instead wanted predictions relative survival excess hazards use type = \"relsurvival\" type = \"excesshazard\", respectively. marginal excess hazard now unimodal since cure model forcing initially increasing excess hazard tend zero long-term ‘cured’ subjects remain. marginal -cause hazard tends expected hazard follows thereafter. plot excess hazard confirms .","code":"## reshape US lifetable to be a tidy data.frame, and convert rates to per person-year as flexsurv regression is in years survexp.us.df <- as.data.frame.table(survexp.us, responseName = \"exprate\") %>% mutate(exprate = 365.25 * exprate) survexp.us.df$age <- as.numeric(as.character(survexp.us.df$age)) survexp.us.df$year <- as.numeric(as.character(survexp.us.df$year)) ## Obtain attained age and attained calendar year in (whole) years bc <- bc %>% mutate(attained.age.yr = floor(age + recyrs), attained.year = lubridate::year(diag + rectime)) ## merge in (left join) expected rates at event time bc <- bc %>% left_join(survexp.us.df, by = c(\"attained.age.yr\"=\"age\", \"attained.year\"=\"year\", \"sex\"=\"sex\")) # A stratified relative survival mixture-cure model model.weibull.sep.rs <- flexsurvcure(Surv(recyrs, censrec)~group2, anc = list(shape = ~ group2, scale = ~ group2), data=bc, dist=\"weibullPH\", bhazard=exprate) model.weibull.sep.rs #> Call: #> flexsurvcure(formula = Surv(recyrs, censrec) ~ group2, data = bc, #> bhazard = exprate, dist = \"weibullPH\", anc = list(shape = ~group2, #> scale = ~group2)) #> #> Estimates: #> data mean est L95% U95% se #> theta NA 0.73277 0.60988 0.82787 NA #> shape NA 2.62590 1.88756 3.65306 0.44231 #> scale NA 0.02973 0.00993 0.08896 0.01663 #> group2Medium/Poor 0.66618 -1.76733 -2.48411 -1.05055 0.36571 #> shape(group2Medium/Poor) 0.66618 -0.52951 -0.88563 -0.17340 0.18170 #> scale(group2Medium/Poor) 0.66618 1.81159 0.68352 2.93965 0.57555 #> exp(est) L95% U95% #> theta NA NA NA #> shape NA NA NA #> scale NA NA NA #> group2Medium/Poor 0.17079 0.08340 0.34974 #> shape(group2Medium/Poor) 0.58889 0.41245 0.84080 #> scale(group2Medium/Poor) 6.12014 1.98084 18.90922 #> #> N = 686, Events: 299, Censored: 387 #> Total time at risk: 2113.425 #> Log-likelihood = -784.3236, df = 6 #> AIC = 1580.647 ## All-cause survival ss.weibull.sep.rs.surv <- standsurv(model.weibull.sep.rs, type = \"survival\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,30,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Marginal all-cause survival will be calculated #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.rs.surv, expected = T) # All-cause hazard ss.weibull.sep.rs.haz <- standsurv(model.weibull.sep.rs, type = \"hazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,30,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Marginal all-cause hazard will be calculated #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.rs.haz, expected = T) # Excess hazard ss.weibull.sep.rs.excesshaz <- standsurv(model.weibull.sep.rs, type = \"excesshazard\", at = list(list(group2 = \"Good\"), list(group2 = \"Medium/Poor\")), t = seq(0,30,length=50), rmap=list(sex = sex, year = diag, age = agedays ), ratetable = survexp.us, scale.ratetable = 365.25, newdata = bc ) #> Calculating marginal expected survival and hazard plot(ss.weibull.sep.rs.excesshaz)"},{"path":"http://chjackson.github.io/flexsurv-dev/articles/standsurv.html","id":"conclusions","dir":"Articles","previous_headings":"","what":"Conclusions","title":"Calculating standardized survival measures in flexsurv","text":"standsurv powerful post-estimation command allows easy calculation number useful prediction metrics. Contrasts can made counterfactual populations interest , regression standardisation, allows targeting marginal estimands. Confidence intervals, via delta method bootstrapping, available benchmarking incorporating background mortality rates also supported.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Christopher Jackson. Author, maintainer. Paul Metcalfe. Contributor. Jordan Amdahl. Contributor. Matthew T. Warkentin. Contributor. Michael Sweeting. Contributor. Kevin Kunzmann. Contributor.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Christopher Jackson (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08","code":"@Article{, title = {{flexsurv}: A Platform for Parametric Survival Modeling in {R}}, author = {Christopher Jackson}, journal = {Journal of Statistical Software}, year = {2016}, volume = {70}, number = {8}, pages = {1--33}, doi = {10.18637/jss.v070.i08}, }"},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"flexsurv-","dir":"","previous_headings":"","what":"Flexible Parametric Survival and Multi-State Models","title":"Flexible Parametric Survival and Multi-State Models","text":"flexsurv R package parametric survival multi-state modelling.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"key-features","dir":"","previous_headings":"","what":"Key features","title":"Flexible Parametric Survival and Multi-State Models","text":"Parametric models time--event (survival) data. Data may right-censored, /left-censored, /left-truncated. Several built-parametric distributions available, including flexible model based splines (Royston Parmar). user-defined parametric model can employed supplying R functions defining distribution. Covariates can included using (log-)linear model parameter distribution. typically defines accelerated failure time proportional hazards model. Multi-state models continuously-observed data can defined piecing together transition-specific parametric models kind. (intermittently-observed data, see instead msm package.)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"learn-more","dir":"","previous_headings":"","what":"Learn more","title":"Flexible Parametric Survival and Multi-State Models","text":"User guide (PDF). Guide multi-state modelling flexsurv. Full reference manual package’s functions. Paper Journal Statistical Software (Jackson 2016). Mostly user guide, kept date.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"installation-stable-cran-version","dir":"","previous_headings":"","what":"Installation (stable CRAN version)","title":"Flexible Parametric Survival and Multi-State Models","text":"","code":"install.packages(\"flexsurv\")"},{"path":"http://chjackson.github.io/flexsurv-dev/index.html","id":"installation-development-version","dir":"","previous_headings":"","what":"Installation (development version)","title":"Flexible Parametric Survival and Multi-State Models","text":"","code":"install.packages(\"devtools\") # if devtools not already installed devtools::install_github('chjackson/flexsurv-dev')"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"Defined sum AICs transition-specific models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"","code":"# S3 method for fmsm AIC(object, ..., k = 2)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"object Object returned fmsm representing multistate model. ... arguments (currently unused). k Penalty applied number parameters (defaults standard 2).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AIC.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Akaike's information criterion from a flexible parametric multistate model — AIC.fmsm","text":"sum AICs transition-specific models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Second-order Akaike information criterion — AICc.flexsurvreg","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"Second-order \"corrected\" Akaike information criterion, often known AICc (see, e.g. Burnham Anderson 2002). defined -2 log-likelihood + (2*p*n)/(n - p -1), whereas standard AIC defined -2 log-likelihood + 2*p, p number parameters n sample size. correction intended adjust AIC small-sample bias, hence makes difference result small n.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"","code":"# S3 method for flexsurvreg AICc(object, cens = TRUE, ...) # S3 method for flexsurvreg AICC(object, cens = TRUE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"object Fitted model returned flexsurvreg (flexsurvspline). cens Include censored observations sample size term (n) used calculation. See BIC.flexsurvreg discussion issues defining sample size. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"second-order AIC fitted model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"can spelt either AICC AICc.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Second-order Akaike information criterion — AICc.flexsurvreg","text":"Burnham, K. P., Anderson, D. R. (2002) Model Selection Multimodel Inference: practical information-theoretic approach. Second edition. Springer: New York.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":null,"dir":"Reference","previous_headings":"","what":"Second-order Akaike information criterion — AICc","title":"Second-order Akaike information criterion — AICc","text":"Generic function second-order Akaike information criterion. current implementation flexsurv AICc.flexsurvreg, see details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Second-order Akaike information criterion — AICc","text":"","code":"AICc(object, ...) AICC(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Second-order Akaike information criterion — AICc","text":"object Fitted model object. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/AICc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Second-order Akaike information criterion — AICc","text":"can spelt either AICC AICc.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":null,"dir":"Reference","previous_headings":"","what":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"Given fitted flexsurvmix model, return Aalen-Johansen estimates probability occupying state series times covering observed data. State 1 represents experienced competing events, state 2 states correspond experienced competing events respectively. estimates can compared fitted probabilities returned p_flexsurvmix check fit flexsurvmix model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"","code":"ajfit(x, newdata = NULL, tidy = TRUE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"x Fitted model returned flexsurvmix. newdata Data frame alternative covariate values check fit . factor covariates supported. tidy TRUE single tidy data frame returned. Otherwise function returns object returned survfit, list objects computing subset-specific estimates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"supported models covariates models containing factor covariates. models factor covariates, Aalen-Johansen estimates computed subsets data defined newdata. newdata supplied, function returns state occupancy probabilities possible combinations factor levels. Aalen-Johansen estimates computed using survfit survival package (Therneau 2020).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Aalen-Johansen nonparametric estimates comparable to a fitted flexsurvmix\r\nmodel — ajfit","text":"Therneau T (2020). _A Package Survival Analysis R_. R package version 3.2-3, .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","title":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","text":"computes Aalen-Johansen estimates probability occupying state series times, using ajfit. equivalent estimates parametric model produced using p_flexsurvmix, concatenated nonparametric estimates form tidy data frame. data frame can simply plotted using ggplot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","text":"","code":"ajfit_flexsurvmix(x, maxt = NULL, startname = \"Start\", B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Forms a tidy data frame for plotting the fit of parametric mixture\r\nmulti-state models against nonparametric estimates — ajfit_flexsurvmix","text":"x Fitted model returned flexsurvmix. maxt Maximum time produce parametric estimates . default maximum event time data, maximum time nonparametric estimates . startname Label give state corresponding \"event happened yet\". default \"Start\". B Number simulation replications use calculate confidence interval parametric estimates p_flexsurvmix. Comparable intervals Aalen-Johansen estimates returned set. Otherwise B=NULL intervals returned.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"Computes parametric comparable Aalen-Johansen nonparametric estimates flexible parametric multi-state model, returns together tidy data frame. models covariates, factor covariates, supported. factor covariates, nonparametric estimates computed subgroups defined combinations covariates. Another restriction function transitions must covariates .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"","code":"ajfit_fmsm(x, maxt = NULL, newdata = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"x Object returned fmsm representing flexible parametric multi-state model. must Markov, rather semi-Markov, check performed . Note \"competing risks\" style models, just one source state multiple destination states, Markov, fine . maxt Maximum time compute parametric estimates . newdata Data frame defining subgroups consider. must column covariate model. omitted, potential subgroups defined combinations factor covariates included. Continuous covariates supported.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ajfit_fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check the fit of Markov flexible parametric multi-state models against\r\nnonparametric estimates. — ajfit_fmsm","text":"Tidy data frame containing Aalen-Johansen parametric estimates state occupancy time, subgroup subgroups included.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Augment data with information from a flexsurv model object — augment.flexsurvreg","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"Augment accepts model object dataset adds information observation dataset. commonly, includes predicted values .fitted column, residuals .resid column, standard errors fitted values .se.fit column. New columns always begin . prefix avoid overwriting columns original dataset.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"","code":"# S3 method for flexsurvreg augment( x, data = NULL, newdata = NULL, type.predict = \"response\", type.residuals = \"response\", ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. data data.frame tibble containing original data used produce object x. newdata data.frame tibble containing original predictors used create x. Defaults NULL, indicating nothing passed newdata. newdata specified, data argument ignored. type.predict Character indicating type prediction use. Passed type argument predict generic. Allowed arguments vary model class, sure read predict.my_class documentation. type.residuals Character indicating type residuals use. Passed type argument residuals generic. Allowed arguments vary model class, sure read residuals.my_class documentation. ... Additional arguments. currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"tibble containing data newdata possible additional columns: .fitted Fitted values model .se.fit Standard errors fitted values .resid Residuals (present newdata specified)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"neither data newdata specified, model.frame(x) used. worth noting model.frame(x) include Surv object original time--event variables used fitting flexsurvreg object. original data desired, specify data.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/augment.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Augment data with information from a flexsurv model object — augment.flexsurvreg","text":"","code":"fit <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"exp\") augment(fit, data = ovarian) #> # A tibble: 26 × 9 #> futime fustat age resid.ds rx ecog.ps .pred_time .std_error .resid #> #> 1 59 1 72.3 2 1 1 213. 113. -154. #> 2 115 1 74.5 2 1 1 165. 103. -49.8 #> 3 156 1 66.5 2 1 2 427. 149. -271. #> 4 421 0 53.4 2 2 1 2016. 879. -1595. #> 5 431 1 50.3 2 1 1 2886. 1576. -2455. #> 6 448 0 56.4 1 1 2 1402. 495. -954. #> 7 464 1 56.9 2 2 2 1320. 452. -856. #> 8 475 1 59.9 2 2 2 934. 281. -459. #> 9 477 0 64.2 2 1 1 560. 174. -82.8 #> 10 563 1 55.2 1 2 2 1626. 623. -1063. #> # ℹ 16 more rows"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":null,"dir":"Reference","previous_headings":"","what":"Natural cubic spline basis — basis","title":"Natural cubic spline basis — basis","text":"Compute basis natural cubic spline, default using parameterisation described Royston Parmar (2002). Used flexible parametric survival models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Natural cubic spline basis — basis","text":"","code":"basis(knots, x, spline = \"rp\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Natural cubic spline basis — basis","text":"knots Vector knot locations increasing order, including boundary knots beginning end. x Vector ordinates compute basis . spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Natural cubic spline basis — basis","text":"matrix one row ordinate one column knot. basis returns basis, dbasis returns derivative respect x. fss dfss , order arguments swapped around consistency similar functions R packages.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Natural cubic spline basis — basis","text":"exact formula basis given flexsurvspline.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Natural cubic spline basis — basis","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Wang W, Yan J (2021). Shape-Restricted Regression Splines R Package splines2. Journal Data Science, 19(3), 498-517.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/basis.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Natural cubic spline basis — basis","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":null,"dir":"Reference","previous_headings":"","what":"Breast cancer survival data — bc","title":"Breast cancer survival data — bc","text":"Survival times 686 patients primary node positive breast cancer.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Breast cancer survival data — bc","text":"","code":"bc"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Breast cancer survival data — bc","text":"data frame 686 rows.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Breast cancer survival data — bc","text":"German Breast Cancer Study Group, 1984-1989. Used reference dataset spline-based survival model Royston Parmar (2002), implemented flexsurvspline. Originally provided stpm (Royston 2001, 2004) stpm2 (Lambert 2009, 2010) Stata modules.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bc.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Breast cancer survival data — bc","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Sauerbrei, W. Royston, P. (1999). Building multivariable prognostic diagnostic models: transformation predictors using fractional polynomials. Journal Royal Statistical Society, Series 162:71-94.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"Bayesian Information Criterion (BIC) comparison flexsurvreg models","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"","code":"# S3 method for flexsurvreg BIC(object, cens = TRUE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"object Fitted model returned flexsurvreg (flexsurvspline). cens Include censored observations sample size term (n) used calculation BIC. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"BIC fitted model. minus twice log likelihood plus p*log(n), p number parameters n sample size data. weights supplied flexsurv, sample size defined sum weights.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"\"official\" definition sample size use BIC censored survival analysis. BIC based approximation Bayesian model comparison using Bayes factors implicit vague prior. Informally, sample size describes number \"units\" giving rise distinct piece information (Kass Raftery 1995). However censored observations provide less information observed events, principle. default used number individuals, consistency familiar kinds statistical modelling. However censoring heavy, number events may better represent amount information. Following principles, best approximation expected somewere . AIC BIC intended measure different things. Briefly, AIC measures predictive ability, whereas BIC expected choose true model set models one truth. Therefore BIC chooses simpler models tiniest sample sizes (\\(log(n)>2\\), \\(n>7\\)). AIC might preferred typical situation \"models wrong useful\". AIC also gives similar results cross-validation (Stone 1977).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/BIC.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bayesian Information Criterion (BIC) for comparison of flexsurvreg models — BIC.flexsurvreg","text":"Kass, R. E., & Raftery, . E. (1995). Bayes factors. Journal American Statistical Association, 90(430), 773-795. Stone, M. (1977). asymptotic equivalence choice model cross‐validation Akaike's criterion. Journal Royal Statistical Society: Series B (Methodological), 39(1), 44-47.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"Calculate confidence interval model output repeatedly replacing parameters fitted model object draw multivariate normal distribution maximum likelihood estimates, recalculating output function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"","code":"bootci.fmsm( x, B, fn, cl = 0.95, attrs = NULL, cores = NULL, sample = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. list objects, defining multi-state model. B Number parameter draws use fn Function bootstrap results . must argument named x giving fitted flexsurv model object. may return value format, e.g. list, matrix vector, long can converted numeric vector unlist. See example . cl Width symmetric confidence interval, default 0.95 attrs attributes value returned fn want confidence intervals . unlisted, possible, appended result vector. cores Number cores use parallel processing. sample TRUE bootstrap sample returned. FALSE quantiles sample returned giving confidence interval. ... Additional arguments pass fn.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"matrix two rows, giving upper lower confidence limits respectively. row vector length unlisted result function corresponding fncall.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bootci.fmsm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bootstrap confidence intervals for flexsurv output functions — bootci.fmsm","text":"","code":"## How to use bootci.fmsm ## Write a function with one argument called x giving a fitted model, ## and returning some results of the model. The results may be in any form. tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) bexp <- flexsurvreg(Surv(Tstart, Tstop, status) ~ trans, data=bosms3, dist=\"exp\") summfn <- function(x, t){ resp <- flexsurv::pmatrix.fs(x, trans=tmat, t=t) rest <- flexsurv::totlos.fs(x, trans=tmat, t=t) list(resp, rest) } ## Use bootci.fmsm to obtain the confidence interval ## The matrix columns are in the order of the unlisted results of the original ## summfn. You will have to rearrange them into the format that you want. ## If summfn has any extra arguments, in this case \\code{t}, make sure they are ## passed through via the ... argument to bootci.fmsm bootci.fmsm(bexp, B=3, fn=summfn, t=10) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] #> 2.5% 0.08592861 0 0 0.1375007 0.06010952 0 0.7355608 0.9103557 1 #> 97.5% 0.09767351 0 0 0.1713291 0.08964429 0 0.7652248 0.9398905 1 #> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] #> 2.5% 3.724345 0 0 1.965259 3.340625 0 3.920215 6.225585 10 #> 97.5% 3.879065 0 0 2.259760 3.774415 0 4.160991 6.659375 10 bootci.fmsm(bexp, B=3, fn=summfn, t=5) #> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] #> 2.5% 0.2517227 0 0 0.2579086 0.2297033 0 0.4145488 0.7130623 1 #> 97.5% 0.3156585 0 0 0.2714704 0.2869377 0 0.4902755 0.7702967 1 #> [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] #> 2.5% 2.711962 0 0 1.049453 2.617790 0 0.9831934 2.144306 5 #> 97.5% 2.967353 0 0 1.101155 2.855694 0 1.1868829 2.382210 5"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":null,"dir":"Reference","previous_headings":"","what":"Bronchiolitis obliterans syndrome after lung transplants — bos","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"dataset containing histories bronchiolitis obliterans syndrome (BOS) lung transplant recipients. BOS chronic decline lung function, often observed lung transplantation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"data frame containing sequence observed censored transitions next stage severity death. grouped patient includes histories 204 patients. patients start state 1 (BOS) six months transplant, may subsequently develop BOS die. bosms3 contains data three-state model: BOS, BOS death. bosms4 uses four-state representation: BOS, mild BOS, moderate/severe BOS death.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"Papworth Hospital, U.K.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"entry time patient stage BOS estimated clinicians, based history lung function measurements acute rejection infection episodes. BOS assumed occur beyond six months transplant. first six months function patient's new lung stabilises. Subsequently BOS diagnosed comparing lung function \"baseline\" value. data provided msm package, native format msm allow Markov models fitted. flexsurv, much flexible models can fitted.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/bos.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Bronchiolitis obliterans syndrome after lung transplants — bos","text":"Heng. D. et al. (1998). Bronchiolitis Obliterans Syndrome: Incidence, Natural History, Prognosis, Risk Factors. Journal Heart Lung Transplantation 17(12)1255--1263.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"Extract model coefficients fitted flexible survival models. presents parameter estimates, transformed real line necessary. example, shape scale parameters, constrained positive, returned log scale.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"","code":"# S3 method for flexsurvreg coef(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"returns mod$res.t[,\"est\"] component fitted model object mod. See flexsurvreg, flexsurvspline full documentation components.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"matches behaviour coef.default standard R model families glm, intercepts regression models presented scale covariate effects. Note parameter distribution fitted flexsurvreg flexsurvreg may intercept regression model.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coef.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract model coefficients from fitted flexible survival models — coef.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"Cox-Snell residuals parametric survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"","code":"coxsnell_flexsurvreg(x)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"x Object returned flexsurvreg flexsurvspline representing fitted survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"data frame column called est giving Cox-Snell residual, defined fitted cumulative hazard data point. fitted cumulative hazard given observed data point, columns indicating observation time, observed event status, covariate values defining data point. cumulative hazards est form censored sample Exponential(1). Therefore check fit model, plot nonparametric estimate cumulative hazard curve diagonal line origin, theoretical cumulative hazard trajectory Exponential(1).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/coxsnell_flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Cox-Snell residuals from a parametric survival model — coxsnell_flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") cs <- coxsnell_flexsurvreg(fitg) ## Model appears to fit well, with some small sample noise surv <- survfit(Surv(cs$est, ovarian$fustat) ~ 1) plot(surv, fun=\"cumhaz\") abline(0, 1, col=\"red\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hessian.html","id":null,"dir":"Reference","previous_headings":"","what":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","title":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","text":"perform quick check expected runtime adjust precision accordingly.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hessian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","text":"","code":".hessian(f, x, seconds.warning = 60, default.r = 6, min.r = 2, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hessian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Numerical evaluation of the hessian of a function using numDeriv::hessian — .hessian","text":"f function compute Hessian x location evaluate Hessian seconds.warning time threshold seconds trigger message reduce number iterations Richardson extrapolation numDeriv::hessian default.r default number iterations (high-precision recommendation numDeriv) min.r minial number iteration, must least 2, ... arguments passed method.args numDeriv::hessian","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hess_to_cov.html","id":null,"dir":"Reference","previous_headings":"","what":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","title":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","text":"helper function safely convert Hessian matrix covariance matrix","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hess_to_cov.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","text":"","code":".hess_to_cov(hessian, tol.solve = 1e-09, tol.evalues = 1e-05, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/dot-hess_to_cov.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"helper function to safely convert a Hessian matrix to covariance matrix — .hess_to_cov","text":"hessian hessian matrix convert covariance matrix (must evaluated MLE) tol.solve tolerance used solve() tol.evalues accepted tolerance negative eigenvalues covariance matrix ... arguments passed Matrix::nearPD","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":null,"dir":"Reference","previous_headings":"","what":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"flexsurv: Flexible parametric models time--event data, including generalized gamma, generalized F Royston-Parmar spline model, extensible user-defined distributions.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"flexsurvreg fits parametric models time--event (survival) data. Data may right-censored, /left-censored, /left-truncated. Several built-parametric distributions available. user-defined parametric model can also employed supplying list basic information distribution, including density hazard ideally also cumulative distribution hazard. Covariates can included using linear model parameter distribution, log-transformed real line necessary. typically defines accelerated failure time proportional hazards model, depending distribution parameter. flexsurvspline fits flexible survival model Royston Parmar (2002) log cumulative hazard modelled natural cubic spline function log time. Covariates can included spline parameters, giving either proportional hazards model arbitrarily-flexible time-dependent effect. Alternative proportional odds probit parameterisations available. Output models can presented survivor, cumulative hazard hazard functions (summary.flexsurvreg). can plotted nonparametric estimates (plot.flexsurvreg) assess goodness--fit. user-defined function parameters may summarised way. Multi-state models time--event data can also fitted functions. Predictions models can made using functions pmatrix.fs, pmatrix.simfs, totlos.fs, totlos.simfs, sim.fmsm, alternatively msfit.flexsurvreg followed mssample probtrans package mstate. Distribution (``dpqr'') functions generalized gamma F distributions given GenGamma, GenF (preferred parameterisations) GenGamma.orig, GenF.orig (original parameterisations). flexsurv also includes standard Gompertz distribution unrestricted shape parameter, see Gompertz.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"user-guide","dir":"Reference","previous_headings":"","what":"User guide","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"flexsurv user guide vignette explains methods detail, gives several worked examples. vignette flexsurv-examples gives complicated examples, users encouraged submit .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"Jackson, C. (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08 Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Cox, C. (2008). generalized \\(F\\) distribution: umbrella parametric survival analysis. Statistics Medicine 27:4301-4312. Cox, C., Chu, H., Schneider, M. F. Muñoz, . (2007). Parametric survival analysis taxonomy hazard functions generalized gamma distribution. Statistics Medicine 26:4252-4374","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurv-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"flexsurv: Flexible parametric survival and multi-state models — flexsurv-package","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible parametric mixture models for times to competing events — flexsurvmix","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"mixture model competing events, individual can experience one set different events. specify model probability experience event others, model time event conditionally event occurring first.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"","code":"flexsurvmix( formula, data, event, dists, pformula = NULL, anc = NULL, partial_events = NULL, initp = NULL, inits = NULL, fixedpars = NULL, dfns = NULL, method = \"direct\", em.control = NULL, optim.control = NULL, aux = NULL, sr.control = survreg.control(), integ.opts, hess.control = NULL, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"formula Survival model formula. left hand side Surv object specified flexsurvreg. may define various kinds censoring, described Surv. covariates right hand side formula placed location parameter every component-specific distribution. Covariates parameters component-specific distributions may supplied using anc argument. Alternatively, formula may list formulae, one component alternative event. may used specify different covariates location parameter different components. list formulae may also used indicate particular individuals, different events may observed different ways, different censoring mechanisms. list component specifies data censoring scheme mixture component. example, suppose studying people admitted hospital, competing states death hospital discharge hospital. time t know particular individual still alive, know whether still hospital, discharged. case, individual die hospital, death time right censored t. individual () discharged death, discharge time completely unknown, thus interval-censored (0,Inf). Therefore, need store different event time status variables data different alternative events. specified formula = list(\"discharge\" = Surv(t1di, t2di, type=\"interval2\"), \"death\" = Surv(t1de, status_de)) individual, (t1di, t2di) = (0, Inf) (t1de, status_de) = (t, 0). \"dot\" notation commonly used indicate \"remaining variables\" formula supported flexsurvmix. data Data frame containing variables mentioned formula, event anc. event Variable data specifies alternative events observed individual. individual's follow- right-censored, event otherwise unknown, variable must value NA. Ideally factor, since mixture components can easily identified results name instead number. already factor, coerced one. levels factor define required order components list arguments dists, anc, inits dfns. Alternatively, components list arguments named according levels event, components can arranged order. dists Vector specifying parametric distribution use component. distributions supported flexsurvreg. pformula Formula describing covariates include component membership proabilities multinomial logistic regression. first component treated baseline. \"dot\" notation commonly used indicate \"remaining variables\" formula supported. anc List component-specific lists, length equal number components. component-specific list list formulae representing covariate effects parameters distribution. covariates one component others, list containing one null formula location parameter supplied component covariates, e.g list(rate=~1) location parameter called rate. Covariates location parameter may also supplied instead formula. Supplying anc allows components others covariates location parameter. covariate location parameter provided formula, covariates parameters, null formula included location parameter anc, e.g list(rate=~1) partial_events List specifying factor levels event indicate knowledge individual experience particular events, may experience others. names list indicate codes indicate partial knowledge individuals. list component vector, must subset levels(event) defining events person corresponding event code may experience. example, suppose three alternative events called \"disease1\",\"disease2\" \"disease3\", individuals know experience \"disease2\", may experience two events. case must create new factor level, called, example \"disease1or3\", set value event \"disease1or3\" individuals. use \"partial_events\" argument tell flexsurvmix potential events individuals new factor level. partial_events = list(\"disease1or3\" = c(\"disease1\",\"disease3\")) initp Initial values component membership probabilities. default, assumed equal component. inits List component-specific vectors. component-specific vector contains initial values parameters component-specific model, supplied inits argument flexsurvreg. default, heuristic used obtain initial values, depends parametric distribution used, usually based empirical mean /variance survival times. fixedpars Indexes parameters fix initial values optimise. Arranged order: baseline mixing probabilities, covariates mixing probabilities, time--event parameters mixing component. Within mixing components, time--event parameters ordered way flexsurvreg. fixedpars=TRUE parameters fixed function simply calculates log-likelihood initial values. currently supported using EM algorithm. dfns List lists user-defined distribution functions, one mixture component. list component specified dfns argument flexsurvreg. method Method maximising likelihood. Either \"em\" EM algorithm, \"direct\" direct maximisation. em.control List settings control EM algorithm fitting. options currently available trace set 1 print parameter estimates iteration EM algorithm reltol convergence criterion. algorithm stops log likelihood changes relative amount less reltol. default optim, , sqrt(.Machine$double.eps). var.method method compute covariance matrix. \"louis\" method Louis (1982), \"direct\"direct numerical calculation Hessian log likelihood. optim.p.control list passed control argument optim M step component membership probability parameters. optimisation M step time--event parameters can controlled optim.control argument flexsurvmix. example, em.control = list(trace=1, reltol=1e-12). optim.control List options pass control argument optim, used method=\"direct\" M step time--event parameters method=\"em\". default, uses fnscale=10000 ndeps=rep(1e-06,p) p number parameters estimated, unless user specifies options explicitly. aux named list arguments pass custom distribution functions. used, example, flexsurvspline supply knot locations modelling scale (e.g. hazard odds). used fix parameters distribution --- use fixedpars . sr.control models use survreg find maximum likelihood estimates (Weibull, exponential, log-normal), list passed control argument survreg. integ.opts List named arguments pass integrate, custom density hazard provided without cumulative version. example, integ.opts = list(rel.tol=1e-12) hess.control List options control covariance matrix computation. Available options : numeric. TRUE numerical methods used compute Hessian models analytic Hessian available. models include Weibull (versions), exponential, Gompertz spline models hazard odds scale. default use analytic Hessian models. models, numerical methods always used compute Hessian, whether option set. tol.solve. tolerance used solve inverting Hessian (default .Machine$double.eps) tol.evalues accepted tolerance negative eigenvalues covariance matrix (default 1e-05). Hessian positive definite, thus invertible, maximum likelihood. Hessian computed optimisation convergence inverted, either converged result maximum likelihood (e.g. \"saddle point\"), numerical methods used obtain Hessian inaccurate. suspect Hessian computed wrongly enough invertible, wrongly enough nearest valid inverse inaccurate estimate covariance matrix, tolerance values can modified (reducing tol.solve increasing tol.evalues) allow inverse computed. ... Optional arguments general-purpose optimisation routine optim. example, BFGS optimisation algorithm default flexsurvreg, can changed, example method=\"Nelder-Mead\" can robust poor initial values. optimisation fails converge, consider normalising problem using, example, control=list(fnscale = 2500), example, replacing 2500 number order magnitude likelihood. 'false' convergence reported non-positive-definite Hessian, consider tightening tolerance criteria convergence. optimisation takes long time, intermediate steps can printed using trace argument control list. See optim details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"List objects containing information fitted model. important one res, data frame containing parameter estimates associated information.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"differs usual \"competing risks\" models, specify \"cause-specific hazards\" describing time competing event. time observed individual one competing events happens first. event happens first defined minimum times alternative events. flexsurvmix function fits mixture model data consisting single time event individual, indicator type event occurs individual. time event may observed censored, just flexsurvreg, type event may known unknown. typical application, follow set individuals experience event maximum follow-time reached, event type known time observed, event type unknown follow-ends time right-censored. model fitted maximum likelihood, either directly using expectation-maximisation (EM) algorithm, wrapping flexsurvreg compute likelihood implement E M steps. worked examples given package vignette multi-state modelling, can viewed running vignette(\"multistate\", package=\"flexsurv\").","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvmix.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible parametric mixture models for times to competing events — flexsurvmix","text":"Jackson, C. H. Tom, B. D. M. Kirwan, P. D. Mandal, S. Seaman, S. R. Kunzmann, K. Presanis, . M. De Angelis, D. (2022) comparison two frameworks multi-state modelling, applied outcomes hospital admissions COVID-19. Statistical Methods Medical Research 31(9) 1656-1674. Larson, M. G., & Dinse, G. E. (1985). mixture model regression analysis competing risks data. Journal Royal Statistical Society: Series C (Applied Statistics), 34(3), 201-211. Lau, B., Cole, S. R., & Gange, S. J. (2009). Competing risk regression models epidemiologic data. American Journal Epidemiology, 170(2), 244-256.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible parametric regression for time-to-event data — flexsurvreg","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Parametric modelling regression time--event data. Several built-distributions available, users may supply .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"","code":"flexsurvreg( formula, anc = NULL, data, weights, bhazard, rtrunc, subset, na.action, dist, inits, fixedpars = NULL, dfns = NULL, aux = NULL, cl = 0.95, integ.opts = NULL, sr.control = survreg.control(), hessian = TRUE, hess.control = NULL, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"formula formula expression conventional R linear modelling syntax. response must survival object returned Surv function, covariates given right-hand side. example, Surv(time, dead) ~ age + sex Surv objects type=\"right\",\"counting\", \"interval1\" \"interval2\" supported, corresponding right-censored, left-truncated interval-censored observations. covariates, specify 1 right hand side, example Surv(time, dead) ~ 1. right hand side specified . remaining variables included covariates. example, Surv(time, dead) ~ . corresponds Surv(time, dead) ~ age + sex data contains variables time, dead, age, sex. default, covariates placed ``location'' parameter distribution, typically \"scale\" \"rate\" parameter, linear model, log-linear model parameter must positive. gives accelerated failure time model proportional hazards model (see dist ) depending distribution parameterised. Covariates can placed (``ancillary'') parameters using name parameter ``function'' formula. example, Weibull model, following expresses scale parameter terms age treatment variable treat, shape parameter terms sex treatment. Surv(time, dead) ~ age + treat + shape(sex) + shape(treat) However, names ancillary parameters clash real functions might used formulae ((), factor()), functions work formula. safer way model covariates ancillary parameters anc argument flexsurvreg. survreg users also note function strata() ignored, covariates surrounded strata() applied location parameter. Likewise function frailty() handled. anc alternative safer way model covariates ancillary parameters, , parameters main location parameter distribution. named list formulae, name component giving parameter modelled. model can also defined : Surv(time, dead) ~ age + treat, anc = list(shape = ~ sex + treat) data data frame find variables supplied formula. given, variables working environment. weights Optional numeric variable giving weights individual data. fitted model defined maximising weighted sum individual-specific log-likelihoods. bhazard Optional variable giving expected hazards relative survival models. model described Nelson et al. (2007). bhazard contain vector values person data. people observed events, bhazard refers hazard observed event time. people whose event time left-censored interval-censored, bhazard contain probability dying end corresponding interval, conditionally alive start. people whose event time right-censored, value bhazard ignored need specified. bhazard supplied, parameter estimates returned flexsurvreg outputs returned summary.flexsurvreg describe parametric model relative survival. relative survival models, log-likelihood returned flexsurvreg partial log-likelihood, omits constant term defined sum cumulative hazards event censoring time individual. Hence constant must added full likelihood needed. rtrunc Optional variable giving individual-specific right-truncation times. Used analysing data \"retrospective ascertainment\". example, suppose want estimate distribution time onset disease death, observed cases known died current date. case, times onset death individuals data right-truncated current date minus onset date. Predicted survival times new cases can described un-truncated version fitted distribution. models can suffer weakly identifiable parameters badly-behaved likelihood functions, advised compare convergence different initial values supplying different inits arguments flexsurvreg. subset Vector integers logicals specifying subset observations used fit. na.action missing-data filter function, applied 'subset' argument used. Default options()$na.action. dist Typically, one strings first column following table, identifying built-distribution. table also identifies location parameters, whether covariates parameters represent proportional hazards (PH) accelerated failure time (AFT) model. accelerated failure time model, covariate speeds slows passage time. coefficient (presented log scale) log(2), doubling covariate value give half expected survival time. \"exponential\" \"lognormal\" can used aliases \"exp\" \"lnorm\", compatibility survreg. Alternatively, dist can list specifying custom distribution. See section ``Custom distributions'' construct list. flexible spline-based distributions can also fitted flexsurvspline. parameterisations built-distributions used built-distribution functions: dgengamma, dgengamma.orig, dgenf, dgenf.orig, dweibull, dgamma, dexp, dlnorm, dgompertz, respectively. functions base R used available, otherwise, provided package. package vignette \"Distributions reference\" lists survivor functions covariate effect parameterisations used built-distribution. Weibull, exponential log-normal distributions, flexsurvreg simply works calling survreg obtain maximum likelihood estimates, calling optim double-check convergence obtain covariance matrix flexsurvreg's preferred parameterisation. Weibull parameterisation different survreg, instead consistent dweibull. \"scale\" reported survreg equivalent 1/shape defined dweibull hence flexsurvreg. first coefficient (Intercept) reported survreg equivalent log(scale) dweibull flexsurvreg. Similarly exponential distribution, rate, rather mean, modelled covariates. object flexsurv.dists lists names built- distributions, parameters, location parameter, functions used transform parameter ranges real line, functions used generate initial values parameter estimation. inits optional numeric vector giving initial values unknown parameter. numbered order: baseline parameters (order appear distribution function, e.g. shape scale Weibull), covariate effects location parameter, covariate effects remaining parameters. order printed estimates fitted model. specified, default initial values chosen simple summary survival censoring times, example mean often used initialize scale parameters. See object flexsurv.dists exact methods used. likelihood surface may uneven, advised run optimisation starting various different initial values ensure convergence true global maximum. fixedpars Vector indices parameters whose values fixed initial values optimisation. indices ordered inits. example, stable generalized Gamma model two covariates, fix third three generalized gamma parameters (shape Q, see help GenGamma) second covariate, specify fixedpars = c(3, 5) dfns alternative way define custom survival distribution (see section ``Custom distributions'' ). list whose components may include \"d\", \"p\", \"h\", \"H\" containing probability density, cumulative distribution, hazard, cumulative hazard functions distribution. example, list(d=dllogis, p=pllogis). dfns used, custom dlist must still provided, dllogis pllogis need visible global environment. useful flexsurvreg called within functions environments distribution functions also defined dynamically. aux named list arguments pass custom distribution functions. used, example, flexsurvspline supply knot locations modelling scale (e.g. hazard odds). used fix parameters distribution --- use fixedpars . cl Width symmetric confidence intervals maximum likelihood estimates, default 0.95. integ.opts List named arguments pass integrate, custom density hazard provided without cumulative version. example, integ.opts = list(rel.tol=1e-12) sr.control models use survreg find maximum likelihood estimates (Weibull, exponential, log-normal), list passed control argument survreg. hessian Calculate covariances confidence intervals parameters. Defaults TRUE. hess.control List options control covariance matrix computation. Available options : numeric. TRUE numerical methods used compute Hessian models analytic Hessian available. models include Weibull (versions), exponential, Gompertz spline models hazard odds scale. default use analytic Hessian models. models, numerical methods always used compute Hessian, whether option set. tol.solve. tolerance used solve inverting Hessian (default .Machine$double.eps) tol.evalues accepted tolerance negative eigenvalues covariance matrix (default 1e-05). Hessian positive definite, thus invertible, maximum likelihood. Hessian computed optimisation convergence inverted, either converged result maximum likelihood (e.g. \"saddle point\"), numerical methods used obtain Hessian inaccurate. suspect Hessian computed wrongly enough invertible, wrongly enough nearest valid inverse inaccurate estimate covariance matrix, tolerance values can modified (reducing tol.solve increasing tol.evalues) allow inverse computed. ... Optional arguments general-purpose optimisation routine optim. example, BFGS optimisation algorithm default flexsurvreg, can changed, example method=\"Nelder-Mead\" can robust poor initial values. optimisation fails converge, consider normalising problem using, example, control=list(fnscale = 2500), example, replacing 2500 number order magnitude likelihood. 'false' convergence reported non-positive-definite Hessian, consider tightening tolerance criteria convergence. optimisation takes long time, intermediate steps can printed using trace argument control list. See optim details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"list class \"flexsurvreg\" containing information fitted model. Components interest users may include: call copy function call, use post-processing. dlist List defining survival distribution used. res Matrix maximum likelihood estimates confidence limits, parameters natural scales. res.t Matrix maximum likelihood estimates confidence limits, parameters transformed real line (using log transform built- models necessary). coef, vcov confint methods flexsurvreg objects work scale. coefficients transformed maximum likelihood estimates, res.t. Calling coef() flexsurvreg object simply returns component. loglik Log-likelihood. differ Stata, sum log uncensored survival times added log-likelihood survival models, remove dependency time scale. relative survival models specified bhazard, partial log-likelihood omits constant term defined sum cumulative hazards event censoring times. logliki Vector individual contributions log-likelihood AIC Akaike's information criterion (-2*log likelihood + 2*number estimated parameters) cov Covariance matrix parameters, real-line scale (e.g. log scale), can extracted vcov. data Data used model fit. extract standard R formats, use use model.frame.flexsurvreg model.matrix.flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Parameters estimated maximum likelihood using algorithms available standard R optim function. Parameters defined positive estimated log scale. Confidence intervals estimated Hessian maximum, transformed back original scale parameters. usage flexsurvreg intended similar survreg survival package.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"custom-distributions","dir":"Reference","previous_headings":"","what":"Custom distributions","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"flexsurvreg intended easy extend handle new distributions. define new distribution use flexsurvreg, construct list following elements: \"name\" string naming distribution. called \"dist\", example, must visible working environment, least, either ) function called ddist defines probability density, b) function called hdist defines hazard. Ideally, case ) also function called pdist defines probability distribution cumulative density, case b) function called Hdist defining cumulative hazard. additional functions provided, flexsurv attempts automatically create numerically integrating density hazard function. However, model fitting much slower, may even work , analytic versions functions available. functions must accept vector arguments (representing different times, alternative values parameter) return results vector. function Vectorize may helpful : see example . functions may add-package (see example) may user-written. user-written must defined global environment, supplied explicitly dfns argument flexsurvreg. latter may useful functions created dynamically (source flexsurvspline) thus visible R's scoping rules. Arguments parameters must named conventional way -- example x first argument density function hazard, dnorm(x, ...) q first argument probability function. Density functions also argument log, parameters, TRUE, computes log density, using numerically stable additive formula possible. Additional functions names beginning \"DLd\" \"DLS\" may defined calculate derivatives log density log survival probability, respect parameters distribution. parameters expressed real line, example log transformation defined positive. first argument must named t, representing time, remaining arguments must named parameters density function. function must return matrix rows corresponding times, columns corresponding parameters distribution. derivatives used, available, speed model fitting optim. \"pars\" Vector strings naming parameters distribution. must names arguments density probability functions. \"location\" Name main parameter governing mean distribution. default parameter covariates placed formula supplied flexsurvreg. \"transforms\" List R functions transform range values taken parameter onto real line. example, c(log, log) distribution two positive parameters. \"inv.transforms\" List R functions defining corresponding inverse transformations. Note must lists, even single parameter distributions supplied , e.g. c(exp) list(exp). \"inits\" function observed survival times t (including right-censoring times, using halfway point interval-censored times) returns vector reasonable initial values maximum likelihood estimation parameter. example, function(t){ c(1, mean(t)) } always initialize first two parameters 1, second (scale parameter, instance) mean t. example, suppose want use extreme value survival distribution. available CRAN package eha, provides conventionally-defined density probability functions called eha::dEV eha::pEV. See Examples custom list case, subsequent command fit model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Jackson, C. (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08 Cox, C. (2008) generalized \\(F\\) distribution: umbrella parametric survival analysis. Statistics Medicine 27:4301-4312. Cox, C., Chu, H., Schneider, M. F. Muñoz, . (2007) Parametric survival analysis taxonomy hazard functions generalized gamma distribution. Statistics Medicine 26:4252-4374 Jackson, C. H. Sharples, L. D. Thompson, S. G. (2010) Survival models health economic evaluations: balancing fit parsimony improve prediction. International Journal Biostatistics 6(1):Article 34. Nelson, C. P., Lambert, P. C., Squire, . B., & Jones, D. R. (2007). Flexible parametric models relative survival, application coronary heart disease. Statistics medicine, 26(30), 5486-5498.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Flexible parametric regression for time-to-event data — flexsurvreg","text":"","code":"## Compare generalized gamma fit with Weibull fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, dist=\"gengamma\") fitg #> Call: #> flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, #> dist = \"gengamma\") #> #> Estimates: #> est L95% U95% se #> mu 6.426 4.984 7.868 0.736 #> sigma 1.426 0.888 2.292 0.345 #> Q -0.766 -3.340 1.807 1.313 #> #> N = 26, Events: 12, Censored: 14 #> Total time at risk: 15588 #> Log-likelihood = -96.94907, df = 3 #> AIC = 199.8981 #> fitw <- flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, dist=\"weibull\") fitw #> Call: #> flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, #> dist = \"weibull\") #> #> Estimates: #> est L95% U95% se #> shape 1.108 0.674 1.822 0.281 #> scale 1225.419 690.421 2174.979 358.714 #> #> N = 26, Events: 12, Censored: 14 #> Total time at risk: 15588 #> Log-likelihood = -97.9539, df = 2 #> AIC = 199.9078 #> plot(fitg) lines(fitw, col=\"blue\", lwd.ci=1, lty.ci=1) ## Identical AIC, probably not enough data in this simple example for a ## very flexible model to be worthwhile. ## Custom distribution ## make \"dEV\" and \"pEV\" from eha package (if installed) ## available to the working environment if (require(\"eha\")) { custom.ev <- list(name=\"EV\", pars=c(\"shape\",\"scale\"), location=\"scale\", transforms=c(log, log), inv.transforms=c(exp, exp), inits=function(t){ c(1, median(t)) }) fitev <- flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, dist=custom.ev) fitev lines(fitev, col=\"purple\", col.ci=\"purple\") } #> Loading required package: eha #> #> Attaching package: 'eha' #> The following objects are masked from 'package:flexsurv': #> #> Hgompertz, Hllogis, Hlnorm, Hweibull, dgompertz, dllogis, #> hgompertz, hllogis, hlnorm, hweibull, pgompertz, pllogis, #> qgompertz, qllogis, rgompertz, rllogis #> Forming integrated rmst function... #> Forming integrated mean function... ## Custom distribution: supply the hazard function only hexp2 <- function(x, rate=1){ rate } # exponential distribution hexp2 <- Vectorize(hexp2) custom.exp2 <- list(name=\"exp2\", pars=c(\"rate\"), location=\"rate\", transforms=c(log), inv.transforms=c(exp), inits=function(t)1/mean(t)) flexsurvreg(Surv(futime, fustat) ~ 1, data = ovarian, dist=custom.exp2) #> Error in form.dp(dlist, dfns, integ.opts): Neither density function \"dexp2\" nor hazard function \"hexp2\" found flexsurvreg(Surv(futime, fustat) ~ 1, data = ovarian, dist=\"exp\") #> Call: #> flexsurvreg(formula = Surv(futime, fustat) ~ 1, data = ovarian, #> dist = \"exp\") #> #> Estimates: #> est L95% U95% se #> rate 0.000770 0.000437 0.001356 0.000222 #> #> N = 26, Events: 12, Censored: 14 #> Total time at risk: 15588 #> Log-likelihood = -98.0322, df = 1 #> AIC = 198.0644 #> ## should give same answer"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"function estimates distribution time initial final event, situations individuals observed experienced events certain time, thus right-truncated time. time initial event provides information time initial final event, given truncated observation scheme, initial events assumed occur exponential growth rate.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"","code":"flexsurvrtrunc( t, tinit, rtrunc, tmax, data = NULL, method = \"joint\", dist, theta = NULL, fixed.theta = TRUE, inits = NULL, fixedpars = NULL, dfns = NULL, integ.opts = NULL, cl = 0.95, optim_control = list() )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"t Vector time differences initial final event set individuals. tinit Absolute time initial event individual. rtrunc Individual-specific right truncation points scale t, individual's survival time t observed greater corresponding element rtrunc. used method=\"joint\". method=\"final\", right-truncation implicit. tmax Maximum possible time initial final events observed. used method=\"joint\", ignored method=\"final\". data Data frame containing t, rtrunc tinit. method \"joint\" \"joint-conditional\" method used. \"final\" \"conditional--final\" method used. \"conditional--initial\" method can implemented using flexsurvreg rtrunc argument. methods described Seaman et al. (2020). dist Typically, one strings first column following table, identifying built-distribution. table also identifies location parameters, whether covariates parameters represent proportional hazards (PH) accelerated failure time (AFT) model. accelerated failure time model, covariate speeds slows passage time. coefficient (presented log scale) log(2), doubling covariate value give half expected survival time. \"exponential\" \"lognormal\" can used aliases \"exp\" \"lnorm\", compatibility survreg. Alternatively, dist can list specifying custom distribution. See section ``Custom distributions'' construct list. flexible spline-based distributions can also fitted flexsurvspline. parameterisations built-distributions used built-distribution functions: dgengamma, dgengamma.orig, dgenf, dgenf.orig, dweibull, dgamma, dexp, dlnorm, dgompertz, respectively. functions base R used available, otherwise, provided package. package vignette \"Distributions reference\" lists survivor functions covariate effect parameterisations used built-distribution. Weibull, exponential log-normal distributions, flexsurvreg simply works calling survreg obtain maximum likelihood estimates, calling optim double-check convergence obtain covariance matrix flexsurvreg's preferred parameterisation. Weibull parameterisation different survreg, instead consistent dweibull. \"scale\" reported survreg equivalent 1/shape defined dweibull hence flexsurvreg. first coefficient (Intercept) reported survreg equivalent log(scale) dweibull flexsurvreg. Similarly exponential distribution, rate, rather mean, modelled covariates. object flexsurv.dists lists names built- distributions, parameters, location parameter, functions used transform parameter ranges real line, functions used generate initial values parameter estimation. theta Initial value (fixed value) exponential growth rate theta. Defaults 1. fixed.theta theta fixed initial value estimated. applies method=\"joint\". method=\"final\", theta must fixed. inits Initial values parameters parametric survival distributon. supplied, heuristic used. done flexsurvreg. fixedpars Integer indices parameters survival distribution fixed values supplied inits. length inits. dfns alternative way define custom survival distribution (see section ``Custom distributions'' ). list whose components may include \"d\", \"p\", \"h\", \"H\" containing probability density, cumulative distribution, hazard, cumulative hazard functions distribution. example, list(d=dllogis, p=pllogis). dfns used, custom dlist must still provided, dllogis pllogis need visible global environment. useful flexsurvreg called within functions environments distribution functions also defined dynamically. integ.opts List named arguments pass integrate, custom density hazard provided without cumulative version. example, integ.opts = list(rel.tol=1e-12) cl Width symmetric confidence intervals maximum likelihood estimates, default 0.95. optim_control List supply control argument optim control likelihood maximisation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"Covariates currently supported. Note flexsurvreg, rtrunc argument, can fit models similar kind data, models ignore information provided time initial event. nonparametric estimator survival right-truncation also provided survrtrunc. See Seaman et al. (2020) full comparison alternative models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"Seaman, S., Presanis, . Jackson, C. (2020) Estimating Time--Event Distribution Right-Truncated Data Epidemic: Review Methods","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvrtrunc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Flexible parametric models for right-truncated, uncensored data defined by times of initial and final events. — flexsurvrtrunc","text":"","code":"set.seed(1) ## simulate time to initial event X <- rexp(1000, 0.2) ## simulate time between initial and final event T <- rgamma(1000, 2, 10) ## right-truncate to keep only those with final event time ## before tmax tmax <- 40 obs <- X + T < tmax rtrunc <- tmax - X dat <- data.frame(X, T, rtrunc)[obs,] flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", theta = 0.2) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.93 1.78 2.1 0.659 0.0414 #> rate rate 9.22 8.39 10.1 2.222 0.0483 #> theta theta 1.22 NA NA 0.200 NA #> #> Log-likelihood = -7846.25, df = 2 #> AIC = 15696.5 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2, fixed.theta=FALSE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", theta = 0.2, fixed.theta = FALSE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.932 1.781 2.095 0.658 0.04144 #> rate rate 9.419 8.586 10.334 2.243 0.04728 #> theta theta 0.824 0.814 0.834 -0.193 0.00621 #> #> Log-likelihood = -1949.284, df = 3 #> AIC = 3904.568 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2, inits=c(1, 8)) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", theta = 0.2, inits = c(1, 8)) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.93 1.78 2.1 0.659 0.0414 #> rate rate 9.22 8.39 10.1 2.222 0.0483 #> theta theta 1.22 NA NA 0.200 NA #> #> Log-likelihood = -7846.25, df = 2 #> AIC = 15696.5 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", theta=0.2, method=\"final\") #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, method = \"final\", dist = \"gamma\", theta = 0.2) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.94 1.79 2.11 0.663 0.0415 #> rate rate 9.05 8.22 9.97 2.203 0.0493 #> theta theta 1.22 NA NA 0.200 NA #> #> Log-likelihood = 715.5208, df = 2 #> AIC = -1427.042 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gamma\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gamma\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.93 1.78 2.09 0.658 0.0415 #> rate rate 8.41 7.58 9.33 2.130 0.0529 #> theta theta 2.72 NA NA 1.000 NA #> #> Log-likelihood = -33947.91, df = 2 #> AIC = 67899.82 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"weibull\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"weibull\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 1.501 1.430 1.577 0.406 0.0249 #> scale scale 0.252 0.241 0.264 -1.378 0.0240 #> theta theta 2.718 NA NA 1.000 NA #> #> Log-likelihood = -33950.21, df = 2 #> AIC = 67904.42 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"lnorm\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"lnorm\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> meanlog meanlog -1.694 -1.758 -1.63 -1.694 0.0325 #> sdlog sdlog 0.893 0.848 0.94 -0.113 0.0264 #> theta theta 2.718 NA NA 1.000 NA #> #> Log-likelihood = -33991.77, df = 2 #> AIC = 67987.55 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gengamma\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gengamma\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> mu mu -1.446 -1.520 -1.371 -1.446 0.0379 #> sigma sigma 0.702 0.657 0.750 -0.354 0.0335 #> Q Q 0.798 0.631 0.964 0.798 0.0851 #> theta theta 2.718 NA NA 1.000 NA #> #> Log-likelihood = -33947.48, df = 3 #> AIC = 67900.97 #> flexsurvrtrunc(t=T, rtrunc=rtrunc, tinit=X, tmax=40, data=dat, dist=\"gompertz\", fixed.theta=TRUE) #> Call: #> flexsurvrtrunc(t = T, tinit = X, rtrunc = rtrunc, tmax = 40, #> data = dat, dist = \"gompertz\", fixed.theta = TRUE) #> #> Estimates: #> pars est lcl ucl estlog selog #> shape shape 2.58 2.18 2.97 2.576 0.2009 #> rate rate 2.63 2.37 2.92 0.968 0.0532 #> theta theta 2.72 NA NA 1.000 NA #> #> Log-likelihood = -33990.12, df = 2 #> AIC = 67984.25 #>"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":null,"dir":"Reference","previous_headings":"","what":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"Flexible parametric modelling time--event data using spline model Royston Parmar (2002).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"","code":"flexsurvspline( formula, data, weights, bhazard, rtrunc, subset, k = 0, knots = NULL, bknots = NULL, scale = \"hazard\", timescale = \"log\", spline = \"rp\", ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"formula formula expression conventional R linear modelling syntax. response must survival object returned Surv function, covariates given right-hand side. example, Surv(time, dead) ~ age + sex specifies model log cumulative hazard (default, see scale) linear function covariates age sex. covariates, specify 1 right hand side, example Surv(time, dead) ~ 1. Time-varying covariate effects can specified using method described flexsurvreg placing covariates ancillary parameters. ancillary parameters named gamma1, ..., gammar r number knots k plus one (``degrees freedom'' defined Royston Parmar). default Weibull model, just one ancillary parameter gamma1. Therefore model one internal spline knot, equivalents Weibull shape scale parameters, higher-order term gamma2, vary age sex, can specified : Surv(time, dead) ~ age + sex + gamma1(age) + gamma1(sex) alternatively (safely, see flexsurvreg) Surv(time, dead) ~ age + sex, anc=list(gamma1=~age + sex) Surv objects type=\"right\",\"counting\", \"interval1\" \"interval2\" supported, corresponding right-censored, left-truncated interval-censored observations. data data frame find variables supplied formula. given, variables working environment. weights Optional variable giving case weights. bhazard Optional variable giving expected hazards relative survival models. rtrunc Optional variable giving individual right-truncation times (see flexsurvreg). Note models can suffer weakly identifiable parameters badly-behaved likelihood functions, advised compare convergence different initial values supplying different inits arguments flexsurvspline. subset Vector integers logicals specifying subset observations used fit. k Number knots spline. default k=0 gives Weibull, log-logistic lognormal model, \"scale\" \"hazard\", \"odds\" \"normal\" respectively. k equivalent df-1 notation stpm Stata. knots chosen equally-spaced quantiles log uncensored survival times, example, median one knot, 33% 67% quantiles log time (time, see \"timescale\") two knots. override default knot placement, specify knots instead. knots Locations knots axis log time (time, see \"timescale\"). specified, knot locations chosen described k . Either k knots must specified. specified, knots overrides k. bknots Locations boundary knots, axis log time (time, see \"timescale\"). supplied, chosen minimum maximum log death time. scale \"hazard\", log cumulative hazard modelled spline function. \"odds\", log cumulative odds modelled spline function. \"normal\", \\(-\\Phi^{-1}(S(t))\\) modelled spline function, \\(\\Phi^{-1}()\\) inverse normal distribution function qnorm. timescale \"log\" (default) log cumulative hazard (alternative) modelled spline function log time. \"identity\", modelled spline function time, however model satisfy desirable property cumulative hazard (alternative) approach 0 time zero. spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal. ... arguments passed flexsurvreg, example, anc, inits, fixedpars, weights, subset, na.action, options control optimisation. See flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"list class \"flexsurvreg\" elements described flexsurvreg, including extra components describing spline model. See particular: k Number knots. knots Location knots log time axis. scale scale model, hazard, odds normal. res Matrix maximum likelihood estimates confidence limits. Spline coefficients labelled \"gamma...\", covariate effects labelled names covariates. Coefficients gamma1,gamma2,... equivalent s0,s1,... Stata streg, gamma0 equivalent xb constant term. reproduce results, use noorthog option Stata, since orthogonalisation performed spline basis . Weibull model, example, gamma0,gamma1 -shape*log(scale), shape respectively dweibull flexsurvreg notation, (-Intercept/scale, 1/scale) survreg notation. log-logistic model shape scale b (eha::dllogis eha package), 1/b^equivalent exp(gamma0), equivalent gamma1. log-normal model log-scale mean mu standard deviation sigma, -mu/sigma equivalent gamma0 1/sigma equivalent gamma1. loglik maximised log-likelihood. differ Stata, sum log uncensored survival times added log-likelihood survival models, remove dependency time scale.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"function works wrapper around flexsurvreg dynamically constructing custom distribution using dsurvspline, psurvspline unroll.function. spline-based survival model Royston Parmar (2002), transformation \\(g(S(t,z))\\) survival function modelled natural cubic spline function log time \\(x = \\log(t)\\) plus linear effects covariates \\(z\\). $$g(S(t,z)) = s(x, \\bm{\\gamma}) + \\bm{\\beta}^T \\mathbf{z}$$ proportional hazards model (scale=\"hazard\") defines \\(g(S(t,\\mathbf{z})) = \\log(-\\log(S(t,\\mathbf{z}))) = \\log(H(t,\\mathbf{z}))\\), log cumulative hazard. proportional odds model (scale=\"odds\") defines \\(g(S(t,\\mathbf{z})) \\)\\( = \\log(S(t,\\mathbf{z})^{-1} - 1)\\), log cumulative odds. probit model (scale=\"normal\") defines \\(g(S(t,\\mathbf{z})) = \\)\\( -\\Phi^{-1}(S(t,\\mathbf{z}))\\), \\(\\Phi^{-1}()\\) inverse normal distribution function qnorm. knots, spline reduces linear function, models equivalent Weibull, log-logistic lognormal models respectively. spline coefficients \\(\\gamma_j: j=1, 2 \\ldots \\), called \"ancillary parameters\" , may also modelled linear functions covariates \\(\\mathbf{z}\\), $$\\gamma_j(\\mathbf{z}) = \\gamma_{j0} + \\gamma_{j1}z_1 + \\gamma_{j2}z_2 + ... $$ giving model effects covariates arbitrarily flexible functions time: non-proportional hazards odds model. Natural cubic splines cubic splines constrained linear beyond boundary knots \\(k_{min},k_{max}\\). spline function defined $$s(x,\\bm{\\gamma}) = \\gamma_0 + \\gamma_1 x + \\gamma_2 v_1(x) + \\ldots + $$$$ \\gamma_{m+1} v_m(x)$$ \\(v_j(x)\\) \\(j\\)th basis function $$v_j(x) = (x - k_j)^3_+ - \\lambda_j(x - k_{min})^3_+ - (1 - $$$$ \\lambda_j) (x - k_{max})^3_+$$ $$\\lambda_j = \\frac{k_{max} - k_j}{k_{max} - k_{min}}$$ \\((x - )_+ = max(0, x - )\\).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Wang W, Yan J (2021). Shape-Restricted Regression Splines R Package splines2. Journal Data Science, 19(3), 498-517. Jackson, C. (2016). flexsurv: Platform Parametric Survival Modeling R. Journal Statistical Software, 70(8), 1-33. doi:10.18637/jss.v070.i08","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/flexsurvspline.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Flexible survival regression using the Royston/Parmar spline model. — flexsurvspline","text":"","code":"## Best-fitting model to breast cancer data from Royston and Parmar (2002) ## One internal knot (2 df) and cumulative odds scale spl <- flexsurvspline(Surv(recyrs, censrec) ~ group, data=bc, k=1, scale=\"odds\") ## Fitted survival plot(spl, lwd=3, ci=FALSE) ## Simple Weibull model fits much less well splw <- flexsurvspline(Surv(recyrs, censrec) ~ group, data=bc, k=0, scale=\"hazard\") lines(splw, col=\"blue\", ci=FALSE) ## Alternative way of fitting the Weibull if (FALSE) { splw2 <- flexsurvreg(Surv(recyrs, censrec) ~ group, data=bc, dist=\"weibull\") }"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"Constructor mixture multi-state model based flexsurvmix","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"","code":"fmixmsm(...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"... Named arguments. argument fitted model returned flexsurvmix. name argument names starting state model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Constructor for a mixture multi-state model based on flexsurvmix — fmixmsm","text":"list flexsurvmix objects, following attribute(s): pathways list potential pathways absorption, models without cycles. models cycles element has_cycle=TRUE, plus pathways discovered function found cycle gave .","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Construct a multi-state model from a set of parametric survival models — fmsm","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"Construct multi-state model set parametric survival models","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"","code":"fmsm(..., trans)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"... Objects returned flexsurvreg flexsurvspline representing fitted survival models. trans matrix integers specifying models correspond transitions. \\(r,s\\) entry \\(\\)th argument specified ... model state \\(r\\) state \\(s\\) transition. entry NA transition disallowed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Construct a multi-state model from a set of parametric survival models — fmsm","text":"list containing objects given ..., attributes \"trans\" \"statenames\" defining transition structure matrix state names, list components named describe transitions correspond . arguments ... named, used define transition names, otherwise default names chosen based state names.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized F distribution — GenF","title":"Generalized F distribution — GenF","text":"Density, distribution function, hazards, quantile function random generation generalized F distribution, using reparameterisation Prentice (1975).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized F distribution — GenF","text":"","code":"dgenf(x, mu = 0, sigma = 1, Q, P, log = FALSE) pgenf(q, mu = 0, sigma = 1, Q, P, lower.tail = TRUE, log.p = FALSE) Hgenf(x, mu = 0, sigma = 1, Q, P) hgenf(x, mu = 0, sigma = 1, Q, P) qgenf(p, mu = 0, sigma = 1, Q, P, lower.tail = TRUE, log.p = FALSE) rgenf(n, mu = 0, sigma = 1, Q, P)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized F distribution — GenF","text":"x, q Vector quantiles. mu Vector location parameters. sigma Vector scale parameters. Q Vector first shape parameters. P Vector second shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized F distribution — GenF","text":"dgenf gives density, pgenf gives distribution function, qgenf gives quantile function, rgenf generates random deviates, Hgenf retuns cumulative hazard hgenf hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized F distribution — GenF","text":"\\(y \\sim F(2s_1, 2s_2)\\), \\(w = \\)\\( \\log(y)\\) \\(x = \\exp(w\\sigma + \\mu)\\) original generalized F distribution location parameter \\(\\mu\\), scale parameter \\(\\sigma>0\\) shape parameters \\(s_1,s_2\\). stable version described Prentice (1975), \\(s_1,s_2\\) replaced shape parameters \\(Q,P\\), \\(P>0\\), $$s_1 = 2(Q^2 + 2P + Q\\delta)^{-1}, \\quad s_2 = 2(Q^2 + 2P - Q\\delta)^{-1}$$ equivalently $$Q = \\left(\\frac{1}{s_1} - \\frac{1}{s_2}\\right)\\left(\\frac{1}{s_1} + \\frac{1}{s_2}\\right)^{-1/2}, \\quad P = \\frac{2}{s_1 + s_2} $$ Define \\(\\delta = (Q^2 + 2P)^{1/2}\\), \\(w = (\\log(x) - \\mu)\\delta /\\sigma\\), probability density function \\(x\\) $$ f(x) = \\frac{\\delta (s_1/s_2)^{s_1} e^{s_1 w}}{\\sigma x (1 + s_1 e^w/s_2) ^ {(s_1 + s_2)} B(s_1, s_2)} $$ original parameterisation available package dgenf.orig, sake completion / compatibility. definitions, dgenf(x, mu=mu, sigma=sigma, Q=Q, P=P) = dgenf.orig(x, mu=mu, sigma=sigma/delta, s1=s1, s2=s2) generalized F distribution P=0 equivalent generalized gamma distribution dgengamma, dgenf(x, mu, sigma, Q, P=0) equals dgengamma(x, mu, sigma, Q). generalized gamma reduces several common distributions, described GenGamma help page. generalized F distribution includes log-logistic distribution (see eha::dllogis) special case: dgenf(x, mu=mu, sigma=sigma, Q=0, P=1) = eha::dllogis(x, shape=sqrt(2)/sigma, scale=exp(mu)) range hazard trajectories available distribution discussed detail Cox (2008). Jackson et al. (2010) give application modelling oral cancer survival use health economic evaluation screening.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Generalized F distribution — GenF","text":"parameters Q P usually called \\(q\\) \\(p\\) literature - made upper-case R functions avoid clashing conventional arguments q probability function p quantile function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized F distribution — GenF","text":"R. L. Prentice (1975). Discrimination among parametric models. Biometrika 62(3):607-614. Cox, C. (2008). generalized \\(F\\) distribution: umbrella parametric survival analysis. Statistics Medicine 27:4301-4312. Jackson, C. H. Sharples, L. D. Thompson, S. G. (2010). Survival models health economic evaluations: balancing fit parsimony improve prediction. International Journal Biostatistics 6(1):Article 34.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized F distribution — GenF","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized F distribution (original parameterisation) — GenF.orig","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"Density, distribution function, quantile function random generation generalized F distribution, using less flexible original parameterisation described Prentice (1975).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"","code":"dgenf.orig(x, mu = 0, sigma = 1, s1, s2, log = FALSE) pgenf.orig(q, mu = 0, sigma = 1, s1, s2, lower.tail = TRUE, log.p = FALSE) Hgenf.orig(x, mu = 0, sigma = 1, s1, s2) hgenf.orig(x, mu = 0, sigma = 1, s1, s2) qgenf.orig(p, mu = 0, sigma = 1, s1, s2, lower.tail = TRUE, log.p = FALSE) rgenf.orig(n, mu = 0, sigma = 1, s1, s2)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"x, q vector quantiles. mu Vector location parameters. sigma Vector scale parameters. s1 Vector first F shape parameters. s2 vector second F shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"dgenf.orig gives density, pgenf.orig gives distribution function, qgenf.orig gives quantile function, rgenf.orig generates random deviates, Hgenf.orig retuns cumulative hazard hgenf.orig hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"\\(y \\sim F(2s_1, 2s_2)\\), \\(w = \\log(y)\\) \\(x = \\exp(w\\sigma + \\mu)\\) original generalized F distribution location parameter \\(\\mu\\), scale parameter \\(\\sigma>0\\) shape parameters \\(s_1>0,s_2>0\\). probability density function \\(x\\) $$f(x | \\mu, \\sigma, s_1, s_2) = \\frac{(s_1/s_2)^{s_1} e^{s_1 w}}{\\sigma x (1 + s_1 e^w/s_2) ^ {(s_1 + s_2)} B(s_1, s_2)}$$ \\(w = (\\log(x) - \\mu)/\\sigma\\), \\(B(s_1,s_2) = \\Gamma(s_1)\\Gamma(s_2)/\\Gamma(s_1+s_2)\\) beta function. \\(s_2 \\rightarrow \\infty\\), distribution \\(x\\) tends towards original generalized gamma distribution following parameters: dgengamma.orig(x, shape=1/sigma, scale=exp(mu) / s1^sigma, k=s1) See GenGamma.orig includes several common distributions special cases. alternative parameterisation generalized F distribution, originating Prentice (1975) given package GenF, preferred statistical modelling, since stable \\(s_1\\) tends infinity, includes new class distributions negative first shape parameter. original provided sake completion compatibility.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"R. L. Prentice (1975). Discrimination among parametric models. Biometrika 62(3):607-614.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenF.orig.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized F distribution (original parameterisation) — GenF.orig","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized gamma distribution — GenGamma","title":"Generalized gamma distribution — GenGamma","text":"Density, distribution function, hazards, quantile function random generation generalized gamma distribution, using parameterisation originating Prentice (1974). Also known (generalized) log-gamma distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized gamma distribution — GenGamma","text":"","code":"dgengamma(x, mu = 0, sigma = 1, Q, log = FALSE) pgengamma(q, mu = 0, sigma = 1, Q, lower.tail = TRUE, log.p = FALSE) Hgengamma(x, mu = 0, sigma = 1, Q) hgengamma(x, mu = 0, sigma = 1, Q) qgengamma(p, mu = 0, sigma = 1, Q, lower.tail = TRUE, log.p = FALSE) rgengamma(n, mu = 0, sigma = 1, Q)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized gamma distribution — GenGamma","text":"x, q vector quantiles. mu Vector ``location'' parameters. sigma Vector ``scale'' parameters. Note inconsistent meanings term ``scale'' - parameter analogous (log-scale) standard deviation log-normal distribution, ``sdlog'' dlnorm, rather ``scale'' parameter gamma distribution dgamma. Constrained positive. Q Vector shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized gamma distribution — GenGamma","text":"dgengamma gives density, pgengamma gives distribution function, qgengamma gives quantile function, rgengamma generates random deviates, Hgengamma retuns cumulative hazard hgengamma hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized gamma distribution — GenGamma","text":"\\(\\gamma \\sim Gamma(Q^{-2}, 1)\\) , \\(w = log(Q^2 \\gamma) / Q\\), \\(x = \\exp(\\mu + \\sigma w)\\) follows generalized gamma distribution probability density function $$f(x | \\mu, \\sigma, Q) = \\frac{|Q|(Q^{-2})^{Q^{-2}}}{\\sigma x \\Gamma(Q^{-2})} \\exp(Q^{-2}(Qw - \\exp(Qw)))$$ parameterisation preferred original parameterisation generalized gamma Stacy (1962) since numerically stable near \\(Q=0\\) (log-normal distribution), allows \\(Q<=0\\). original available package dgengamma.orig, sake completion compatibility software - implicitly restricted Q>0 (k>0 original notation). parameters dgengamma dgengamma.orig related follows. dgengamma.orig(x, shape=shape, scale=scale, k=k) = dgengamma(x, mu=log(scale) + log(k)/shape, sigma=1/(shape*sqrt(k)), Q=1/sqrt(k)) generalized gamma distribution simplifies gamma, log-normal Weibull distributions following parameterisations: properties generalized gamma applications survival analysis discussed detail Cox (2007). generalized F distribution GenF extends generalized gamma four parameters.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized gamma distribution — GenGamma","text":"Prentice, R. L. (1974). log gamma model maximum likelihood estimation. Biometrika 61(3):539-544. Farewell, V. T. Prentice, R. L. (1977). study distributional shape life testing. Technometrics 19(1):69-75. Lawless, J. F. (1980). Inference generalized gamma log gamma distributions. Technometrics 22(3):409-419. Cox, C., Chu, H., Schneider, M. F. Muñoz, . (2007). Parametric survival analysis taxonomy hazard functions generalized gamma distribution. Statistics Medicine 26:4252-4374 Stacy, E. W. (1962). generalization gamma distribution. Annals Mathematical Statistics 33:1187-92","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized gamma distribution — GenGamma","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":null,"dir":"Reference","previous_headings":"","what":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"Density, distribution function, hazards, quantile function random generation generalized gamma distribution, using original parameterisation Stacy (1962).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"","code":"dgengamma.orig(x, shape, scale = 1, k, log = FALSE) pgengamma.orig(q, shape, scale = 1, k, lower.tail = TRUE, log.p = FALSE) Hgengamma.orig(x, shape, scale = 1, k) hgengamma.orig(x, shape, scale = 1, k) qgengamma.orig(p, shape, scale = 1, k, lower.tail = TRUE, log.p = FALSE) rgengamma.orig(n, shape, scale = 1, k)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"x, q vector quantiles. shape vector ``Weibull'' shape parameters. scale vector scale parameters. k vector ``Gamma'' shape parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"dgengamma.orig gives density, pgengamma.orig gives distribution function, qgengamma.orig gives quantile function, rgengamma.orig generates random deviates, Hgengamma.orig retuns cumulative hazard hgengamma.orig hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"\\(w \\sim Gamma(k,1)\\), \\(x = \\exp(w/shape + \\log(scale))\\) follows original generalised gamma distribution parameterisation given (Stacy 1962). Defining shape\\(=b>0\\), scale\\(=>0\\), \\(x\\) probability density $$f(x | , b, k) = \\frac{b}{\\Gamma(k)} \\frac{x^{bk - 1}}{^{bk}} $$$$ \\exp(-(x/)^b)$$ original generalized gamma distribution simplifies gamma, exponential Weibull distributions following parameterisations: Also k tends infinity, tends log normal (dlnorm) following parameters (Lawless, 1980): dlnorm(x, meanlog=log(scale) + log(k)/shape, sdlog=1/(shape*sqrt(k))) stable behaviour distribution tends log-normal, alternative parameterisation developed Prentice (1974). given dgengamma, now preferred statistical modelling. also flexible, including new class distributions negative shape k. generalized F distribution GenF.orig, similar alternative parameterisation GenF, extend generalized gamma four parameters.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"Stacy, E. W. (1962). generalization gamma distribution. Annals Mathematical Statistics 33:1187-92. Prentice, R. L. (1974). log gamma model maximum likelihood estimation. Biometrika 61(3):539-544. Lawless, J. F. (1980). Inference generalized gamma log gamma distributions. Technometrics 22(3):409-419.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/GenGamma.orig.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generalized gamma distribution (original parameterisation) — GenGamma.orig","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/get_basepars.html","id":null,"dir":"Reference","previous_headings":"","what":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","title":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","text":"Evaluate baseline time--event distribution parameters given covariate values flexsurvmix model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/get_basepars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","text":"","code":"get_basepars(x, newdata, event)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/get_basepars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Evaluate baseline time-to-event distribution parameters given covariate values in a flexsurvmix model — get_basepars","text":"x Fitted model object newdata Data frame alternative covariate values event Event","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Glance at a flexsurv model object — glance.flexsurvreg","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"Glance accepts model object returns tibble exactly one row model summaries.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"","code":"# S3 method for flexsurvreg glance(x, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"one-row tibble containing columns: N Number observations used fitting events Number events censored Number censored events trisk Total length time--risk (.e. follow-) df Degrees freedom (.e. number estimated parameters) logLik Log-likelihood AIC Akaike's \"Information Criteria\" BIC Bayesian Information Criteria","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/glance.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Glance at a flexsurv model object — glance.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") glance(fitg) #> # A tibble: 1 × 8 #> N events censored trisk df logLik AIC BIC #> #> 1 26 12 14 15588 4 -89.7 187. 192."},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":null,"dir":"Reference","previous_headings":"","what":"The Gompertz distribution — Gompertz","title":"The Gompertz distribution — Gompertz","text":"Density, distribution function, hazards, quantile function random generation Gompertz distribution unrestricted shape.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The Gompertz distribution — Gompertz","text":"","code":"dgompertz(x, shape, rate = 1, log = FALSE) pgompertz(q, shape, rate = 1, lower.tail = TRUE, log.p = FALSE) qgompertz(p, shape, rate = 1, lower.tail = TRUE, log.p = FALSE) rgompertz(n, shape = 1, rate = 1) hgompertz(x, shape, rate = 1, log = FALSE) Hgompertz(x, shape, rate = 1, log = FALSE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The Gompertz distribution — Gompertz","text":"x, q vector quantiles. shape, rate vector shape rate parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The Gompertz distribution — Gompertz","text":"dgompertz gives density, pgompertz gives distribution function, qgompertz gives quantile function, hgompertz gives hazard function, Hgompertz gives cumulative hazard function, rgompertz generates random deviates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"The Gompertz distribution — Gompertz","text":"Gompertz distribution shape parameter \\(\\) rate parameter \\(b\\) probability density function $$f(x | , b) = ^{ax}\\exp(-b/(e^{ax} - 1))$$ hazard $$h(x | , b) = b e^{ax}$$ hazard increasing shape \\(>0\\) decreasing \\(<0\\). \\(=0\\) Gompertz equivalent exponential distribution constant hazard rate \\(b\\). probability distribution function $$F(x | , b) = 1 - \\exp(-b/(e^{ax} - 1))$$ Thus \\(\\) negative, letting \\(x\\) tend infinity shows non-zero probability \\(\\exp(b/)\\) living forever. occasions qgompertz rgompertz return Inf.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"The Gompertz distribution — Gompertz","text":"implementations Gompertz restrict \\(\\) strictly positive, ensures probability survival decreases zero \\(x\\) increases infinity. flexible implementation given consistent streg Stata. functions eha::dgompertz similar available package eha label parameters way round, called shape called rate , called 1 / scale called shape . terminology consistent exponential dexp Weibull dweibull distributions R.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"The Gompertz distribution — Gompertz","text":"Stata Press (2007) Stata release 10 manual: Survival analysis epidemiological tables.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Gompertz.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"The Gompertz distribution — Gompertz","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":null,"dir":"Reference","previous_headings":"","what":"Hazard and cumulative hazard functions — hexp","title":"Hazard and cumulative hazard functions — hexp","text":"Hazard cumulative hazard functions distributions built flexsurv, whose distribution functions base R.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hazard and cumulative hazard functions — hexp","text":"","code":"hexp(x, rate = 1, log = FALSE) Hexp(x, rate = 1, log = FALSE) hgamma(x, shape, rate = 1, log = FALSE) Hgamma(x, shape, rate = 1, log = FALSE) hlnorm(x, meanlog = 0, sdlog = 1, log = FALSE) Hlnorm(x, meanlog = 0, sdlog = 1, log = FALSE) hweibull(x, shape, scale = 1, log = FALSE) Hweibull(x, shape, scale = 1, log = FALSE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hazard and cumulative hazard functions — hexp","text":"x Vector quantiles rate Rate parameter (exponential gamma) log Compute log hazard log cumulative hazard shape Shape parameter (Weibull gamma) meanlog Mean log scale (log normal) sdlog Standard deviation log scale (log normal) scale Scale parameter (Weibull)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hazard and cumulative hazard functions — hexp","text":"Hazard (functions beginning 'h') cumulative hazard (functions beginning 'H').","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Hazard and cumulative hazard functions — hexp","text":"exponential Weibull available analytically, programmed numerically stable efficient forms. gamma log-normal, simply computed minus log survivor function (cumulative hazard) ratio density survivor function (hazard), expected robust extreme values quick compute.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hazard.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Hazard and cumulative hazard functions — hexp","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"Hazard ratio function time parametric survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"","code":"hr_flexsurvreg( x, newdata = NULL, t = NULL, start = 0, ci = TRUE, B = 1000, cl = 0.95, na.action = na.pass )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"x Object returned flexsurvreg flexsurvspline. newdata data frame two rows, specifying set covariate values. hazard ratio calculated hazard(z2)/hazard(z1), z1 first row newdata z2 second row. newdata must supplied unless model x includes just one covariate. one covariate, default constructed, defines hazard ratio second first level factor (covariate factor), value 1 value 0 (covariate numeric). t Times calculate fitted values . default, sorted unique observation (including censoring) times data - left-truncated datasets \"stop\" times. start Optional left-truncation time times. returned survival, hazard cumulative hazard conditioned survival time. Predicted times returned \"rmst\", \"mean\", \"median\" \"quantile\" times since time zero, times since start time. vector length t can supplied allow different truncation times prediction time, though make sense usual case function used calculate predicted trajectory single individual. default start time changed version 0.4 flexsurv - previously vector start times observed data. ci Set FALSE omit confidence intervals. B Number simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy, set B=0 turn calculation CIs SEs. cl Width symmetric confidence intervals, relative 1. na.action Function determining done missing values newdata. na.pass (default) summaries NA produced missing covariate values. na.omit, missing values dropped, behaviour summary.flexsurvreg flexsurv version 1.2.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/hr_flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Hazard ratio as a function of time from a parametric survival model — hr_flexsurvreg","text":"data frame estimate confidence limits hazard ratio, one row times requested t.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"Add fitted survival (hazard cumulative hazard) curves flexsurvreg model fit existing plot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"","code":"# S3 method for flexsurvreg lines( x, newdata = NULL, X = NULL, type = \"survival\", t = NULL, est = TRUE, ci = NULL, B = 1000, cl = 0.95, col = \"red\", lty = 1, lwd = 2, col.ci = NULL, lty.ci = 2, lwd.ci = 1, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"x Output flexsurvreg, representing fitted survival model object. newdata Covariate values produce fitted curves , data frame, described plot.flexsurvreg. X Covariate values produce fitted curves , matrix, described plot.flexsurvreg. type \"survival\" survival, \"cumhaz\" cumulative hazard, \"hazard\" hazard, plot.flexsurvreg. t Vector times plot fitted values . est Plot fitted curves (TRUE FALSE.) ci Plot confidence intervals fitted curves. B Number simulations controlling accuracy confidence intervals, used summary. cl Width confidence intervals, default 0.95 95% intervals. col Colour fitted curve(s). lty Line type fitted curve(s). lwd Line width fitted curve(s). col.ci Colour confidence limits, defaulting fitted curve. lty.ci Line type confidence limits. lwd.ci Line width confidence limits, defaulting fitted curve. ... arguments passed generic plot lines functions.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"Equivalent plot.flexsurvreg(...,add=TRUE).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/lines.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add fitted flexible survival curves to a plot — lines.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":null,"dir":"Reference","previous_headings":"","what":"The log-logistic distribution — Llogis","title":"The log-logistic distribution — Llogis","text":"Density, distribution function, hazards, quantile function random generation log-logistic distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The log-logistic distribution — Llogis","text":"","code":"dllogis(x, shape = 1, scale = 1, log = FALSE) pllogis(q, shape = 1, scale = 1, lower.tail = TRUE, log.p = FALSE) qllogis(p, shape = 1, scale = 1, lower.tail = TRUE, log.p = FALSE) rllogis(n, shape = 1, scale = 1) hllogis(x, shape = 1, scale = 1, log = FALSE) Hllogis(x, shape = 1, scale = 1, log = FALSE)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The log-logistic distribution — Llogis","text":"x, q vector quantiles. shape, scale vector shape scale parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The log-logistic distribution — Llogis","text":"dllogis gives density, pllogis gives distribution function, qllogis gives quantile function, hllogis gives hazard function, Hllogis gives cumulative hazard function, rllogis generates random deviates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"The log-logistic distribution — Llogis","text":"log-logistic distribution shape parameter \\(>0\\) scale parameter \\(b>0\\) probability density function $$f(x | , b) = (/b) (x/b)^{-1} / (1 + (x/b)^)^2$$ hazard $$h(x | , b) = (/b) (x/b)^{-1} / (1 + (x/b)^)$$ \\(x>0\\). hazard decreasing shape \\(\\leq 1\\), unimodal \\(> 1\\). probability distribution function $$F(x | , b) = 1 - 1 / (1 + (x/b)^)$$ \\(> 1\\), mean \\(b c / sin(c)\\), \\(> 2\\) variance \\(b^2 * (2*c/sin(2*c) - c^2/sin(c)^2)\\), \\(c = \\pi/\\), otherwise undefined.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"The log-logistic distribution — Llogis","text":"Various different parameterisations distribution used. one used , interpretation parameters standard Weibull distribution (dweibull). Like Weibull, survivor function transformation \\((x/b)^\\) non-negative real line [0,1], different link function. Covariates \\(b\\) represent time acceleration factors, ratios expected survival. parameterisation also used eha::dllogis eha package.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"The log-logistic distribution — Llogis","text":"Stata Press (2007) Stata release 10 manual: Survival analysis epidemiological tables.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Llogis.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"The log-logistic distribution — Llogis","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"Log likelihood flexsurvreg model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"","code":"# S3 method for flexsurvreg logLik(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"object fitted model object class flexsurvreg, e.g. returned flexsurvreg flexsurvspline. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/logLik.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log likelihood from a flexsurvreg model — logLik.flexsurvreg","text":"Log-likelihood (numeric) additional attributes df (degrees freedom, number parameters estimated), number observations nobs (including observed events censored observations).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"Calculate mean time start process final (\"absorbing\") state mixture multi-state model. Models cycles supported.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"","code":"meanfinal_fmixmsm(x, newdata = NULL, final = FALSE, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"x Object returned fmixmsm, representing multi-state model built piecing together mixture models fitted flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. final TRUE mean time final state calculated final state, taking weighted average mean time travel pathway ending final state, weighted probability pathway. FALSE (default) separate mean calculated pathway. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/meanfinal_fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean time to final state in a mixture multi-state model — meanfinal_fmixmsm","text":"data frame mean times absorption, covariate values pathway (final state)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean and restricted mean survival functions — mean_exp","title":"Mean and restricted mean survival functions — mean_exp","text":"Mean restricted mean survival time functions distributions built flexsurv.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean and restricted mean survival functions — mean_exp","text":"","code":"mean_exp(rate = 1) rmst_exp(t, rate = 1, start = 0) mean_gamma(shape, rate = 1) rmst_gamma(t, shape, rate = 1, start = 0) rmst_genf(t, mu, sigma, Q, P, start = 0) mean_genf(mu, sigma, Q, P) rmst_genf.orig(t, mu, sigma, s1, s2, start = 0) mean_genf.orig(mu, sigma, s1, s2) rmst_gengamma(t, mu = 0, sigma = 1, Q, start = 0) mean_gengamma(mu = 0, sigma = 1, Q) rmst_gengamma.orig(t, shape, scale = 1, k, start = 0) mean_gengamma.orig(shape, scale = 1, k) rmst_gompertz(t, shape, rate = 1, start = 0) mean_gompertz(shape, rate = 1) mean_llogis(shape = 1, scale = 1) rmst_llogis(t, shape = 1, scale = 1, start = 0) mean_lnorm(meanlog = 0, sdlog = 1) rmst_lnorm(t, meanlog = 0, sdlog = 1, start = 0) mean_weibull(shape, scale = 1) rmst_weibull(t, shape, scale = 1, start = 0) rmst_weibullPH(t, shape, scale = 1, start = 0) mean_weibullPH(shape, scale = 1)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean and restricted mean survival functions — mean_exp","text":"rate Rate parameter (exponential gamma) t Vector times restricted mean survival time evaluated start Optional left-truncation time times. returned restricted mean survival conditioned survival time. shape Shape parameter (Weibull, gamma, log-logistic, generalized gamma [orig], generalized F [orig]) mu Mean log scale (generalized gamma, generalized F) sigma Standard deviation log scale (generalized gamma, generalized F) Q Vector first shape parameters (generalized gamma, generalized F) P Vector second shape parameters (generalized F) s1 Vector first F shape parameters (generalized F [orig]) s2 vector second F shape parameters (generalized F [orig]) scale Scale parameter (Weibull, log-logistic, generalized gamma [orig], generalized F [orig]) k vector shape parameters (generalized gamma [orig]). meanlog Mean log scale (log normal) sdlog Standard deviation log scale (log normal)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean and restricted mean survival functions — mean_exp","text":"mean survival (functions beginning 'mean') restricted mean survival (functions beginning 'rmst_').","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Mean and restricted mean survival functions — mean_exp","text":"exponential, Weibull, log-logistic, lognormal, gamma, mean survival provided analytically. Restricted mean survival exponential distribution also provided analytically. Mean restricted means distributions calculated via numeric integration.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/means.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Mean and restricted mean survival functions — mean_exp","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"returns mean event-specific parametric time--event distribution mixture model, mean time event conditionally event one happens.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"","code":"mean_flexsurvmix(x, newdata = NULL, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/mean_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean times to events from a flexsurvmix model — mean_flexsurvmix","text":"Mean times next event conditionally alternative event, given specified covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"Returns list data frames, component containing data used model fit mixture component.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"","code":"# S3 method for flexsurvmix model.frame(formula, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"formula Fitted model object flexsurvmix. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Model frame from a flexsurvmix object — model.frame.flexsurvmix","text":"list data frames","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"Extract data model fitted flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"","code":"# S3 method for flexsurvreg model.frame(formula, ...) # S3 method for flexsurvreg model.matrix(object, par = NULL, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"formula fitted model object, returned flexsurvreg. ... arguments (used). object fitted model object, returned flexsurvreg. par String naming parameter whose linear model matrix desired. default value par=NULL returns matrix consisting model matrices models object cbinded together, intercepts excluded. really ``model matrix'' usual sense, however, columns directly correspond covariate coefficients matrix estimates fitted model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"model.frame returns data frame original variables used model fit. model.matrix returns design matrix part model includes covariates. required part indicated \"par\" argument (see ).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/model.frame.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract original data from flexsurvreg objects. — model.frame.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"Cumulative transition-specific intensity/hazard functions fully-parametric multi-state competing risks models, using piecewise-constant approximation allow prediction using functions mstate package.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"","code":"msfit.flexsurvreg( object, t, newdata = NULL, variance = TRUE, tvar = \"trans\", trans, B = 1000 )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. model fitted data consisting one row observed transition additional rows corresponding censored times competing transitions. \"long\" format, counting process format, explained flexsurv vignette. model contain categorical covariate indicating transition. flexsurv variable can name, indicated tvar argument. Cox models demonstrated mstate usually included model formulae strata(trans), note strata function anything flexsurv. formula supplied flexsurvreg precise parameters assumed vary transition type. Alternatively, parameters (including covariate effects) assumed different different transitions, list transition-specific models can formed. list one component permitted transition multi-state model. computationally efficient, particularly larger models datasets. See example , vignette. t Vector times. need observed event times, since model parametric, can outside range data. grid frequent times provide better approximation cumulative hazard trajectory prediction probtrans mssample, cost greater computational expense. newdata data frame specifying values covariates fitted model, transition number. must specified covariates. variable names fitted model formula. must either one value per covariate (typical situation) \\(n\\) values per covariate, different one \\(n\\) allowed transitions. variance Calculate variances covariances transition cumulative hazards (TRUE FALSE). based simulation normal asymptotic distribution estimates, computationally-expensive. tvar Name categorical variable model formula represents transition number. defined factor, factor levels correspond elements trans, conventionally sequence integers starting 1. required x list transition-specific models. trans Matrix indicating allowed transitions multi-state model, format understood mstate: matrix integers whose \\(r,s\\) entry \\(\\) \\(\\)th transition type (reading across rows) \\(r,s\\), NAs diagonal \\(r,s\\) transition disallowed. B Number simulations normal asymptotic distribution used calculate variances. Decrease greater speed expense accuracy.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"object class \"msfit\", form objects used mstate package. msfit method mstate returns equivalent cumulative intensities Cox regression models fitted coxph.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"Liesbeth C. de Wreede, Marta Fiocco, Hein Putter (2011). mstate: R Package Analysis Competing Risks Multi-State Models. Journal Statistical Software, 38(7), 1-30. doi:10.18637/jss.v038.i07 Mandel, M. (2013). \"Simulation based confidence intervals functions complicated derivatives.\" American Statistician 67(2):76-81","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/msfit.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Cumulative intensity function for parametric multi-state models — msfit.flexsurvreg","text":"","code":"## 3 state illness-death model for bronchiolitis obliterans ## Compare clock-reset / semi-Markov multi-state models ## Simple exponential model (reduces to Markov) bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) mexp <- msfit.flexsurvreg(bexp, t=seq(0,12,by=0.1), trans=tmat, tvar=\"trans\", variance=FALSE) ## Cox semi-parametric model within each transition bcox <- coxph(Surv(years, status) ~ strata(trans), data=bosms3) if (require(\"mstate\")){ mcox <- mstate::msfit(bcox, trans=tmat) ## Flexible parametric spline-based model bspl <- flexsurvspline(Surv(years, status) ~ trans + gamma1(trans), data=bosms3, k=3) mspl <- msfit.flexsurvreg(bspl, t=seq(0,12,by=0.1), trans=tmat, tvar=\"trans\", variance=FALSE) ## Compare fit: exponential model is OK but the spline is better plot(mcox, lwd=1, xlim=c(0, 12), ylim=c(0,4)) cols <- c(\"black\",\"red\",\"green\") for (i in 1:3){ lines(mexp$Haz$time[mexp$Haz$trans==i], mexp$Haz$Haz[mexp$Haz$trans==i], col=cols[i], lwd=2, lty=2) lines(mspl$Haz$time[mspl$Haz$trans==i], mspl$Haz$Haz[mspl$Haz$trans==i], col=cols[i], lwd=3) } legend(\"topright\", lwd=c(1,2,3), lty=c(1,2,1), c(\"Cox\", \"Exponential\", \"Flexible parametric\"), bty=\"n\") } #> Loading required package: mstate ## Fit a list of models, one for each transition ## More computationally efficient, but only valid if parameters ## are different between transitions. if (FALSE) { bexp.list <- vector(3, mode=\"list\") for (i in 1:3) { bexp.list[[i]] <- flexsurvreg(Surv(years, status) ~ 1, subset=(trans==i), data=bosms3, dist=\"exp\") } ## The list of models can be passed to this and other functions, ## as if it were a single multi-state model. msfit.flexsurvreg(bexp.list, t=seq(0,12,by=0.1), trans=tmat) }"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"Number observations contributing fitted flexible survival model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"","code":"# S3 method for flexsurvreg nobs(object, cens = TRUE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. cens Include censored observations number. TRUE default. FALSE number observed events returned. See BIC.flexsurvreg discussion issues defining sample size censored data. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"returns mod$N component fitted model object mod. See flexsurvreg, flexsurvspline full documentation components.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"default, matches behaviour nobs method survreg objects, including censored uncensored observations. weighted flexsurvreg analysis done, function returns sum weights.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/nobs.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Number of observations contributing to a fitted flexible survival model — nobs.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"Produce matrix alternative parameter estimates sampling uncertainty, covariate values supplied user. Used summary.flexsurvreg obtaining confidence intervals around functions parameters.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"","code":"normboot.flexsurvreg( x, B, newdata = NULL, X = NULL, transform = FALSE, raw = FALSE, tidy = FALSE, rawsim = NULL )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"x fitted model flexsurvreg (flexsurvspline). B Number samples. newdata Data frame list containing covariate values evaluate parameters . covariates model, least one newdata X must supplied, unless raw=TRUE. X Alternative (less convenient) format covariate values: matrix one row, one column covariate factor contrast. Formed \"model matrices\", one named parameter distribution, intercepts excluded, cbinded together. transform TRUE results transformed real-line scale, typically log parameter defined positive. default FALSE returns parameters natural scale. raw Return samples baseline parameters covariate effects, rather default adjusting baseline parameters covariates. tidy FALSE (default) list returned. TRUE data frame returned, consisting list elements rbinded together, integer variables labelling covariate number simulation replicate number. rawsim allows input raw samples previous run normboot.flexsurvreg. useful running normboot.flexsurvreg multiple time dataset counterfactual contrasts, e.g. treat =0 vs. treat =1. Used standsurv.flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"newdata includes one covariate combination, matrix returned B rows, one column named parameter survival distribution. one covariate combination requested (e.g. newdata data frame one row), list matrices returned, one covariate combination.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"Mandel, M. (2013). \"Simulation based confidence intervals functions complicated derivatives.\" American Statistician (press).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/normboot.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate from the asymptotic normal distribution of parameter estimates. — normboot.flexsurvreg","text":"","code":"fite <- flexsurvreg(Surv(futime, fustat) ~ age, data = ovarian, dist=\"exp\") normboot.flexsurvreg(fite, B=10, newdata=list(age=50)) #> rate #> [1,] 0.0001333406 #> [2,] 0.0002711950 #> [3,] 0.0003700718 #> [4,] 0.0002548242 #> [5,] 0.0005457485 #> [6,] 0.0002299253 #> [7,] 0.0004888764 #> [8,] 0.0001547695 #> [9,] 0.0005135426 #> [10,] 0.0004136617 #> attr(,\"X\") #> age #> 1 50 #> attr(,\"X\")attr(,\"newdata\") #> age #> 1 50 #> attr(,\"rawsim\") #> rate age #> [1,] -18.29776 0.18750322 #> [2,] -14.33221 0.12239078 #> [3,] -14.75103 0.13698433 #> [4,] -14.90062 0.13251367 #> [5,] -10.99314 0.06959569 #> [6,] -15.71307 0.14670627 #> [7,] -13.66212 0.12077431 #> [8,] -17.76240 0.17977660 #> [9,] -11.44435 0.07740335 #> [10,] -12.31628 0.09051640 normboot.flexsurvreg(fite, B=10, X=matrix(50,nrow=1)) #> rate #> [1,] 0.0003826964 #> [2,] 0.0007727804 #> [3,] 0.0002973256 #> [4,] 0.0004210293 #> [5,] 0.0003696239 #> [6,] 0.0003892618 #> [7,] 0.0002302111 #> [8,] 0.0004541271 #> [9,] 0.0002247796 #> [10,] 0.0002689798 #> attr(,\"X\") #> [,1] #> [1,] 50 #> attr(,\"rawsim\") #> rate age #> [1,] -12.31256 0.08888573 #> [2,] -10.19412 0.06057214 #> [3,] -12.99376 0.09746149 #> [4,] -14.20243 0.12859241 #> [5,] -12.97912 0.10152183 #> [6,] -13.83425 0.11965986 #> [7,] -14.85106 0.12949092 #> [8,] -10.52134 0.05648414 #> [9,] -15.71354 0.14626291 #> [10,] -14.89006 0.13338376 normboot.flexsurvreg(fite, B=10, newdata=list(age=0)) ## closer to... #> rate #> [1,] 9.179604e-06 #> [2,] 8.001138e-06 #> [3,] 3.313562e-06 #> [4,] 5.777548e-08 #> [5,] 2.844863e-06 #> [6,] 6.954191e-07 #> [7,] 6.404087e-07 #> [8,] 6.187050e-06 #> [9,] 2.166374e-06 #> [10,] 2.559143e-07 #> attr(,\"X\") #> age #> 1 0 #> attr(,\"X\")attr(,\"newdata\") #> age #> 1 0 #> attr(,\"rawsim\") #> rate age #> [1,] -11.59853 0.07562969 #> [2,] -11.73593 0.09619946 #> [3,] -12.61749 0.09538749 #> [4,] -16.66670 0.16569939 #> [5,] -12.77000 0.10285181 #> [6,] -14.17875 0.12219826 #> [7,] -14.26116 0.12455604 #> [8,] -11.99305 0.08907006 #> [9,] -13.04246 0.09910768 #> [10,] -15.17842 0.13991248 fite$res #> est L95% U95% se #> rate 8.883706e-07 1.440514e-08 5.478617e-05 1.868243e-06 #> age 1.185227e-01 5.210364e-02 1.849418e-01 3.388790e-02"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"List maximum likelihood estimates transition-specific parameters flexible parametric multi-state model, given covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"","code":"pars.fmsm(x, trans, newdata = NULL, tvar = \"trans\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"x multi-state model fitted flexsurvreg. See msfit.flexsurvreg required form model data. x can also list flexsurvreg models, one component permitted transition multi-state model, illustrated msfit.flexsurvreg. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. tvar Variable data representing transition type. required x list models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"list one component permitted transition. component one element parameter parametric distribution generates corresponding event multi-state model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pars.fmsm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transition-specific parameters in a flexible parametric multi-state model — pars.fmsm","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"returns estimate probability density time competing event, vector times supplied user.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"","code":"pdf_flexsurvmix(x, newdata = NULL, t = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. t Vector times evaluate probability density","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pdf_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fitted densities for times to events in a flexsurvmix model — pdf_flexsurvmix","text":"data frame row giving fitted density dens combination covariate values, time competing event.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"requires model Markov, valid semi-Markov models, works wrapping pmatrix.fs calculate transition probability large time. also works fmsm object formed transition-specific time--event models, therefore works competing risks models, defined just one starting state multiple destination states representing competing events. models, function returns probability governing competing event happens next. However function simply wraps pmatrix.fs, models, pmatrix.fs pmatrix.simfs can used large forecast time t.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"","code":"pfinal_fmsm(x, newdata = NULL, fromstate, maxt = 1e+05, B = 0, cores = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"x Object returned fmsm, representing multi-state model formed transition-specific time--event models fitted flexsurvreg. newdata Data frame covariate values, one column per covariate, one row per alternative value. fromstate State calculate transition probability state. refer name row transition matrix attr(x,trans). maxt Large time use forecasting final state probabilities. transition probability zero time used. Note Inf work. default 100000. B Number simulations use calculate 95% confidence intervals based asymptotic normal distribution basic parameter estimates. B=0 intervals calculated. cores Number processor cores use. NULL (default) single core used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pfinal_fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Probabilities of final states in a flexible parametric competing risks model — pfinal_fmsm","text":"data frame one row per covariate value destination state, giving state column state, probability column val. Additional columns lower upper confidence limits returned B=0.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Plots of fitted flexible survival models — plot.flexsurvreg","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"Plot fitted survival, cumulative hazard hazard parametric model nonparametric estimates diagnose goodness--fit. Alternatively plot user-defined function model parameters time.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"","code":"# S3 method for flexsurvreg plot( x, newdata = NULL, X = NULL, type = \"survival\", fn = NULL, t = NULL, start = 0, est = TRUE, ci = NULL, B = 1000, cl = 0.95, col.obs = \"black\", lty.obs = 1, lwd.obs = 1, col = \"red\", lty = 1, lwd = 2, col.ci = NULL, lty.ci = 2, lwd.ci = 1, ylim = NULL, add = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce fitted values . See summary.flexsurvreg. factor covariates model, Kaplan-Meier (nonparametric hazard...) curves plotted distinct groups, default, fitted curves also plotted groups. plot Kaplan-Meier fitted curves subset groups, use plot(survfit()) followed lines.flexsurvreg(). continuous covariates, single population Kaplan-Meier curve drawn. default, single fitted curve drawn covariates set mean values data - categorical covariates, means 0/1 indicator variables taken. X Alternative way supply covariate values, model matrix. See summary.flexsurvreg. newdata easier way. type \"survival\" survival, plotted Kaplan-Meier estimates plot.survfit. \"cumhaz\" cumulative hazard, plotted transformed Kaplan-Meier estimates plot.survfit. \"hazard\" hazard, plotted smooth nonparametric estimates muhaz. nonparametric estimates tend unstable, plots intended just roughly indicate shape hazards time. min.time max.time options muhaz may sometimes need passed arguments plot.flexsurvreg avoid error . Ignored \"fn\" specified. fn Custom function parameters summarise time. first two arguments function must t representing time, start representing left-truncation points, remaining arguments must parameters distribution. return vector length t. t Vector times plot fitted values , see summary.flexsurvreg. start Left-truncation points, see summary.flexsurvreg. est Plot fitted curves (TRUE FALSE.) ci Plot confidence intervals fitted curves. default, TRUE one observed/fitted curve plotted, FALSE multiple curves plotted. B Number simulations controlling accuracy confidence intervals, used summary. Decrease greater speed expense accuracy, set B=0 turn calculation CIs. cl Width confidence intervals, default 0.95 95% intervals. col.obs Colour nonparametric curve. lty.obs Line type nonparametric curve. lwd.obs Line width nonparametric curve. col Colour fitted parametric curve(s). lty Line type fitted parametric curve(s). lwd Line width fitted parametric curve(s). col.ci Colour fitted confidence limits, defaulting fitted curve. lty.ci Line type fitted confidence limits. lwd.ci Line width fitted confidence limits. ylim y-axis limits: vector two elements. add TRUE, add lines existing plot, otherwise new axes drawn. ... options passed plot.survfit muhaz, example, control smoothness nonparametric hazard estimates. min.time max.time options muhaz may sometimes need changed defaults.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"standard plot arguments \"xlim\",\"xlab\" may work. function designed quick check model fit. Users wanting publication-quality graphs advised set empty plot desired axes first (e.g. plot(...,type=\"n\",...)), use suitable lines functions add lines. case weights used fit model, used producing nonparametric estimates survival cumulative hazard, hazard estimates.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plots of fitted flexible survival models — plot.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"Plot standardized metrics marginal survival, restricted mean survival hazard, based fitted flexsurv model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"","code":"# S3 method for standsurv plot(x, contrast = FALSE, ci = FALSE, expected = FALSE, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"x standsurv object returned standsurv contrast contrasts standardized metrics plotted. Defaults FALSE ci confidence intervals plotted (calculated standsurv)? expected marginal expected survival / hazard also plotted? can invoked rmap ratetable passed standsurv ... currently used","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"ggplot showing standardized metric calculated standsurv time. Modification plot possible adding ggplot objects, see Examples.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot.standsurv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot standardized metrics from a fitted flexsurv model — plot.standsurv","text":"","code":"## Use bc dataset, with an age variable appended ## mean age is higher in those with smaller observed survival times newbc <- bc newbc$age <- rnorm(dim(bc)[1], mean = 65-scale(newbc$recyrs, scale=FALSE), sd = 5) ## Fit a Weibull flexsurv model with group and age as covariates weib_age <- flexsurvreg(Surv(recyrs, censrec) ~ group+age, data=newbc, dist=\"weibull\") ## Calculate standardized survival and the difference in standardized survival ## for the three levels of group across a grid of survival times standsurv_weib_age <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length=100), contrast = \"difference\", ci=TRUE, boot = TRUE, B=10, seed=123) #> Calculating bootstrap standard errors / confidence intervals #> Calculating bootstrap standard errors / confidence intervals for contrasts plot(standsurv_weib_age) plot(standsurv_weib_age) + ggplot2::theme_bw() + ggplot2::ylab(\"Survival\") + ggplot2::xlab(\"Time (years)\") + ggplot2::guides(color=ggplot2::guide_legend(title=\"Prognosis\"), fill=ggplot2::guide_legend(title=\"Prognosis\")) plot(standsurv_weib_age, contrast=TRUE, ci=TRUE) + ggplot2::ylab(\"Difference in survival\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot_survtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","title":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","text":"plot.survrtrunc creates new plot, lines.survrtrunc adds lines exising plot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot_survtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","text":"","code":"# S3 method for survrtrunc plot(x, ...) # S3 method for survrtrunc lines(x, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/plot_survtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot nonparametric estimates of survival from right-truncated data. — plot.survrtrunc","text":"x Object class \"survrtrunc\" returned survrtrunc. ... arguments passed plot.survfit lines.survfit.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"transition probability matrix time-inhomogeneous Markov multi-state models fitted time--event data flexsurvreg. \\(r,s\\) entry giving probability individual state \\(s\\) time \\(t\\), given state \\(r\\) time \\(0\\).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"","code":"pmatrix.fs( x, trans = NULL, t = 1, newdata = NULL, condstates = NULL, ci = FALSE, tvar = \"trans\", sing.inf = 1e+10, B = 1000, cl = 0.95, tidy = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally, must Markov / clock-forward model, can time-inhomogeneous. See package vignette explanation. x can also list models, one component permitted transition, illustrated msfit.flexsurvreg. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. t Time vector times predict state occupancy probabilities . newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. condstates xInstead unconditional probability state \\(s\\) time \\(t\\) given state \\(r\\) time 0, return probability conditional particular subset states time \\(t\\). subset specified condstates argument, vector character labels integers. used, example, competing risks situations, e.g. competing states death recovery disease, want compute probability patient died, given died recovered. absorbing states, \\(t\\) increases, converges case fatality ratio. compute , set \\(t\\) large number, Inf work. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. Turned default, since computationally intensive. turned , users increase B results reach desired precision. tvar Variable data representing transition type. required x list models. sing.inf singularity observed hazard, example Weibull distribution shape < 1 infinite hazard t=0, workaround, hazard assumed large finite number, sing.inf, time. results sensitive exact value assumed, users make sure adjusting parameter cases. B Number simulations normal asymptotic distribution used calculate variances. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. tidy TRUE return results tidy data frame ... Arguments passed ode deSolve.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"transition probability matrix, t length 1. t longer, return list matrices, data frame tidy TRUE. ci=TRUE, element attributes \"lower\" \"upper\" giving matrices corresponding confidence limits. formatted printing may extracted using attr().","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"computed solving Kolmogorov forward differential equation numerically, using methods deSolve package. equation $$\\frac{dP(t)}{dt} = P(t) Q(t)$$ \\(P(t)\\) transition probability matrix time \\(t\\), \\(Q(t)\\) transition hazard intensity function \\(t\\). initial condition \\(P(0) = \\). Note package msm similar method pmatrix.msm. pmatrix.fs give results pmatrix.msm conditions hold: time--event distribution exponential transitions, thus flexsurvreg model fitted dist=\"exp\" model time-homogeneous. msm model fitted exacttimes=TRUE, thus event times known, time-dependent covariates. msm allows exponential piecewise-exponential time--event distributions, flexsurvreg allows flexible models. msm however designed particular panel data, process observed arbitrary times, thus times transition unknown, makes flexible models difficult. function valid Markov (\"clock-forward\") multi-state models, though warning error currently given model Markov. See pmatrix.simfs equivalent semi-Markov (\"clock-reset\") models.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.fs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transition probability matrix from a fully-parametric, time-inhomogeneous\r\nMarkov multi-state model — pmatrix.fs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(Tstart, Tstop, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # more likely to be dead (state 3) as time moves on, or if start with # BOS (state 2) pmatrix.fs(bexp, t=c(5,10), trans=tmat) #> $`5` #> [,1] [,2] [,3] #> [1,] 0.2962297 0.2672185 0.4365518 #> [2,] 0.0000000 0.2672312 0.7327688 #> [3,] 0.0000000 0.0000000 1.0000000 #> #> $`10` #> [,1] [,2] [,3] #> [1,] 0.08775208 0.15056691 0.7616810 #> [2,] 0.00000000 0.07141257 0.9285874 #> [3,] 0.00000000 0.00000000 1.0000000 #> #> attr(,\"nst\") #> [1] 3"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"transition probability matrix semi-Markov multi-state models fitted time--event data flexsurvreg. \\(r,s\\) entry giving probability individual state \\(s\\) time \\(t\\), given state \\(r\\) time \\(0\\).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"","code":"pmatrix.simfs( x, trans, t = 1, newdata = NULL, ci = FALSE, tvar = \"trans\", tcovs = NULL, M = 1e+05, B = 1000, cl = 0.95, cores = NULL, tidy = FALSE )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally semi-Markov, time variable represents time since last transition. words response form Surv(time,status). See package vignette explanation. x can also list flexsurvreg models, one component permitted transition, illustrated msfit.flexsurvreg. can constructed fmsm. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. required x list constructed fmsm. t Time predict state occupancy probabilities . can single number vector different numbers. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. turned default, since two levels simulation required. turned , users adjust B /M results reach desired precision. simulation M generally vectorised, therefore increasing B usually expensive increasing M. tvar Variable data representing transition type. required x list models. tcovs Predictable time-dependent covariates age, see sim.fmsm. M Number individuals simulate order approximate transition probabilities. Users adjust obtain required precision. B Number simulations normal asymptotic distribution used calculate confidence limits. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. cores Number processor cores used calculating confidence limits repeated simulation. default uses single-core processing. tidy TRUE results returned tidy data frame columns estimate confidence limits, rows per state transition time interval.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"transition probability matrix. ci=TRUE, attributes \"lower\" \"upper\" giving matrices corresponding confidence limits. formatted printing may extracted using attr().","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"computed simulating large number individuals M using maximum likelihood estimates fitted model function sim.fmsm. Therefore requires random sampling function parametric survival model available: see \"Details\" section sim.fmsm. available built-distributions, though users may need write custom models. Note random sampling method flexsurvspline models currently inefficient, looping M individuals slow. pmatrix.fs efficient method based solving Kolmogorov forward equation numerically, requires multi-state model Markov. error warning given running pmatrix.simfs Markov model, still invalid.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/pmatrix.simfs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transition probability matrix from a fully-parametric, semi-Markov\r\nmulti-state model — pmatrix.simfs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # more likely to be dead (state 3) as time moves on, or if start with # BOS (state 2) pmatrix.simfs(bexp, t=5, trans=tmat) #> 1 2 3 #> 1 0.29456 0.26769 0.43775 #> 2 0.00000 0.26781 0.73219 #> 3 0.00000 0.00000 1.00000 pmatrix.simfs(bexp, t=10, trans=tmat) #> 1 2 3 #> 1 0.08806 0.15162 0.76032 #> 2 0.00000 0.07005 0.92995 #> 3 0.00000 0.00000 1.00000 # these results should converge to those in help(pmatrix.fs), as M # increases here and ODE solving precision increases there, since with # an exponential distribution, the semi-Markov model is the same as the # Markov model."},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"Probability pathway taken mixture multi-state model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"","code":"ppath_fmixmsm(x, newdata = NULL, final = FALSE, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"x Object returned fmixmsm, representing multi-state model built piecing together mixture models fitted flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. final TRUE probabilities pathways final state added together, produce probability ultimate outcome absorbing state multi-state model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/ppath_fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Probability of each pathway taken through a mixture multi-state model — ppath_fmixmsm","text":"Data frame pathway probabilities covariate value pathway.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Predictions from flexible survival models — predict.flexsurvreg","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"Predict outcomes flexible survival models covariate values specified newdata.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"","code":"# S3 method for flexsurvreg predict( object, newdata, type = \"response\", times, start = 0, conf.int = FALSE, conf.level = 0.95, se.fit = FALSE, p = c(0.1, 0.9), ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce fitted values. must column every covariate model formula used fit object, one row every combination covariate values obtain fitted predictions. newdata omitted, original data used fit model used, extracted model.frame(object). However currently work model formula contains functions, e.g. ~ factor(x). names model frame must correspond variables original data. type Character vector type predictions desired. \"response\" mean survival time (default). \"mean\" acceptable synonym \"quantile\" quantiles survival distribution specified p \"rmst\" restricted mean survival time \"survival\" survival probabilities \"cumhaz\" cumulative hazards \"hazard\" hazards \"link\" fitted values location parameter, analogous linear predictor generalized linear models (type = \"lp\" type = \"linear\" acceptable synonyms). natural scale parameter, log scale. times Vector time horizons compute fitted values. applies type \"survival\", \"cumhaz\", \"hazard\", \"rmst\". silently ignored types. specified, predictions \"survival\", \"cumhaz\", \"hazard\" made observed event time model.frame(object). \"rmst\", times specified predictions made maximum observed event time data used fit object. Specifying times = Inf valid, return mean survival (equal type = \"response\"). start Optional left-truncation time times. returned survival, hazard, cumulative hazard conditioned survival time. start must length 1 length times. Predicted times returned type \"rmst\" \"quantile\" times since time zero, times since start time. conf.int Logical. confidence intervals returned? Default FALSE. conf.level Width symmetric confidence intervals, relative 1. se.fit Logical. standard errors fitted values returned? Default FALSE. p Vector quantiles return fitted values type = \"quantile\". Default c(0.1, 0.9). ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"tibble number rows newdata order. multiple predictions requested, tibble containing single list-column data frames. list-column data frames - dimensions data frame identical. Rows added value times p requested. function wrapper around summary.flexsurvreg, designed help flexsurv integrate \"tidymodels\" ecosystem, particular censored package. summary.flexsurvreg returns results conventional format.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"Matthew T. Warkentin (https://github.com/mattwarkentin)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/predict.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Predictions from flexible survival models — predict.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") ## Simplest prediction: mean or median, for covariates defined by original dataset predict(fitg) #> # A tibble: 26 × 1 #> .pred_time #> #> 1 246. #> 2 204. #> 3 411. #> 4 1295. #> 5 1687. #> 6 990. #> 7 947. #> 8 734. #> 9 503. #> 10 1105. #> # ℹ 16 more rows predict(fitg, type = \"quantile\", p = 0.5) #> # A tibble: 26 × 2 #> .quantile .pred_quantile #> #> 1 0.5 194. #> 2 0.5 161. #> 3 0.5 325. #> 4 0.5 1022. #> 5 0.5 1331. #> 6 0.5 781. #> 7 0.5 747. #> 8 0.5 579. #> 9 0.5 397. #> 10 0.5 872. #> # ℹ 16 more rows ## Simple prediction for user-defined covariate values predict(fitg, newdata = data.frame(age = c(40, 50, 60))) #> # A tibble: 3 × 1 #> .pred_time #> #> 1 4169. #> 2 1738. #> 3 724. predict(fitg, type = \"quantile\", p = 0.5, newdata = data.frame(age = c(40,50,60))) #> # A tibble: 3 × 2 #> .quantile .pred_quantile #> #> 1 0.5 3291. #> 2 0.5 1372. #> 3 0.5 572. ## Predict multiple quantiles and unnest require(tidyr) #> Loading required package: tidyr pr <- predict(fitg, type = \"survival\", times = c(600, 800)) tidyr::unnest(pr, .pred) #> # A tibble: 52 × 2 #> .eval_time .pred_survival #> #> 1 600 0.0548 #> 2 800 0.0202 #> 3 600 0.0292 #> 4 800 0.00926 #> 5 600 0.200 #> 6 800 0.104 #> 7 600 0.751 #> 8 800 0.624 #> 9 600 0.841 #> 10 800 0.742 #> # ℹ 42 more rows"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"Probabilities competing events flexsurvmix model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"","code":"probs_flexsurvmix(x, newdata = NULL, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/probs_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Probabilities of competing events from a flexsurvmix model — probs_flexsurvmix","text":"data frame containing probability competing events occur next, event covariate values specified newdata.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"quantities variously known transition probabilities, state occupancy probabilities, values \"cumulative incidence\" function, values \"subdistribution\" function. probabilities individual experienced event particular kind time t.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"","code":"p_flexsurvmix(x, newdata = NULL, startname = \"start\", t = 1, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. startname Name state individuals start. considers model multi-state model people start state, may transition one competing events. t Vector times t calculate probabilities transition . B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"data frame transition probabilities time, covariate value destination state.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/p_flexsurvmix.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transition probabilities from a flexsurvmix model — p_flexsurvmix","text":"Note \"cumulative incidence\" misnomer, \"incidence\" typically means hazard, quantities computed cumulative hazards, probabilities.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"Calculate quantiles time start process possible final (\"absorbing\") state mixture multi-state model. Models cycles supported.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"","code":"qfinal_fmixmsm( x, newdata = NULL, final = FALSE, B = NULL, n = 10000, probs = c(0.025, 0.5, 0.975) )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"x Object returned fmixmsm, representing multi-state model built piecing together mixture models fitted flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. final TRUE mean time final state calculated final state, taking weighted average mean time travel pathway ending final state, weighted probability pathway. FALSE (default) separate mean calculated pathway. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed. n Number individual-level simulations use characterise time--event distributions probs Quantiles calculate, default, c(0.025, 0.5, 0.975)","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qfinal_fmixmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Quantiles of the distribution of the time until reaching a final state in a\r\nmixture multi-state model — qfinal_fmixmsm","text":"Data frame quantiles time final state pathway covariate value, final state covariate value.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":null,"dir":"Reference","previous_headings":"","what":"Generic function to find quantiles of a distribution — qgeneric","title":"Generic function to find quantiles of a distribution — qgeneric","text":"Generic function find quantiles distribution, given equivalent probability distribution function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generic function to find quantiles of a distribution — qgeneric","text":"","code":"qgeneric(pdist, p, matargs = NULL, scalarargs = NULL, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generic function to find quantiles of a distribution — qgeneric","text":"pdist Probability distribution function, example, pnorm normal distribution, must defined current workspace. accept return vectorised parameters values. also return correct values entire real line, example positive distribution pdist(x)==0 \\(x<0\\). p Vector probabilities find quantiles . matargs Character vector giving elements ... represent vector parameters distribution. Empty default. vectorised, become matrices. used arguments gamma knots qsurvspline. scalarargs Character vector naming scalar arguments distribution function vectorised. used arguments scale timescale qsurvspline. ... remaining arguments define parameters distribution pdist. MUST named explicitly. may also contain standard arguments log.p (logical; default FALSE, TRUE, probabilities p given log(p)), lower.tail (logical; TRUE (default), probabilities P[X <= x] otherwise, P[X > x].). distribution bounded , contain arguments lbound ubound respectively, returned p 0 1 respectively. Defaults -Inf Inf respectively.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generic function to find quantiles of a distribution — qgeneric","text":"Vector quantiles distribution p.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generic function to find quantiles of a distribution — qgeneric","text":"function used default custom distributions quantile function provided. works finding root equation \\(h(q) = pdist(q) - p = 0\\). Starting interval \\((-1, 1)\\), interval width expanded 50% \\(h()\\) opposite sign either end. root found using uniroot. assumes suitably smooth, continuous distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generic function to find quantiles of a distribution — qgeneric","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/qgeneric.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generic function to find quantiles of a distribution — qgeneric","text":"","code":"qnorm(c(0.025, 0.975), 0, 1) #> [1] -1.959964 1.959964 qgeneric(pnorm, c(0.025, 0.975), mean=0, sd=1) # must name the arguments #> [1] -1.959964 1.959964"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/quantile_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","title":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","text":"returns quantiles event-specific parametric time--event distribution mixture model, describes time event conditionally event one happens.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/quantile_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","text":"","code":"quantile_flexsurvmix(x, newdata = NULL, B = NULL, probs = c(0.025, 0.5, 0.975))"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/quantile_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quantiles of time-to-event distributions in a flexsurvmix model — quantile_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed. probs Vector alternative quantiles, default c(0.025, 0.95, 0.975) giving median 95% interval.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. generics augment, glance, tidy","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate residuals for flexible survival models — residuals.flexsurvreg","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"Calculates residuals flexsurvreg flexsurvspline model fits.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"","code":"# S3 method for flexsurvreg residuals(object, type = \"response\", ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. type Character string type residual desired. Currently \"response\" \"coxsnell\" supported. residual types may become available future versions. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"Numeric vector length nobs(object).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"Residuals type = \"response\" calculated naive difference observed survival covariate-specific predicted mean survival predict.flexsurvreg, ignoring whether event time observed censored. type=\"coxsnell\" returns Cox-Snell residual, defined estimated cumulative hazard data point. check fit fully featured utility provided function coxsnell_flexsurvreg.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/residuals.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate residuals for flexible survival models — residuals.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") residuals(fitg, type=\"response\") #> [1] -187.21560 -88.78121 -255.36822 -873.56963 -1255.83883 -541.96330 #> [7] -483.01162 -258.61757 -25.66308 -541.58483 -324.11343 -977.14761 #> [13] 20.81491 -167.52130 -3640.36131 -2316.90107 -3552.79251 -1681.40682 #> [19] -105.56084 -1679.31116 476.11922 64.41307 -2839.10079 -193.52725 #> [25] -126.81187 -462.83150"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"returns restricted mean event-specific parametric time--event distribution mixture model, mean time event conditionally event one happens, conditionally event time less time horizon tot.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"","code":"rmst_flexsurvmix(x, newdata = NULL, tot = Inf, B = NULL)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. tot Time horizon compute restricted mean . B Number simulations use compute 95% confidence intervals, based asymptotic multivariate normal distribution basic parameter estimates. B=NULL intervals computed.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Restricted mean times to events from a flexsurvmix model — rmst_flexsurvmix","text":"Restricted mean times next event conditionally alternative event, given specified covariate values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":null,"dir":"Reference","previous_headings":"","what":"Generic function to find restricted mean survival time for some distribution — rmst_generic","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"Generic function find restricted mean distribution, given equivalent probability distribution function, using numeric integration.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"","code":"rmst_generic(pdist, t, start = 0, matargs = NULL, scalarargs = NULL, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"pdist Probability distribution function, example, pnorm normal distribution, must defined current workspace. accept return vectorised parameters values. also return correct values entire real line, example positive distribution pdist(x)==0 \\(x<0\\). t Vector times rmst evaluated start Optional left-truncation time times. returned restricted mean survival conditioned survival time. matargs Character vector giving elements ... represent vector parameters distribution. Empty default. vectorised, become matrices. used arguments gamma knots psurvspline. scalarargs Character vector naming scalar arguments distribution function vectorised. used, example, arguments scale timescale psurvspline. ... remaining arguments define parameters distribution pdist. MUST named explicitly.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"Vector restricted mean survival times distribution p.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"function used default custom distributions rmst function provided. assumes suitably smooth, continuous distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/rmst_generic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generic function to find restricted mean survival time for some distribution — rmst_generic","text":"","code":"rmst_lnorm(500, start=250, meanlog=7.4225, sdlog = 1.1138) #> [1] 237.8849 rmst_generic(plnorm, 500, start=250, meanlog=7.4225, sdlog = 1.1138) #> [1] 237.8849 # must name the arguments"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"Simulate changes state transition times semi-Markov multi-state model fitted using flexsurvreg.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"","code":"sim.fmsm( x, trans = NULL, t, newdata = NULL, start = 1, M = 10, tvar = \"trans\", tcovs = NULL, tidy = FALSE, debug = FALSE )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Alternatively x can list fitted flexsurvreg model objects. ith element list model corresponding ith transition trans. efficient way fit multi-state model, valid parameters different different transitions. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. t Time, vector times M individuals, simulate trajectories . newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. start Starting state, vector starting states M individuals. M Number individual trajectories simulate. tvar Variable data representing transition type. required x list models. tcovs Names \"predictable\" time-dependent covariates newdata, .e. whose values change rate time. Age typical example. simulation, values updated transition time, adding current time value supplied newdata. assumes covariate measured unit time. tcovs supplied character vector. tidy TRUE simulated data returned tidy data frame one row per simulated transition. See simfs_bytrans function rearrange data format simulated non-tidy format. Currently includes event times, excludes times censoring reported tidy=FALSE. debug Print intermediate outputs: development use.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"tidy=TRUE, data frame one row simulated transition, giving individual ID id, start state start, end state end, transition label trans, time transition since start process (time), time since previous transition (delay). tidy=FALSE, list two matrices named st t. rows matrix represent simulated individuals. columns t contain times individual changes state, corresponding states st. first columns always contain starting states starting times. last column t represents either time individual moves absorbing state, right-censoring transient state time given t argument sim.fmsm.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"sim.fmsm relies presence function sample random numbers parametric survival distribution used fitted model x, example rweibull Weibull models. x fitted using custom distribution, called dist say, must function called (something like) rdist either working environment, supplied dfns argument flexsurvreg. must format standard R functions rweibull, first argument n, remaining arguments giving parameters distribution. must vectorised respect parameter arguments. function valid semi-Markov (\"clock-reset\") models, though warning error currently given model type. equivalent time-inhomogeneous Markov (\"clock-forward\") models currently implemented.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/sim.fmsm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate paths through a fully parametric semi-Markov multi-state model — sim.fmsm","text":"","code":"bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) sim.fmsm(bexp, M=10, t=5, trans=tmat) #> $st #> [,1] [,2] [,3] #> [1,] 1 2 2 #> [2,] 1 2 2 #> [3,] 1 3 3 #> [4,] 1 3 3 #> [5,] 1 2 3 #> [6,] 1 1 1 #> [7,] 1 1 1 #> [8,] 1 3 3 #> [9,] 1 2 3 #> [10,] 1 2 2 #> #> $t #> [,1] [,2] [,3] #> [1,] 0 0.04056377 5.0000000 #> [2,] 0 2.37118887 5.0000000 #> [3,] 0 2.12455204 2.1245520 #> [4,] 0 0.36715147 0.3671515 #> [5,] 0 0.94681789 1.9433587 #> [6,] 0 5.00000000 5.0000000 #> [7,] 0 5.00000000 5.0000000 #> [8,] 0 4.25651403 4.2565140 #> [9,] 0 0.05740866 2.5896499 #> [10,] 0 2.77917357 5.0000000 #> #> attr(,\"trans\") #> [,1] [,2] [,3] #> [1,] NA 1 2 #> [2,] NA NA 3 #> [3,] NA NA NA"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"Estimates probability final outcome (\"absorbing\" state), mean quantiles time outcome people experience , simulating large sample individuals model. can used Markov semi-Markov models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"","code":"simfinal_fmsm( x, newdata = NULL, probs = c(0.025, 0.5, 0.975), t = 1000, M = 1e+05, B = 0, cores = NULL )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"x Object returned fmsm, representing multi-state model formed transition-specific time--event models fitted flexsurvreg. newdata Data frame covariate values, one column per covariate, one row per alternative value. probs Quantiles calculate, default, c(0.025, 0.5, 0.975) median 95% interval. t Maximum time simulate , passed sim.fmsm, summaries taken subset individuals simulated data absorbing state time. M Number individuals simulate. B Number simulations use calculate 95% confidence intervals based asymptotic normal distribution basic parameter estimates. B=0 intervals calculated. cores Number processor cores use. NULL (default) single core used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"tidy data frame rows combination covariate values quantity interest. quantity interest identified column quantity, value quantity val, additional columns lower upper giving 95% confidence intervals quantity, B>0.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfinal_fmsm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate and summarise final outcomes from a flexible parametric multi-state\r\nmodel — simfinal_fmsm","text":"competing risks model, .e. model defined just one starting state multiple destination states representing competing events, returns probability governing next event happens, distribution time event conditionally event happening.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":null,"dir":"Reference","previous_headings":"","what":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"Reformat simulated multi-state data one row per simulated transition","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"","code":"simfs_bytrans(simfs)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"simfs Output sim.fmsm representing simulated histories multi-state model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simfs_bytrans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reformat simulated multi-state data with one row per simulated transition — simfs_bytrans","text":"Data frame four columns giving transition start state, transition end state, transition name time taken transition.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"Simulate times competing events mixture multi-state model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"","code":"simt_flexsurvmix(x, newdata = NULL, n)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"x Fitted model object returned flexsurvmix. newdata Data frame list covariate values. omitted model covariates, default used, defined combinations factors covariates model factors, covariate values zero non-factor covariates model. n Number simulations","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simt_flexsurvmix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate times to competing events from a mixture multi-state model — simt_flexsurvmix","text":"Data frame n*m rows column competing event, m number alternative covariate values, number rows newdata. simulated time represents time event conditionally event one occurs. function simulate event occurs.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"Simulate censored time--event data fitted flexsurvreg model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"","code":"# S3 method for flexsurvreg simulate( object, nsim = 1, seed = NULL, newdata = NULL, start = NULL, censtime = NULL, tidy = FALSE, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"object Object returned flexsurvreg. nsim Number simulations per row newdata. seed Random number seed. returned result function, described simulate lm method. newdata Data frame defining alternative sets covariate values simulate . omitted, defaults data originally used fit model. start Optional left-truncation time times. returned survival, hazard cumulative hazard conditioned survival time. Predicted times returned \"rmst\", \"mean\", \"median\" \"quantile\" times since time zero, times since start time. vector length t can supplied allow different truncation times prediction time, though make sense usual case function used calculate predicted trajectory single individual. default start time changed version 0.4 flexsurv - previously vector start times observed data. censtime right-censoring time, vector times matching rows newdata. NULL (default) uncensored times events simulated. tidy TRUE \"tidy\" \"long\"-format data frame returned, rows defined combinations covariates simulation replicates. simulation replicate indicated column named . FALSE, data frame returned one row per set covariate values, different columns different simulation replicates. traditional format `simulate` methods base R. either case, simulated time indicator whether time event time (rather time right-censoring) returned different columns. ... arguments (currently used).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"data frame, format determined whether tidy specified.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/simulate.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate censored time-to-event data from a fitted flexsurvreg model — simulate.flexsurvreg","text":"","code":"fit <- flexsurvreg(formula = Surv(futime, fustat) ~ rx, data = ovarian, dist=\"weibull\") fit2 <- flexsurvspline(formula = Surv(futime, fustat) ~ rx, data = ovarian, k=3) nd = data.frame(rx=1:2) simulate(fit, seed=1002, newdata=nd) #> time_1 event_1 #> 1 575.5959 1 #> 2 2391.6927 1 simulate(fit, seed=1002, newdata=nd, start=500) #> time_1 event_1 #> 1 993.9562 1 #> 2 2750.1742 1 simulate(fit2, nsim=3, seed=1002, newdata=nd) #> time_1 time_2 time_3 event_1 event_2 event_3 #> 1 457.8966 3564.307 943.0164 1 1 1 #> 2 419.5862 731.334 9729.0033 1 1 1 simulate(fit2, nsim=3, seed=1002, newdata=nd, start=c(500,1000)) #> time_1 time_2 time_3 event_1 event_2 event_3 #> 1 2081.447 12780.637 4008.034 1 1 1 #> 2 2872.484 3469.562 24816.827 1 1 1"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":null,"dir":"Reference","previous_headings":"","what":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"Returns tidy data.frame marginal survival probabilities, hazards, restricted mean survival, quantiles marginal survival function user-defined time points covariate patterns. Standardization performed undefined covariates model. user provides data standardize . Contrasts can calculated resulting estimates average treatment effect average treatment effect treated treated subset data supplied.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"","code":"standsurv( object, newdata = NULL, at = list(list()), atreference = 1, type = \"survival\", t = NULL, ci = FALSE, se = FALSE, boot = FALSE, B = NULL, cl = 0.95, trans = \"log\", contrast = NULL, trans.contrast = NULL, seed = NULL, rmap, ratetable, scale.ratetable = 365.25, n.gauss.quad = 100, quantiles = 0.5, interval = c(1e-08, 500) )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce marginal values . specified fitted model data.frame used. must column every covariate model formula user wishes standardize . format original data, factors single variable, 0/1 contrasts. covariates fixed specified . one row every combination covariates standardize . newdata contains variable named '(weights)' weighted mean used create standardized estimates. default behaviour fitted model contains case weights, stored fitted model data.frame. list scenarios specific covariates fixed certain values. element must list. example, covariate group levels \"Good\", \"Medium\" \"Poor\", standardized survival plots group averaging covariates specified using =list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")). atreference reference scenario making contrasts. Default 1 (.e. first element ). type \"survival\" marginal survival probabilities. relative survival framework returns marginal -cause survival (see details). \"hazard\" hazard marginal survival probability. relative survival framework returns marginal -cause hazard (see details). \"rmst\" standardized restricted mean survival. \"relsurvival\" marginal relative survival (can specified relative survival model fitted flexsurv). \"excesshazard\" marginal excess hazards (can specified relative survival model fitted flexsurv). \"quantile\" quantiles marginal -cause survival distribution. quantiles option also needs provided. t Times calculate marginal values . ci confidence intervals calculated? Defaults FALSE se standard errors calculated? Defaults FALSE boot bootstrapping used calculate standard error confidence intervals? Defaults FALSE, case delta method used B Number bootstrap simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy. specify boot = TRUE cl Width symmetric confidence intervals, relative 1. trans Transformation apply calculating standard errors via delta method obtain confidence intervals. default transformation \"log\". possible names \"none\", \"loglog\", \"logit\". contrast Contrasts standardized measures defined scenarios. Options \"difference\" \"ratio\". n-1 new columns created n number scenarios. Default NULL (.e. contrasts calculated). trans.contrast Transformation apply calculating standard errors contrasts via delta method obtain confidence intervals. default transformation \"none\" differences survival, hazard, quantiles, RMST, \"log\" ratios survival, hazard, quantiles RMST. seed random seed use (bootstrapping confidence intervals) rmap list maps data set names expected ratetable names. must specified -cause survival hazards required fitting relative survival model. can also specified expected rates required plotting purposes. See details section . ratetable table expected event rates (see ratetable) scale.ratetable Transformation time scale fitted flexsurv model time scale ratetable. example, analysis time fitted model years ratetable units/day use scale.ratetable = 365.25. default often ratetable units/day (see example). n.gauss.quad Number Gaussian quadrature points used integrating -cause survival function calculating RMST relative survival framework (default = 100) quantiles type=\"quantile\", specifies quantiles survival time distribution return estimates . interval Interval survival times quantile root finding. Default c(1e-08, 500).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"tibble containing one row time-point. column naming convention {} ith scenario corresponding confidence intervals (specified) named {}_lci {}_uci. Contrasts named contrast{k}_{j} comparison kth versus jth scenario. addition tidy long-format data.frames returned attributes standsurv_at standsurv_contrast. can passed ggplot plotting purposes (see plot.standsurv).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"syntax standsurv follows closely Stata's standsurv command written Paul Lambert Michael Crowther. function calculates standardized (marginal) measures including standardized survival functions, standardized restricted mean survival times, quantiles hazard standardized survival. standardized survival defined $$S_s(t|X=x) = E(S(t|X=x,Z)) = \\frac{1}{N} \\sum_{=1}^N S(t|X=x,Z=z_i)$$ hazard standardized survival weighted average individual hazard functions time t, weighted survival function time: $$h_s(t|X=x) = \\frac{\\sum_{=1}^N S(t|X=x,Z=z_i)h(t|X=x,Z=z_i)}{\\sum_{=1}^N S(t|X=x,Z=z_i)}$$ Marginal expected survival hazards can calculated providing population-based lifetable class ratetable ratetable mapping stratification factors lifetable user dataset using rmap. stratification factors fitted survival model user must specify newdata along covariates model. marginal expected survival calculated using \"Ederer\" method assumes censoring relevant approach forecasting (see survexp). worked example given . Marginal -cause survival hazards can calculated fitting relative survival model, utilise expected survival population ratetable. See Rutherford et al. (Chapter 6) details.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"Paul Lambert, 2021. \"STANDSURV: Stata module compute standardized (marginal) survival related functions,\" Statistical Software Components S458991, Boston College Department Economics. https://ideas.repec.org/c/boc/bocode/s458991.html Rutherford, MJ, Lambert PC, Sweeting MJ, Pennington B, Crowther MJ, Abrams KR, Latimer NR. 2020. \"NICE DSU Technical Support Document 21: Flexible Methods Survival Analysis\" https://nicedsu.sites.sheffield.ac.uk/tsds/flexible-methods--survival-analysis-tsd","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"Michael Sweeting ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/standsurv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Marginal survival and hazards of fitted flexsurvreg models — standsurv","text":"","code":"## mean age is higher in those with smaller observed survival times newbc <- bc set.seed(1) newbc$age <- rnorm(dim(bc)[1], mean = 65-scale(newbc$recyrs, scale=FALSE), sd = 5) ## Fit a Weibull flexsurv model with group and age as covariates weib_age <- flexsurvreg(Surv(recyrs, censrec) ~ group+age, data=newbc, dist=\"weibull\") ## Calculate standardized survival and the difference in standardized survival ## for the three levels of group across a grid of survival times standsurv_weib_age <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length.out=100), contrast = \"difference\", ci=FALSE) standsurv_weib_age #> # A tibble: 100 × 6 #> time at1 at2 at3 contrast2_1 contrast3_1 #> #> 1 0 1 1 1 0 0 #> 2 0.0707 0.999 0.998 0.996 -0.00111 -0.00353 #> 3 0.141 0.998 0.995 0.988 -0.00293 -0.00931 #> 4 0.212 0.996 0.991 0.980 -0.00517 -0.0164 #> 5 0.283 0.994 0.986 0.970 -0.00772 -0.0244 #> 6 0.354 0.992 0.981 0.959 -0.0105 -0.0331 #> 7 0.424 0.989 0.976 0.947 -0.0135 -0.0425 #> 8 0.495 0.987 0.970 0.935 -0.0167 -0.0523 #> 9 0.566 0.984 0.964 0.922 -0.0201 -0.0626 #> 10 0.636 0.981 0.958 0.908 -0.0236 -0.0732 #> # ℹ 90 more rows ## Calculate hazard of standardized survival and the marginal hazard ratio ## for the three levels of group across a grid of survival times ## 10 bootstraps for confidence intervals (this should be larger) if (FALSE) { haz_standsurv_weib_age <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length.out=100), type=\"hazard\", contrast = \"ratio\", boot = TRUE, B=10, ci=TRUE) haz_standsurv_weib_age plot(haz_standsurv_weib_age, ci=TRUE) ## Hazard ratio plot shows a decreasing marginal HR ## Whereas the conditional HR is constant (model is a PH model) plot(haz_standsurv_weib_age, contrast=TRUE, ci=TRUE) ## Calculate standardized survival from a Weibull model together with expected ## survival matching to US lifetables # age at diagnosis in days. This is required to match to US ratetable, whose # timescale is measured in days newbc$agedays <- floor(newbc$age * 365.25) ## Create some random diagnosis dates centred on 01/01/2010 with SD=1 year ## These will be used to match to expected rates in the lifetable newbc$diag <- as.Date(floor(rnorm(dim(newbc)[1], mean = as.Date(\"01/01/2010\", \"%d/%m/%Y\"), sd=365)), origin=\"1970-01-01\") ## Create sex (assume all are female) newbc$sex <- factor(\"female\") standsurv_weib_expected <- standsurv(weib_age, at = list(list(group=\"Good\"), list(group=\"Medium\"), list(group=\"Poor\")), t=seq(0,7, length.out=100), rmap=list(sex = sex, year = diag, age = agedays), ratetable = survival::survexp.us, scale.ratetable = 365.25, newdata = newbc) ## Plot marginal survival with expected survival superimposed plot(standsurv_weib_expected, expected=TRUE) }"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Summaries of fitted flexible survival models — summary.flexsurvreg","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"Return fitted survival, cumulative hazard hazard series times fitted flexsurvreg flexsurvspline model.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"","code":"# S3 method for flexsurvreg summary( object, newdata = NULL, X = NULL, type = \"survival\", fn = NULL, t = NULL, quantiles = 0.5, start = 0, cross = TRUE, ci = TRUE, se = FALSE, B = 1000, cl = 0.95, tidy = FALSE, na.action = na.pass, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. newdata Data frame containing covariate values produce fitted values . list can coerced data frame. must column every covariate model formula, one row every combination covariates fitted values wanted . format original data, factors single variable, 0/1 contrasts. omitted, continuous covariates, single summary provided covariates set mean values data - categorical covariates, means 0/1 indicator variables taken. factor covariates model, distinct groups used default. X Alternative way defining covariate values produce fitted values . Since version 0.4, newdata easier way require user create factor contrasts, X kept backwards compatibility. Columns X represent different covariates, rows represent multiple combinations covariate values. example matrix(c(1,2),nrow=2) one covariate model, want survival covariate values 1 2. vector can also supplied just one combination covariates needed. ``factor'' (categorical) covariates, values contrasts representing factor levels (returned contrasts function) used. example, covariate agegroup specified unordered factor levels 20-29, 30-39, 40-49, 50-59, baseline level 20-29, three contrasts. return summaries groups 20-29 40-49, supply X = rbind(c(0,0,0), c(0,1,0)), since contrasts zero baseline level, second contrast ``turned '' third level 40-49. type \"survival\" survival probabilities. \"cumhaz\" cumulative hazards. \"hazard\" hazards. \"rmst\" restricted mean survival. \"mean\" mean survival. \"median\" median survival (alternative type=\"quantile\" quantiles=0.5). \"quantile\" quantiles survival time distribution. \"link\" fitted value location parameter (.e. \"linear predictor\" natural scale parameter, log scale) Ignored \"fn\" specified. fn Custom function parameters summarise time. optional first two arguments t representing time, start representing left-truncation points, remaining arguments must parameters distribution. vectorised, return vector corresponding vectors given t, start parameter vectors. t Times calculate fitted values . default, sorted unique observation (including censoring) times data - left-truncated datasets \"stop\" times. quantiles type=\"quantile\", specifies quantiles survival time distribution return estimates . start Optional left-truncation time times. returned survival, hazard cumulative hazard conditioned survival time. Predicted times returned \"rmst\", \"mean\", \"median\" \"quantile\" times since time zero, times since start time. vector length t can supplied allow different truncation times prediction time, though make sense usual case function used calculate predicted trajectory single individual. default start time changed version 0.4 flexsurv - previously vector start times observed data. cross TRUE (default) summaries calculated combinations times specified t covariate vectors specifed newdata. FALSE, times t length equal number rows newdata, one summary produced row newdata paired corresponding element t. used, e.g. determining Cox-Snell residuals. ci Set FALSE omit confidence intervals. se Set TRUE include standard errors. B Number simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy, set B=0 turn calculation CIs SEs. cl Width symmetric confidence intervals, relative 1. tidy TRUE, results returned tidy data frame instead list. can help using ggplot2 package compare summaries different covariate values. na.action Function determining done missing values newdata. na.pass (default) summaries NA produced missing covariate values. na.omit, missing values dropped, behaviour summary.flexsurvreg flexsurv version 1.2. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"tidy=FALSE, list one component unique covariate value (categorical covariates) one component (covariates continuous covariates). components matrix one row time t, giving estimated survival (cumulative hazard, hazard) 95% confidence limits. list components named covariate names values define . tidy=TRUE, data frame returned instead. formed stacking list components, additional columns identify covariate values block corresponds . multiple summaries, additional list component named X contains matrix exact values contrasts (dummy covariates) defining summary. plot.flexsurvreg function can used quickly plot model-based summaries empirical summaries Kaplan-Meier curves, diagnose model fit. Confidence intervals obtained sampling randomly asymptotic normal distribution maximum likelihood estimates taking quantiles (see, e.g. Mandel (2013)).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"Time-dependent covariates currently supported. covariate values assumed constant time fitted curve.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"Mandel, M. (2013). \"Simulation based confidence intervals functions complicated derivatives.\" American Statistician (press).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvreg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summaries of fitted flexible survival models — summary.flexsurvreg","text":"C. H. Jackson chris.jackson@mrc-bsu.cam.ac.uk","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvrtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","title":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","text":"function extracts quantities interest untruncated version model individual-specific right truncation points fitted flexsurvrtrunc. Note covariates currently supported flexsurvrtrunc.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvrtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","text":"","code":"# S3 method for flexsurvrtrunc summary( object, type = \"survival\", fn = NULL, t = NULL, quantiles = 0.5, ci = TRUE, se = FALSE, B = 1000, cl = 0.95, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/summary.flexsurvrtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summarise quantities of interest from fitted flexsurvrtrunc models — summary.flexsurvrtrunc","text":"object Output flexsurvreg flexsurvspline, representing fitted survival model object. type \"survival\" survival probabilities. \"cumhaz\" cumulative hazards. \"hazard\" hazards. \"rmst\" restricted mean survival. \"mean\" mean survival. \"median\" median survival (alternative type=\"quantile\" quantiles=0.5). \"quantile\" quantiles survival time distribution. Ignored \"fn\" specified. fn Custom function parameters summarise time. optional first argument t representing time, remaining arguments must parameters distribution. return vector length t. t Times calculate fitted values . default, sorted unique observation (including censoring) times data - left-truncated datasets \"stop\" times. quantiles type=\"quantile\", specifies quantiles survival time distribution return estimates . ci Set FALSE omit confidence intervals. se Set TRUE include standard errors. B Number simulations normal asymptotic distribution estimates used calculate confidence intervals standard errors. Decrease greater speed expense accuracy, set B=0 turn calculation CIs SEs. cl Width symmetric confidence intervals, relative 1. ... arguments passed methods. Currently unused.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":null,"dir":"Reference","previous_headings":"","what":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"Estimates survivor function right-truncated, uncensored data reversing time, interpreting data left-truncated, applying Kaplan-Meier / Lynden-Bell estimator transforming back.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"","code":"survrtrunc(t, rtrunc, tmax, data = NULL, eps = 0.001, conf.int = 0.95)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"t Vector observed times initial event final event. rtrunc Individual-specific right truncation points, individual's survival time t observed greater corresponding element rtrunc. greater tmax, actual individual-level truncation point individuals taken tmax. tmax Maximum possible time event observed. data Data frame find t rtrunc . supplied, working environment. eps Small number added t implementing time-reversed estimator, ensure risk set consistent forward reverse time scales. just large enough t+eps ==t. need changing default 0.001, unless t extremely large small data rounded integer. conf.int Confidence level, defaulting 0.95.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"list components: time Time points estimated survival changes. surv Estimated survival time, truncated tmax. se.surv Standard error survival. std.err Standard error -log(survival). Named way consistency survfit. lower Lower confidence limits survival. upper Upper confidence limits survival.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"Note estimate untruncated survivor function - instead estimates survivor function truncated time defined maximum possible time might observed data. Define \\(X\\) time initial event, \\(Y\\) time final event, wish determine distribution \\(T = Y- X\\). Observations recorded \\(Y \\leq t_{max}\\). distribution \\(T\\) resulting sample right-truncated rtrunc \\( = t_{max} - X\\). Equivalently, distribution \\(t_{max} - T\\) left-truncated, since observed \\(t_{max} - T \\geq X\\). standard Kaplan-Meier type estimator implemented survfit used (described Lynden-Bell, 1971) results transformed back. situation might happen disease epidemic, \\(X\\) date disease onset individual, \\(Y\\) date death, wish estimate distribution time \\(T\\) onset death, given observed people died date \\(t_{max}\\). estimated survival unstable highest times, consider replacing tmax slightly lower value, necessary, removing individuals t > tmax, estimand changed survivor function truncated slightly narrower interval.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"D. Lynden-Bell (1971) method allowing known observational selection small samples applied 3CR quasars. Monthly Notices Royal Astronomical Society, 155:95–118. Seaman, S., Presanis, . Jackson, C. (2020) Review methods estimating distribution time event right-truncated data.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/survrtrunc.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Nonparametric estimator of survival from right-truncated, uncensored data — survrtrunc","text":"","code":"## simulate some event time data set.seed(1) X <- rweibull(100, 2, 10) T <- rweibull(100, 2, 10) ## truncate above tmax <- 20 obs <- X + T < tmax rtrunc <- tmax - X dat <- data.frame(X, T, rtrunc)[obs,] sf <- survrtrunc(T, rtrunc, data=dat, tmax=tmax) plot(sf, conf.int=TRUE) ## Kaplan-Meier estimate ignoring truncation is biased sfnaive <- survfit(Surv(T) ~ 1, data=dat) lines(sfnaive, conf.int=TRUE, lty=2, col=\"red\") ## truncate above the maximum observed time tmax <- max(X + T) + 10 obs <- X + T < tmax rtrunc <- tmax - X dat <- data.frame(X, T, rtrunc)[obs,] sf <- survrtrunc(T, rtrunc, data=dat, tmax=tmax) plot(sf, conf.int=TRUE) ## estimates identical to the standard Kaplan-Meier sfnaive <- survfit(Surv(T) ~ 1, data=dat) lines(sfnaive, conf.int=TRUE, lty=2, col=\"red\")"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":null,"dir":"Reference","previous_headings":"","what":"Royston/Parmar spline survival distribution — Survspline","title":"Royston/Parmar spline survival distribution — Survspline","text":"Probability density, distribution, quantile, random generation, hazard, cumulative hazard, mean restricted mean functions Royston/Parmar spline model. functions parameters distribution collected together single argument gamma. equivalent functions one argument per parameter, see Survsplinek.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Royston/Parmar spline survival distribution — Survspline","text":"","code":"dsurvspline( x, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, log = FALSE ) psurvspline( q, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, lower.tail = TRUE, log.p = FALSE ) qsurvspline( p, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, lower.tail = TRUE, log.p = FALSE ) rsurvspline( n, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 ) Hsurvspline( x, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 ) hsurvspline( x, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 ) rmst_survspline( t, gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0, start = 0 ) mean_survspline( gamma, beta = 0, X = 0, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", offset = 0 )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Royston/Parmar spline survival distribution — Survspline","text":"x, q, t Vector times. gamma Parameters describing baseline spline function, described flexsurvspline. may supplied vector number elements equal length knots, case parameters common times. Alternatively matrix may supplied, rows corresponding different times, columns corresponding knots. beta Vector covariate effects. supported ignored since version 2.3, argument removed 2.4. X Matrix covariate values. supported ignored since version 2.3, argument removed 2.4. knots Locations knots axis log time, supplied increasing order. Unlike flexsurvspline, include two boundary knots. additional knots, boundary locations used. one additional knots, boundary knots beyond minimum maximum values log times. flexsurvspline exactly minimum maximum values. may principle supplied matrix, way gamma, applications knots fixed. scale \"hazard\", \"odds\", \"normal\", described flexsurvspline. default knots addition boundaries, model reduces Weibull, log-logistic log-normal respectively. scale must common times. timescale \"log\" \"identity\" described flexsurvspline. spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal. offset extra constant add linear predictor \\(\\eta\\). supported ignored since version 2.3, argument removed 2.4. log, log.p Return log density probability. lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n Number random numbers simulate. start Optional left-truncation time times. returned restricted mean survival conditioned survival time.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Royston/Parmar spline survival distribution — Survspline","text":"dsurvspline gives density, psurvspline gives distribution function, hsurvspline gives hazard Hsurvspline gives cumulative hazard, described flexsurvspline. qsurvspline gives quantile function, computed crude numerical inversion (using qgeneric). rsurvspline generates random survival times using qsurvspline sample uniform random numbers. Due numerical root-finding involved qsurvspline, slow compared typical random number generation functions.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Royston/Parmar spline survival distribution — Survspline","text":"Royston, P. Parmar, M. (2002). Flexible parametric proportional-hazards proportional-odds models censored survival data, application prognostic modelling estimation treatment effects. Statistics Medicine 21(1):2175-2197. Wang W, Yan J (2021). Shape-Restricted Regression Splines R Package splines2. Journal Data Science, 19(3), 498-517.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Royston/Parmar spline survival distribution — Survspline","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survspline.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Royston/Parmar spline survival distribution — Survspline","text":"","code":"## reduces to the weibull regscale <- 0.786; cf <- 1.82 a <- 1/regscale; b <- exp(cf) dweibull(1, shape=a, scale=b) #> [1] 0.1137858 dsurvspline(1, gamma=c(log(1 / b^a), a)) # should be the same #> [1] 0.1137858 ## reduces to the log-normal meanlog <- 1.52; sdlog <- 1.11 dlnorm(1, meanlog, sdlog) #> [1] 0.1407338 dsurvspline(1, gamma = c(-meanlog/sdlog, 1/sdlog), scale=\"normal\") #> [1] 0.1407338 # should be the same"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":null,"dir":"Reference","previous_headings":"","what":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"Probability density, distribution, quantile, random generation, hazard, cumulative hazard, mean restricted mean functions Royston/Parmar spline model, one argument per parameter. equivalent functions parameters collected together single argument, see Survspline.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"","code":"mean_survspline0( gamma0, gamma1, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline1( gamma0, gamma1, gamma2, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline2( gamma0, gamma1, gamma2, gamma3, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline3( gamma0, gamma1, gamma2, gamma3, gamma4, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline4( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline5( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline6( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) mean_survspline7( gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rmst_survspline0( t, gamma0, gamma1, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline1( t, gamma0, gamma1, gamma2, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline2( t, gamma0, gamma1, gamma2, gamma3, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline3( t, gamma0, gamma1, gamma2, gamma3, gamma4, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline4( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline5( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline6( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) rmst_survspline7( t, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots = c(-10, 10), scale = \"hazard\", timescale = \"log\", spline = \"rp\", start = 0 ) dsurvspline0( x, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline1( x, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline2( x, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline3( x, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline4( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline5( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline6( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) dsurvspline7( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", log = FALSE ) psurvspline0( q, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline1( q, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline2( q, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline3( q, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline4( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline5( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline6( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) psurvspline7( q, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline0( p, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline1( p, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline2( p, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline3( p, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline4( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline5( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline6( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) qsurvspline7( p, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\", lower.tail = TRUE, log.p = FALSE ) rsurvspline0( n, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline1( n, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline2( n, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline3( n, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline4( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline5( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline6( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) rsurvspline7( n, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline0( x, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline1( x, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline2( x, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline3( x, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline4( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline5( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline6( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) hsurvspline7( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline0( x, gamma0, gamma1, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline1( x, gamma0, gamma1, gamma2, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline2( x, gamma0, gamma1, gamma2, gamma3, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline3( x, gamma0, gamma1, gamma2, gamma3, gamma4, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline4( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline5( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline6( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" ) Hsurvspline7( x, gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8, knots, scale = \"hazard\", timescale = \"log\", spline = \"rp\" )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"gamma0, gamma1, gamma2, gamma3, gamma4, gamma5, gamma6, gamma7, gamma8 Parameters describing baseline spline function, described flexsurvspline. knots Locations knots axis log time, supplied increasing order. Unlike flexsurvspline, include two boundary knots. additional knots, boundary locations used. one additional knots, boundary knots beyond minimum maximum values log times. flexsurvspline exactly minimum maximum values. may principle supplied matrix, way gamma, applications knots fixed. scale \"hazard\", \"odds\", \"normal\", described flexsurvspline. default knots addition boundaries, model reduces Weibull, log-logistic log-normal respectively. scale must common times. timescale \"log\" \"identity\" described flexsurvspline. spline \"rp\" use natural cubic spline basis described Royston Parmar. \"splines2ns\" use alternative natural cubic spline basis splines2 package (Wang Yan 2021), may better behaved due basis orthogonal. start Optional left-truncation time times. returned restricted mean survival conditioned survival time. x, q, t Vector times. log, log.p Return log density probability. lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n Number random numbers simulate.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"functions go 7 spline knots, 9 parameters.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/Survsplinek.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Royston/Parmar spline survival distribution functions with one argument per parameter — Survsplinek","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Tidy a flexsurv model object — tidy.flexsurvreg","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"Tidy summarizes information components model tidy data frame.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"","code":"# S3 method for flexsurvreg tidy( x, conf.int = FALSE, conf.level = 0.95, pars = \"all\", transform = \"none\", ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"x Output flexsurvreg flexsurvspline, representing fitted survival model object. conf.int Logical. confidence intervals returned? Default FALSE. conf.level confidence level use confidence interval conf.int = TRUE. Default 0.95. pars One \"\", \"baseline\", \"coefs\" parameters, baseline distribution parameters, covariate effects (.e. regression betas), respectively. Default \"\". transform Character vector transformations apply requested pars. Default \"none\", returns pars -. Users can specify one types transformations: \"baseline.real\" transforms baseline distribution parameters real number line used estimation. \"coefs.exp\" exponentiates covariate effects. See Details complete explanation. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"tibble containing columns: term, estimate, std.error, statistic, p.value, conf.low, conf.high, default. statistic p.value provided covariate effects (NA baseline distribution parameters). computed Wald-type test statistics p-values standard normal distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"flexsurvreg models estimate two types coefficients, baseline distribution parameters, covariate effects act baseline distribution. design, flexsurvreg returns distribution parameters scale found relevant d/p/q/r functions. Covariate effects returned log-scale, represents either log-time ratios (accelerated failure time models) log-hazard ratios proportional hazard models. default, tidy() return baseline distribution parameters natural scale covariate effects log-scale. transform baseline distribution parameters real-value number line (scale used estimation), pass character argument \"baseline.real\" transform. get time ratios hazard ratios, pass \"coefs.exp\" transform. transformations may done together submitting arguments character vector.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.flexsurvreg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Tidy a flexsurv model object — tidy.flexsurvreg","text":"","code":"fitg <- flexsurvreg(formula = Surv(futime, fustat) ~ age, data = ovarian, dist = \"gengamma\") tidy(fitg) #> # A tibble: 4 × 5 #> term estimate std.error statistic p.value #> #> 1 mu 11.7 1.66 NA NA #> 2 sigma 0.751 0.244 NA NA #> 3 Q 0.295 0.912 NA NA #> 4 age -0.0875 0.0250 -3.50 0.000467 tidy(fitg, pars = \"coefs\", transform = \"coefs.exp\") #> # A tibble: 1 × 5 #> term estimate std.error statistic p.value #> #> 1 age 0.916 1.03 -3.50 0.000467"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":null,"dir":"Reference","previous_headings":"","what":"Tidy a standsurv object. — tidy.standsurv","title":"Tidy a standsurv object. — tidy.standsurv","text":"function used internally standsurv tidy data.frames automatically returned function.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Tidy a standsurv object. — tidy.standsurv","text":"","code":"# S3 method for standsurv tidy(x, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Tidy a standsurv object. — tidy.standsurv","text":"x standsurv object. ... currently used.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/tidy.standsurv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Tidy a standsurv object. — tidy.standsurv","text":"Returns additional tidy data.frames (tibbles) stored attributes named standpred_at standpred_contrast.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":null,"dir":"Reference","previous_headings":"","what":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"matrix whose \\(r,s\\) entry expected amount time spent state \\(s\\) time-inhomogeneous, continuous-time Markov multi-state process starts state \\(r\\), maximum time \\(t\\). defined integral corresponding transition probability time.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"","code":"totlos.fs( x, trans = NULL, t = 1, newdata = NULL, ci = FALSE, tvar = \"trans\", sing.inf = 1e+10, B = 1000, cl = 0.95, ... )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally, must Markov / clock-forward model, can time-inhomogeneous. See package vignette explanation. x can also list models, one component permitted transition, illustrated msfit.flexsurvreg. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. t Time vector times predict . Must finite. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. Turned default, since computationally intensive. turned , users increase B results reach desired precision. tvar Variable data representing transition type. required x list models. sing.inf singularity observed hazard, example Weibull distribution shape < 1 infinite hazard t=0, workaround, hazard assumed large finite number, sing.inf, time. results sensitive exact value assumed, users make sure adjusting parameter cases. B Number simulations normal asymptotic distribution used calculate variances. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. ... Arguments passed ode deSolve.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"matrix lengths stay \\(T(t)\\), t length 1, list matrices t longer. ci=TRUE, element attributes \"lower\" \"upper\" giving matrices corresponding confidence limits. formatted printing may extracted using attr(). result also attribute P giving transition probability matrices, since unavoidably computed side effect. suppressed printing, can extracted attr(...,\"P\").","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"computed solving second order extension Kolmogorov forward differential equation numerically, using methods deSolve package. equation expressed linear system $$\\frac{dT(t)}{dt} = P(t)$$ $$\\frac{dP(t)}{dt} = P(t) Q(t)$$ solved \\(T(t)\\) \\(P(t)\\) simultaneously, \\(T(t)\\) matrix total lengths stay, \\(P(t)\\) transition probability matrix time \\(t\\), \\(Q(t)\\) transition hazard intensity function \\(t\\). initial conditions \\(T(0) = 0\\) \\(P(0) = \\). Note package msm similar method totlos.msm. totlos.fs give results totlos.msm conditions hold: time--event distribution exponential transitions, thus flexsurvreg model fitted dist=\"exp\", time-homogeneous. msm model fitted exacttimes=TRUE, thus event times known, time-dependent covariates. msm allows exponential piecewise-exponential time--event distributions, flexsurvreg allows flexible models. msm however designed particular panel data, process observed arbitrary times, thus times transition unknown, makes flexible models difficult. function valid Markov (\"clock-forward\") multi-state models, though warning error currently given model Markov. See totlos.simfs equivalent semi-Markov (\"clock-reset\") models.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.fs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Total length of stay in particular states for a fully-parametric,\r\ntime-inhomogeneous Markov multi-state model — totlos.fs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(Tstart, Tstop, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # predict 4 years spent without BOS, 3 years with BOS, before death # As t increases, this should converge totlos.fs(bexp, t=10, trans=tmat) #> [,1] [,2] [,3] #> [1,] 3.749105 2.126570 4.124326 #> [2,] 0.000000 3.518329 6.481671 #> [3,] 0.000000 0.000000 10.000000 totlos.fs(bexp, t=1000, trans=tmat) #> [,1] [,2] [,3] #> [1,] 4.109742 2.956493 992.9338 #> [2,] 0.000000 3.788904 996.2111 #> [3,] 0.000000 0.000000 1000.0000 totlos.fs(bexp, t=c(5,10), trans=tmat) #> $`5` #> [,1] [,2] [,3] #> [1,] 2.892316 1.068225 1.039459 #> [2,] 0.000000 2.776392 2.223608 #> [3,] 0.000000 0.000000 5.000000 #> #> $`10` #> [,1] [,2] [,3] #> [1,] 3.749105 2.126570 4.124326 #> [2,] 0.000000 3.518329 6.481671 #> [3,] 0.000000 0.000000 10.000000 #> # Answers should match results in help(totlos.simfs) up to Monte Carlo # error there / ODE solving precision here, since with an exponential # distribution, the \"semi-Markov\" model there is the same as the Markov # model here"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":null,"dir":"Reference","previous_headings":"","what":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"expected total time spent state semi-Markov multi-state models fitted time--event data flexsurvreg. defined integral transition probability matrix, though analytically possible computed simulation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"","code":"totlos.simfs( x, trans, t = 1, start = 1, newdata = NULL, ci = FALSE, tvar = \"trans\", tcovs = NULL, group = NULL, M = 1e+05, B = 1000, cl = 0.95, cores = NULL )"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"x model fitted flexsurvreg. See msfit.flexsurvreg required form model data. Additionally semi-Markov, time variable represents time since last transition. words response form Surv(time,status). See package vignette explanation. x can also list flexsurvreg models, one component permitted transition, illustrated msfit.flexsurvreg. can constructed fmsm. trans Matrix indicating allowed transitions. See msfit.flexsurvreg. required x list constructed fmsm. t Maximum time predict . start Starting state. newdata data frame specifying values covariates fitted model, transition number. See msfit.flexsurvreg. ci Return confidence interval calculated simulating asymptotic normal distribution maximum likelihood estimates. turned default, since two levels simulation required. turned , users adjust B /M results reach desired precision. simulation M generally vectorised, therefore increasing B usually expensive increasing M. tvar Variable data representing transition type. required x list models. tcovs Predictable time-dependent covariates age, see sim.fmsm. group Optional grouping states. example, four states, group=c(1,1,2,2), totlos.simfs returns expected total time states 1 2 combined, states 3 4 combined. M Number individuals simulate order approximate transition probabilities. Users adjust obtain required precision. B Number simulations normal asymptotic distribution used calculate confidence limits. Decrease greater speed expense accuracy. cl Width symmetric confidence intervals, relative 1. cores Number processor cores used calculating confidence limits repeated simulation. default uses single-core processing.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"expected total time spent state (group states given group) time t, corresponding confidence intervals requested.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"computed simulating large number individuals M using maximum likelihood estimates fitted model function sim.fmsm. Therefore requires random sampling function parametric survival model available: see \"Details\" section sim.fmsm. available built-distributions, though users may need write custom models. Note random sampling method flexsurvspline models currently inefficient, looping M slow. equivalent function time-inhomogeneous Markov models totlos.fs. Note neither functions give errors warnings used wrong type model, results invalid.","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"Christopher Jackson chris.jackson@mrc-bsu.cam.ac.uk.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/totlos.simfs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Expected total length of stay in specific states, from a fully-parametric,\r\nsemi-Markov multi-state model — totlos.simfs","text":"","code":"# BOS example in vignette, and in msfit.flexsurvreg bexp <- flexsurvreg(Surv(years, status) ~ trans, data=bosms3, dist=\"exp\") tmat <- rbind(c(NA,1,2),c(NA,NA,3),c(NA,NA,NA)) # predict 4 years spent without BOS, 3 years with BOS, before death # As t increases, this should converge totlos.simfs(bexp, t=10, trans=tmat) #> 1 2 3 #> 3.744539 2.125464 4.129996 totlos.simfs(bexp, t=1000, trans=tmat) #> 1 2 3 #> 4.127571 2.957678 992.914751"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"Given function matrix arguments, construct equivalent function takes vector arguments defined columns matrix. new function simply uses cbind vector arguments make matrix, calls old one.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"","code":"unroll.function(mat.fn, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"mat.fn function number arguments, matrices. ... series arguments. names define arguments mat.fn matrices. values define vector strings appended names arguments new function. example fn <- unroll.function(oldfn, gamma=1:3, alpha=0:1) make new function fn arguments gamma1,gamma2,gamma3,alpha0,alpha1. Calling fn(gamma1=,gamma2=b,gamma3=c,alpha0=d,alpha1=e) give answer oldfn(gamma=cbind(,b,c),alpha=cbind(d,e))","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"new function, vector arguments.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"usage-in-flexsurv","dir":"Reference","previous_headings":"","what":"Usage in flexsurv","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"used flexsurvspline allow spline models, arbitrary number parameters, fitted using flexsurvreg. ``custom distributions'' facility flexsurvreg expects user-supplied probability density distribution functions one explicitly named argument scalar parameter, given R vectorisation, arguments supplied vector alternative parameter values. However, spline models varying number scalar parameters, determined number knots spline. dsurvspline psurvspline argument called gamma. can supplied matrix, number columns n determined number knots (plus 2), rows referring alternative parameter values. following statements used source flexsurvspline: convert functions arguments gamma0, gamma1,...,gamman, corresponding columns gamma, n = nk-1, arguments format.","code":"dfn <- unroll.function(dsurvspline, gamma=0:(nk-1)) pfn <- unroll.function(psurvspline, gamma=0:(nk-1))"},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/unroll.function.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a function with matrix arguments to a function with vector\r\narguments. — unroll.function","text":"","code":"fn <- unroll.function(ncol, x=1:3) fn(1:3, 1:3, 1:3) # equivalent to... #> [1] 3 ncol(cbind(1:3,1:3,1:3)) #> [1] 3"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":null,"dir":"Reference","previous_headings":"","what":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"Variance-covariance matrix flexsurvreg model","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"","code":"# S3 method for flexsurvreg vcov(object, ...)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"object fitted model object class flexsurvreg, e.g. returned flexsurvreg flexsurvspline. ... arguments (currently unused).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/vcov.flexsurvreg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Variance-covariance matrix from a flexsurvreg model — vcov.flexsurvreg","text":"Variance-covariance matrix estimated parameters, scale estimated (positive parameters log scale).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":null,"dir":"Reference","previous_headings":"","what":"Weibull distribution in proportional hazards parameterisation — WeibullPH","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"Density, distribution function, hazards, quantile function random generation Weibull distribution proportional hazards parameterisation.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"","code":"dweibullPH(x, shape, scale = 1, log = FALSE) pweibullPH(q, shape, scale = 1, lower.tail = TRUE, log.p = FALSE) qweibullPH(p, shape, scale = 1, lower.tail = TRUE, log.p = FALSE) hweibullPH(x, shape, scale = 1, log = FALSE) HweibullPH(x, shape, scale = 1, log = FALSE) rweibullPH(n, shape, scale = 1)"},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"x, q Vector quantiles. shape Vector shape parameters. scale Vector scale parameters. log, log.p logical; TRUE, probabilities p given log(p). lower.tail logical; TRUE (default), probabilities \\(P(X \\le x)\\), otherwise, \\(P(X > x)\\). p Vector probabilities. n number observations. length(n) > 1, length taken number required.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"dweibullPH gives density, pweibullPH gives distribution function, qweibullPH gives quantile function, rweibullPH generates random deviates, HweibullPH retuns cumulative hazard hweibullPH hazard.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"Weibull distribution proportional hazards parameterisation `shape' parameter `scale' parameter m density given $$f(x) = m x^{-1} exp(- m x^) $$ cumulative distribution function \\(F(x) = 1 - exp( -m x^)\\), survivor function \\(S(x) = exp( -m x^)\\), cumulative hazard \\(m x^\\) hazard \\(m x^{-1}\\). dweibull base R alternative 'accelerated failure time' (AFT) parameterisation shape scale b. shape parameter \\(\\) versions. scale parameters related \\(b = m^{-1/}\\), equivalently m = b^-. survival modelling, covariates typically included linear model log scale parameter. Thus, proportional hazards model, coefficients model \\(m\\) interpreted log hazard ratios. AFT model, covariates \\(b\\) interpreted time acceleration factors. example, doubling value covariate coefficient \\(beta=log(2)\\) give half expected survival time. coefficients related log hazard ratios \\(\\gamma\\) \\(\\beta = -\\gamma / \\).","code":""},{"path":[]},{"path":"http://chjackson.github.io/flexsurv-dev/reference/WeibullPH.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Weibull distribution in proportional hazards parameterisation — WeibullPH","text":"Christopher Jackson ","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-23-2024-04-21","dir":"Changelog","previous_headings":"","what":"Version 2.3 (2024-04-21)","title":"Version 2.3 (2024-04-21)","text":"CRAN release: 2024-04-21 Analytic Hessian calculation models possible, , Weibull, Gompertz, exponential, spline models hazard odds scales. Analytic gradient calculation Weibull proportional hazards models. Vignette now firmly warns using flexsurv time-dependent covariates (#176). Weighted likelihood relative survival models now implemented consistently models, weighted sum individual log-likelihoods. standsurv now returns results order times t given user, consistency summary.flexsurvreg. Quantiles standardised survival now available standsurv. Non-default factor contrasts now handled. pmatrix.simfs can now accept vector times t tidy output option. BIC AICc functions added. Column name predict() output changed \"time\" \"eval_time\", consistency tidymodels update. Default value t now chosen hr_flexsurvreg. coxsnell.flexsurvreg now handles delayed entry. Warning given name location parameter included ancillary part model specification. Fix computing quantiles custom distributions (#187). Thank contributed code version: @mikesweeting @stephematician @ndunnewind @mattwarkentin @hfrick @kkmann; reported issues: @anddis @irtimmins @sbihorel @zou-ims @aghaynes @huftis @mafed @hezht3 @sebffischer (anyone else reported issues via email).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-222-2023-01-31","dir":"Changelog","previous_headings":"","what":"Version 2.2.2 (2023-01-31)","title":"Version 2.2.2 (2023-01-31)","text":"CRAN release: 2023-02-01 Allow unicode characters vignette, satisfy R CMD check r-devel.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-221-2022-12-22","dir":"Changelog","previous_headings":"","what":"Version 2.2.1 (2022-12-22)","title":"Version 2.2.1 (2022-12-22)","text":"CRAN release: 2022-12-22 New simulate.flexsurvreg method simulate data fitted flexsurvreg flexsurvspline model. Thanks Mark Clements help . Fix bug summary() method type = \"quantile\" \"median\" left-truncation prediction (start > 0). Correction examples interpretation Cox-Snell residuals.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-22-2022-06-16","dir":"Changelog","previous_headings":"","what":"Version 2.2 (2022-06-16)","title":"Version 2.2 (2022-06-16)","text":"CRAN release: 2022-06-17 New function standsurv survival hazards standardised observed distribution covariates. Contributed Michael Sweeting mikesweeting79@gmail.com. See new vignette . New function hr_flexsurvreg compute hazard ratio fitted flexsurvreg flexsurvspline model function time, confidence intervals. summary.flexsurvreg rewritten make cleaner faster. User-visible changes: Custom summary functions summary.flexsurvreg must now vectorised. new argument cross specifies whether compute summaries combinations times t covariate values, covariate values matched corresponding times t, custom summary functions. Covariate names tidy=FALSE now consistently don’t include spaces. Better handling NAs summary prediction functions. Thanks Matthew Warkentin. New functions Cox-Snell residuals: coxsnell_flexsurvreg residuals(…, type=“coxsnell”). rmst_generic, mean_survspline, rmst_survspline related functions (e.g. mean_survspline1) handle alternative parameter values vectorised way. Allow output functions work models stripped data x$data <- NULL, possible.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-21-2021-09-13","dir":"Changelog","previous_headings":"","what":"Version 2.1 (2021-09-13)","title":"Version 2.1 (2021-09-13)","text":"CRAN release: 2021-09-13 Fix bug affected models baseline hazard offsets exponential, Weibull, Gompertz hazard/odds-based spline models, convergence may falsely reported due incorrect likelihood derivatives. New vignette section better help page documentation relative survival models. start parameter added predict.flexsurvreg. New function pdf_flexsurmix fitted density function flexsurvmix model. Fix tidy method one-parameter exponential models. Fixes h/Hgamma h/Hlnorm log = TRUE. Minor numerical improvements h/H functions distributions. Bug fix simfs_bytrans transitions don’t happen. NaNs produced warnings occur less often fitting.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-20-2021-02-22","dir":"Changelog","previous_headings":"","what":"Version 2.0 (2021-02-22)","title":"Version 2.0 (2021-02-22)","text":"CRAN release: 2021-02-22 new class multi-state models based mixtures (Larson Dinse 1985). new vignette multi-state modelling describes model class contrasts standard (cause-specific hazards) multi-state models. Different parametric families now supported different transitions multi-state models. New function fmsm allows list flexsurvreg objects associated particular transition structure matrix, create multi-state model. New function simfinal_fmsm summarise times probabilities final absorbing events multi-state models, using simulation. features right-truncated data. Individual-level right-truncation times supported new “rtrunc” argument flexsurvreg flexsurvspline. comparable non-parametric estimator right-truncated data provided new function, survrtrunc. Alternative parametric estimators, make use time initiating event, provided new function, flexsurvrtrunc. new vignette describes properties different built-parametric distributions detail. qgeneric now vectorised, thanks vuniroot function imported rstpm2 package Mark Clements. massively boosts speed rsurvspline, hence speeding simulations spline-based multi-state models. pmatrix.fs can now calculate transition probabilities conditionally transition one subset states. “tidy” argument pmatrix.fs tidy data frame output. “tidy” argument sim.fmsm returning simulations tidy data frame format one row per transition, associated function simfs_bytrans. Bootstrapping function bootci.fmsm made available users get confidence intervals / distributions flexsurv model output functions. Parallel processing capability bootstrap confidence intervals. Distribution mean functions Royston-Parmar model named like dsurvspline2, psurvspline4 , one argument per parameter, rather parameters collected single argument, going 7 knots / 9 parameters. Return value pars.fmsm now list rather matrix, even model family transition. summary.flexsurvreg given new argument “na.action” control whether missing values “newdata” dropped. Defaults producing summaries NA missing values, previously missing values dropped. S3 methods added generics defined broom package. functions create tidy data frames containing results fitted models. new functions tidy.flexsurvreg, glance.flexsurvreg, augment.flexsurvreg. S3 methods added predict residuals generics. predict.flexsurvreg full support model outcomes supported summary.flexsurvreg. residuals.flexsurvreg currently supports naive difference observed survival predicted mean, neglecting censoring. Case weights accounted nonparametric survival cumulative hazard estimates plot.flexsurvreg. Thanks https://github.com/andbe.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-111-2019-03-18","dir":"Changelog","previous_headings":"","what":"Version 1.1.1 (2019-03-18)","title":"Version 1.1.1 (2019-03-18)","text":"CRAN release: 2019-03-18 New type=“quantiles” type=“link” summary.flexsurvreg. Thanks Leonardo Marques contribution. Allow different covariates per transition multi-state models supplied list flexsurvreg objects. Thanks David McAllister contribution. Bug fix qllogis lower.tail=FALSE. Bug fix likelihood events observed. Bug fix “ylim” argument plot method survival cumulative hazard. Allow dynamic symbols C code. Various minor code doc fixes, see github commit history.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-11-2017-03-27","dir":"Changelog","previous_headings":"","what":"Version 1.1 (2017-03-27)","title":"Version 1.1 (2017-03-27)","text":"CRAN release: 2017-03-27 Substantial speed improvements fitting built-models, implementing PDFs CDFs C++. Thanks Paul Metcalfe contributing . Results may therefore differ previous versions edge cases. result package now depends Rcpp. Mean, median restricted mean included built-functions summary.flexsurvreg. Thanks Jordan Amdahl contribution. Documentation migrated roxygen. Thanks Paul Metcalfe contribution. Various minor bug fixes, see github commits.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-102-2016-09-26","dir":"Changelog","previous_headings":"","what":"Version 1.0.2 (2016-09-26)","title":"Version 1.0.2 (2016-09-26)","text":"Bug fix: “start” ignored plot.flexsurvreg. Thanks Ruth Keogh. Built-distribution names now case-insensitive. Thanks Jordan Amdahl. Fix Weibull hazard function avoid numeric instability. Thanks Jordan Amdahl. Fix hsurvspline t includes 0. Thanks Jordan Amdahl. Vectorised parameters supported qgeneric.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-101-2016-05-31","dir":"Changelog","previous_headings":"","what":"Version 1.0.1 (2016-05-31)","title":"Version 1.0.1 (2016-05-31)","text":"Bug fix: covariates labelled wrongly summary.flexsurvreg tidy output. Thanks Owain Saunders.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-100-2016-05-10","dir":"Changelog","previous_headings":"","what":"Version 1.0.0 (2016-05-10)","title":"Version 1.0.0 (2016-05-10)","text":"CRAN release: 2016-05-11 Version number bumped 1.0.0 accompany publication vignette Journal Statistical Software.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-071-2016-03-24","dir":"Changelog","previous_headings":"","what":"Version 0.7.1 (2016-03-24)","title":"Version 0.7.1 (2016-03-24)","text":"CRAN release: 2016-03-24 Slightly efficient likelihood calculations, removed spurious warning likelihood interval censoring. Tests modified work latest (current) testthat.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-07-2015-11-13","dir":"Changelog","previous_headings":"","what":"Version 0.7 (2015-11-13)","title":"Version 0.7 (2015-11-13)","text":"CRAN release: 2015-11-13 flexsurvspline now allows log cumulative hazard (alternatives) modelled spline function time instead log time. routine generating initial values flexsurvspline improved. now obeys constraint log cumulative hazard increasing, thus avoiding errors optim() wasn’t satisfied. Cox regression used fallback initialise covariate effects fails. result, flexsurv now depends “quadprog” package. dweibullPH related functions give Weibull distribution proportional hazards parameterisation, “weibullPH” supported built-model flexsurvreg. Option summary.flexsurvreg return tidy data frame. New “logliki” component model objects, containing vector log-likelihoods observation estimated fixed parameters. Fix various bugs supplying “newdata” summary functions (github issue #7). behaviour now like predict.lm, e.g. variables newdata originally factors supplied factor character, numeric. Fix bug prevented plots drawn categorical covariates default. Fix bugs spline models data censored, data interval censored (github issue #3). Fix bugs subsetting flexsurvspline (github issue #6).","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-06-2015-04-13","dir":"Changelog","previous_headings":"","what":"Version 0.6 (2015-04-13)","title":"Version 0.6 (2015-04-13)","text":"CRAN release: 2015-04-14 CRAN release. Also includes changes Version 0.5.1. Full support multi-state models fitted list independent transition-specific models. New function pars.fmsm return transition-specific parameters multi-state models. Bug fix empirical hazard plots categorical covariates. Thanks Milan Bouchet-Valat.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-051-2015-02-24","dir":"Changelog","previous_headings":"","what":"Version 0.5.1 (2015-02-24)","title":"Version 0.5.1 (2015-02-24)","text":"github-release. Log-logistic distribution built flexsurvreg, distribution functions provided. Bug fix tcovs option semi-Markov model simulation. “digits” argument supported default model print function. passed “format” format parameter estimates, defaults 3. Bug fix “events” printed output interval censored data. Thanks Sabrina Russo. pgompertz returns Inf q=Inf, even parameters denoting “living forever”, since CDF P(X <= q) P(X < q). affected fits Gompertz distribution.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-05-2014-09-22","dir":"Changelog","previous_headings":"","what":"Version 0.5 (2014-09-22)","title":"Version 0.5 (2014-09-22)","text":"CRAN release: 2014-09-22 Major new release, version number bumped 0.3 0.5. New package vignettes: user guide vignette examples. Development moved r-forge https://github.com/chjackson/flexsurv-dev. Spline models ancillary covariates: Major rewrite flexsurvspline. now works calling flexsurvreg custom distribution written dynamically. Models can now include covariate effects vary spline functions time, including covariates “gamma1” parameters. New argument “anc” flexsurvreg, alternative preferred way modelling covariates ancillary parameters. New general utility “unroll.function” converts function matrix arguments equivalent function vector arguments. new flexsurvspline works unrolling “dsurvspline”. Quantile, random number, hazard cumulative hazard functions spline distribution. Autogeneration initial values flexsurvspline now accounts left-truncation. Thanks Ana Borges report. new modelling features: Several utilities parametric multi-state modelling, including transition probabilities simulation (“pmatrix.fs”, “totlos.fs”, “sim.fmsm”,“pmatrix.simfs”, “totlos.simfs”). “msfit.flexsurvreg” method also gives cumulative transition-specific hazards format “mstate” package. Interval censoring supported Surv() response. Relative survival models, using “bhazard” argument flexsurvreg specify expected mortality rate. flexsurvreg now uses survreg internally fit Weibull, exponential log-normal models, unless left-truncation. Custom distributions: Custom distributions can defined hazard function. can optionally supplemented cumulative hazard function, otherwise obtained numerical integration. custom distributions specified density, cumulative distribution can now omitted, calculated numerical integration. New arguments “dfns” “aux” flexsurvreg, can used supply custom distribution functions arguments pass . Document density functions custom distributions need “log” argument. Documented supply derivatives custom distributions use optimisation. Output functions: New “newdata” argument summary.flexsurvreg plot.flexsurvreg easier way supplying covariate values. User-defined summary functions can used summary.flexsurvreg plot.flexsurvreg alternative survival, hazard cumulative hazard. New function “normboot.flexsurvreg” simulate parameters asymptotic normal distribution estimates. Used representing uncertainty function parameters. summary.flexsurvreg can called ci=FALSE omit confidence intervals. “start” argument defaults 0 prediction times summary.flexsurvreg. Bug fix summary.flexsurvreg left-truncated models, returning probabilities > 1 truncation time. New model.frame model.matrix methods extract data fitted flexsurvreg objects. Accept vector X summary.flexsurvreg, give informative error X wrong format. Thanks Mark Danese. Extra arguments can passed muhaz plot.muhaz plot.flexsurvreg(…,type=“hazard”,…) Printed output: Use format() signif() printing flexsurvreg objects, avoid spurious zero significant figures. Thanks Kenneth Chen. Standard errors included printed output flexsurvreg, parameters optimised natural log scales (includes built-distributions). Distribution functions: Bug fix rgengamma Q=0 (log-normal) sigma equal 1. Don’t warn shape parameters exactly zero generalized gamma F, just give NaN. basis() fss() functions natural cubic spline basis made available users.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-031-2014-02-14","dir":"Changelog","previous_headings":"","what":"Version 0.3.1 (2014-02-14)","title":"Version 0.3.1 (2014-02-14)","text":"R-forge release. Distribution functions tidied , making special value handling vectorisation consistent. Hazard cumulative hazard functions supported distributions. Vectors different col, lwd lty can passed plot.flexsurvreg multiple fitted lines. Thanks Julia Sandberg report.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-03-2014-01-19","dir":"Changelog","previous_headings":"","what":"Version 0.3 (2014-01-19)","title":"Version 0.3 (2014-01-19)","text":"CRAN release: 2014-01-20 CRAN release. Includes changes 0.2.1 0.2.3.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-023-2013-10-09","dir":"Changelog","previous_headings":"","what":"Version 0.2.3 (2013-10-09)","title":"Version 0.2.3 (2013-10-09)","text":"R-forge release. Parameters location parameter can now covariates flexsurvreg. Thanks Milan Bouchet-Valat help . subset na.action arguments flexsurvreg flexsurvspline. coef, vcov confint methods fitted model objects. Distribution functions generalized gamma, generalized F, Gompertz, now allow parameters vectorised. Bug fix analytic derivatives Weibull. Restored print output introduced 0.1.2 accidentally removed 0.1.5.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-022-2013-07-26","dir":"Changelog","previous_headings":"","what":"Version 0.2.2 (2013-07-26)","title":"Version 0.2.2 (2013-07-26)","text":"R-forge release. Case weights supported flexsurvreg flexsurvspline.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-021-2013-07-03","dir":"Changelog","previous_headings":"","what":"Version 0.2.1 (2013-07-03)","title":"Version 0.2.1 (2013-07-03)","text":"R-forge release. Default left truncation times set wrongly user-supplied times summary.flexsurvreg, giving wrong confidence intervals. now default 0. Confidence intervals set 1 t=0 spline models. Thanks Paul Pynsent. dgompertz,dgengamma,dgengamma.orig,dgenf,dgenf.orig fixed return -Inf instead 0 density zero log=TRUE. Thanks Gao Zheng.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-02-2013-05-13","dir":"Changelog","previous_headings":"","what":"Version 0.2 (2013-05-13)","title":"Version 0.2 (2013-05-13)","text":"CRAN release: 2013-05-15 New summary() method fitted flexsurvreg flexsurvspline model objects gives fitted survival, cumulative hazard hazard curves, confidence intervals mosly computed simulation method. allows plot.flexsurvreg plot confidence intervals fitted survival, hazard cumulative hazard. Left-truncated survival observations supported flexsurvreg flexsurvspline. New psurvspline dsurvspline functions giving distribution density function spline model. Analytic derivatives used optimisation spline (odds hazard scale, normal), exponential, Weibull Gompertz models. Default BFGS optimisation method, uses derivatives available much faster, instead Nelder-Mead. Work around NaN warnings spline models presumably due parameters violating implicit constraints. “knots” specified, boundary knots set min/max uncensored times, times, match results “k” specified. Thanks Paul Pynsent.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-015-2012-08-29","dir":"Changelog","previous_headings":"","what":"Version 0.1.5 (2012-08-29)","title":"Version 0.1.5 (2012-08-29)","text":"CRAN release: 2012-08-29 Data now stored fitted flexsurvreg flexsurvspline model objects, avoiding environment search errors allowing package functions called within functions. Thanks Hanna Daniel report. Gompertz documentation clarified case chance living forever. qgompertz rgompertz now return Inf cases, warning, instead NaN. Thanks Michael Sweeting.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-014-2012-03-22","dir":"Changelog","previous_headings":"","what":"Version 0.1.4 (2012-03-22)","title":"Version 0.1.4 (2012-03-22)","text":"CRAN release: 2012-03-24 maxt argument plot.flexsurvreg. Plots longer complain data named “dat”. Corrected wrong bug fix Version 0.1.3 transforming parameter estimates output fixedpars=TRUE. AIC penalty corrected models fixed parameters. qgengamma corrected parameter Q<0. Thanks Benn Ackley.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-013-2012-01-17","dir":"Changelog","previous_headings":"","what":"Version 0.1.3 (2012-01-17)","title":"Version 0.1.3 (2012-01-17)","text":"CRAN release: 2012-01-17 longer complains invalid initial values zero survival times. Don’t transform parameter estimates output fixedpars=TRUE. Checking functions distribution utilities don’t complain vectorised parameter values.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-012-2011-11-08","dir":"Changelog","previous_headings":"","what":"Version 0.1.2 (2011-11-08)","title":"Version 0.1.2 (2011-11-08)","text":"CRAN release: 2011-11-09 Initial CRAN release. features print output flexsurvreg flexsurvspline models.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-011-2011-04-19","dir":"Changelog","previous_headings":"","what":"Version 0.1.1 (2011-04-19)","title":"Version 0.1.1 (2011-04-19)","text":"Fix drop=FALSE bug flexsurvspline.inits caused flexsurvspline fail single covariates.","code":""},{"path":"http://chjackson.github.io/flexsurv-dev/news/index.html","id":"version-01-2011-03-14","dir":"Changelog","previous_headings":"","what":"Version 0.1 (2011-03-14)","title":"Version 0.1 (2011-03-14)","text":"Initial release","code":""}]