def logpdf_link(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>link_f = np.clip(link_f, <NUM_LIT>, <NUM_LIT>)<EOL>y_r = np.clip(y**self.r, <NUM_LIT>, <NUM_LIT>)<EOL>link_f_r = np.clip(link_f**self.r, <NUM_LIT>, <NUM_LIT>)<EOL>y_link_f_r = np.clip(y_r / link_f_r, <NUM_LIT>, <NUM_LIT>)<EOL>uncensored = (<NUM_LIT:1>-c)*(np.log(self.r) + (self.r-<NUM_LIT:1>)*np.log(y) - self.r*np.log(link_f) - <NUM_LIT:2>*np.log1p(y_link_f_r))<EOL>censored = (c)*(-np.log1p(y_link_f_r))<EOL>return uncensored + censored<EOL>
Log Likelihood Function given 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: likelihood evaluated for this point
:rtype: float