Hello,

I am trying to implement univariate skew-t log-likelihood. There are some topics on this subject here in this forum and I am following the ideas I read.

Univariate skew-t pdf has the following expression an is implemented in R package “sn”:

I wrote this code for the function:

functions{

real skew_t_lpdf(vector x, real xi, real omega, real alpha){

vector[num_elements(x)] prob;

real lprob;

real z;

real zc;

real nu;

nu = 5;

for (i in 1:num_elements(x)){

z = (x[i]-xi)/omega;

zc = z*alpha*sqrt((nu+1)/(nu + pow(z, 2)));

prob[i] = student_t_lpdf(x[i] | nu, xi, omega) + student_t_lcdf(zc | nu+1, 0, 1);

}

lprob = sum(prob);

return lprob;

}

}

I dropped constants and it seems to work fine with simulated data. However, if I change arguments in student_t_lpdf, everything goes wrong and estimates far from what would be expected.

Instead of using student_t_lpdf(x[i] | nu, xi, omega), I changed for student_t_lpdf(z | nu, 0, 1). I can’t understand this behavior.

Can anyone help me with this issue? Do I need to provide more code?

Thanks!