data{ int n; //number of samples int N; //dimension of x int M; //dimension of y matrix[n,N] x; matrix[n,M] y; real lambda; //hyperparameter of A } parameters{ matrix[N,M] A; } transformed parameters{ real squared_error; squared_error <- 0; for(i in 1:n){ squared_error <- squared_error + dot_self(y[i]-x[i]*A); } } model{ for(i in 1:N){ for(j in 1:M){ increment_log_prob(-lambda*fabs(A[i][j]));// for lasso // increment_log_prob(-lambda*pow(A[i][j],2)); //for ridge } } increment_log_prob(-squared_error); }