def d3logpdf_dlink3(self, link_f, y, Y_metadata=None):
<EOL>c = np.zeros_like(link_f)<EOL>if Y_metadata is not None and '<STR_LIT>' in Y_metadata.keys():<EOL><INDENT>c = Y_metadata['<STR_LIT>']<EOL><DEDENT>y_link_f = y/link_f<EOL>y_link_f_r = y_link_f**self.r<EOL>censored = c*(self.r*y_link_f_r*(((self.r**<NUM_LIT:2>)*(-(y_link_f_r - <NUM_LIT:1>))) + <NUM_LIT:3>*self.r*(y_link_f_r + <NUM_LIT:1>) + <NUM_LIT:2>*(y_link_f_r + <NUM_LIT:1>)**<NUM_LIT:2>)<EOL>/ ((link_f**<NUM_LIT:3>)*(y_link_f_r + <NUM_LIT:1>)**<NUM_LIT:3>))<EOL>uncensored = (<NUM_LIT:1>-c)*(<NUM_LIT:2>*self.r*(-(self.r**<NUM_LIT:2>)*(y_link_f_r -<NUM_LIT:1>)*y_link_f_r + <NUM_LIT:3>*self.r*(y_link_f_r + <NUM_LIT:1>)*y_link_f_r + (y_link_f_r - <NUM_LIT:1>)*(y_link_f_r + <NUM_LIT:1>)**<NUM_LIT:2>)<EOL>/ ((link_f**<NUM_LIT:3>)*(y_link_f_r + <NUM_LIT:1>)**<NUM_LIT:3>))<EOL>d3lik_dlink3 = censored + uncensored<EOL>return d3lik_dlink3<EOL>
Third order derivative log-likelihood function at y given link(f) w.r.t link(f)

.. math::


:param link_f: latent variables link(f)
:type link_f: Nx1 array
:param y: data
:type y: Nx1 array
:param Y_metadata: includes censoring information in dictionary key 'censored'
:returns: third derivative of likelihood evaluated at points f
:rtype: Nx1 array