def d2logpdf_dlink2_dr(self, inv_link_f, y, Y_metadata=None):
<EOL>c = np.zeros_like(y)<EOL>if Y_metadata is not None and '<STR_LIT>' in Y_metadata.keys():<EOL><INDENT>c = Y_metadata['<STR_LIT>']<EOL><DEDENT>link_f = inv_link_f<EOL>y_link_f = y/link_f<EOL>y_link_f_r = y_link_f**self.r<EOL>log_y_link_f = np.log(y) - np.log(link_f)<EOL>y_link_f_2r = y_link_f**(<NUM_LIT:2>*self.r)<EOL>denom2 = (link_f**<NUM_LIT:2>)*(<NUM_LIT:1> + y_link_f_r)**<NUM_LIT:2><EOL>denom3 = (link_f**<NUM_LIT:2>)*(<NUM_LIT:1> + y_link_f_r)**<NUM_LIT:3><EOL>censored = c*(-((y_link_f_r + self.r + <NUM_LIT:1>)*y_link_f_r)/denom2<EOL>-(self.r*(y_link_f_r + self.r + <NUM_LIT:1>)*y_link_f_r*log_y_link_f)/denom2<EOL>-(self.r*y_link_f_r*(y_link_f_r*log_y_link_f + <NUM_LIT:1>))/denom2<EOL>+(<NUM_LIT:2>*self.r*(y_link_f_r + self.r + <NUM_LIT:1>)*y_link_f_2r*log_y_link_f)/denom3<EOL>)<EOL>uncensored = (<NUM_LIT:1>-c)*(-(<NUM_LIT:2>*self.r*y_link_f_r + y_link_f_2r - <NUM_LIT:1>)/denom2<EOL>-(self.r*(<NUM_LIT:2>*y_link_f_r + <NUM_LIT:2>*self.r*y_link_f_r*log_y_link_f + <NUM_LIT:2>*y_link_f_2r*log_y_link_f)/denom2)<EOL>+(<NUM_LIT:2>*self.r*(<NUM_LIT:2>*self.r*y_link_f_r + y_link_f_2r - <NUM_LIT:1>)*y_link_f_r*log_y_link_f)/denom3<EOL>)<EOL>d2logpdf_dlink2_dr = censored + uncensored<EOL>return d2logpdf_dlink2_dr<EOL>
Gradient of the hessian (d2logpdf_dlink2) w.r.t shape parameter

.. math::

:param inv_link_f: latent variables link(f)
:type inv_link_f: Nx1 array
:param y: data
:type y: Nx1 array
:param Y_metadata: includes censoring information in dictionary key 'censored'
:returns: derivative of hessian evaluated at points f and f_j w.r.t variance parameter
:rtype: Nx1 array