You received this message because you are subscribed to a topic in the Google Groups "Stan users mailing list" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/stan-users/hn4W_p8j3fs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to stan-users+...@googlegroups.com.
import numpy as npimport matplotlib.pyplot as pltimport pystan
# model predicting weight and height from waist size and shoe size.
# fake dataN = 100 # number per group# menheight_m = np.random.normal(5.7, 0.3, N)shoe_size_m = height_m * 3.5 + np.random.normal(0,0.5,N) - 10weight_m = height_m ** 2.8 + (np.random.gamma(3,2,N) - 2 ** 2) * 18waist_size_m = weight_m ** 0.33 * height_m + 4 + np.random.normal(0,0.5,N)is_male_m = np.ones(N)# womenheight_w = np.random.normal(5.2, 0.3, N)shoe_size_w = height_w * 3.4 + np.random.normal(0,0.5,N) - 10weight_w = height_w ** 2.8 + (np.random.gamma(3,2,N) - 2 ** 2) * 10 + 20waist_size_w = weight_w ** 0.33 * height_w + np.random.normal(0,0.7,N)is_male_w = np.ones(N) + 1
height = np.append(height_m, height_w)shoe_size = np.append(shoe_size_m, shoe_size_w)weight = np.append(weight_m, weight_w)waist_size = np.append(waist_size_m, waist_size_w)group = np.append(is_male_m, is_male_w).astype(int)
y = np.matrix([list(height), list(np.log(weight))]).Tx = np.matrix([list(waist_size), list(shoe_size)]).T
model_dat = ({'N':len(y), 'J': np.shape(x)[1], 'K': np.shape(y)[1], 'L': len(np.unique(group)), 'y': y, 'x': x, 'random': group, })
model_code = """ data { int<lower=0> N; //rows of data int<lower=1> J; // number of covariates int<lower=1> K; // number of responses int<lower=1> L; // number of groups vector[J] x[N]; // design matrix (predictors) vector[K] y[N]; // response (outcomes) int<lower=1, upper=L> random[N]; } parameters { vector[K] intercept; // Population intercept matrix[K,J] beta; // Population slope parameters cholesky_factor_corr[K] omega; cholesky_factor_corr[L] omega_u; vector<lower=0>[K] sigma; // population standard deviation vector[L] u; // random intercepts vector<lower=0>[L] sigma_u; // random intercepts SD } model { vector[K] mu[N]; matrix[K,K] Sigma; matrix[L,L] Sigma_u; vector[L] zeros; Sigma <- diag_pre_multiply(sigma, omega); Sigma_u <- diag_pre_multiply(sigma_u, omega_u); for (l in 1:L) zeros[l] <- 0; u ~ multi_normal_cholesky(zeros, Sigma_u); for (n in 1:N) mu[n] <- beta * x[n] + intercept + u[random[N]]; // Priors to_vector(beta) ~ normal(0, 5); omega ~ lkj_corr_cholesky(4); omega_u ~ lkj_corr_cholesky(4); sigma ~ cauchy(0, 2.5); sigma_u ~ cauchy(0, 2.5); // Data Model y ~ multi_normal_cholesky(mu, Sigma); } """
fit = pystan.stan(model_code=model_code, data=model_dat, iter=1000, chains=2, model_name='height_weight', sample_file='/Users/username/Desktop/sample') mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhatintercept[0] 6.57 2.76 10.7 -8.2 2.41 3.61 6.47 41.43 15.0 1.15intercept[1] 7.01 2.76 10.7 -7.76 2.82 4.06 6.94 41.86 15.0 1.15beta[0,0] 0.01 2.0e-4 2.9e-3 7.4e-3 0.01 0.01 0.02 0.02 223.0 1.01beta[1,0] 0.08 2.2e-4 3.4e-3 0.07 0.07 0.08 0.08 0.08 231.0 1.0beta[0,1] 0.19 6.3e-4 9.4e-3 0.17 0.18 0.19 0.2 0.21 223.0 1.01beta[1,1] -0.14 7.7e-4 0.01 -0.16 -0.14 -0.14 -0.13 -0.11 223.0 1.0omega[0,0] 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1000.0 nanomega[1,0] -0.2 4.5e-3 0.07 -0.33 -0.25 -0.2 -0.15 -0.07 231.0 1.0omega[0,1] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 nanomega[1,1] 0.98 9.4e-4 0.01 0.94 0.97 0.98 0.99 1.0 227.0 1.0omega_u[0,0] 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1000.0 nanomega_u[1,0] -0.01 0.02 0.33 -0.64 -0.26 -0.01 0.24 0.6 252.0 1.0omega_u[0,1] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 nanomega_u[1,1] 0.94 4.4e-3 0.07 0.73 0.92 0.97 0.99 1.0 278.0 1.0sigma[0] 0.13 5.0e-4 7.1e-3 0.12 0.13 0.13 0.14 0.15 200.0 1.0sigma[1] 0.16 5.2e-4 8.3e-3 0.15 0.16 0.16 0.17 0.18 252.0 1.01u[0] -0.59 1.23 8.52 -25.04 -1.77 0.01 1.65 18.21 48.0 1.0u[1] -3.19 2.76 10.7 -38.04 -3.08 -0.22 1.0 11.58 15.0 1.15sigma_u[0] 7.01 1.53 13.79 0.16 1.26 2.88 6.59 43.86 81.0 1.04sigma_u[1] 7.46 2.01 12.4 0.1 1.11 2.71 7.84 44.05 38.0 1.04lp__ 565.99 0.47 3.33 558.57 563.81 566.2 568.46 571.71 51.0 1.05>>> fit.plot()Traceback (most recent call last): File "<stdin>", line 1, in <module> File "stanfit4height_weight_2bb6f32b402d0b58a5f60e9816a2700b_3413209832667885730.pyx", line 491, in stanfit4height_weight_2bb6f32b402d0b58a5f60e9816a2700b_3413209832667885730.StanFit4Model.plot (/var/folders/b1/zqkx5fbx7z933zhdmdbxn3s00000gn/T/tmpQ06aBv/stanfit4height_weight_2bb6f32b402d0b58a5f60e9816a2700b_3413209832667885730.cpp:9487) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pystan/plots.py", line 19, in traceplot return plots.traceplot(fit.extract(), pars, **kwargs) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pystan/external/pymc/plots.py", line 41, in traceplot kdeplot_op(ax[i, 0], d) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pystan/external/pymc/plots.py", line 60, in kdeplot_op ax.plot(x, density(x)) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/stats/kde.py", line 204, in evaluate raise ValueError(msg)ValueError: points have dimension 1, dataset has dimension 1000I am also having this issue for some of my parameters in PyStan. Rhat = nan, but n_eff=iterations.
mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat
omega[0,0] 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1000.0 nanomega[1,0] -0.2 4.5e-3 0.07 -0.33 -0.25 -0.2 -0.15 -0.07 231.0 1.0omega[0,1] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 nanomega[1,1] 0.98 9.4e-4 0.01 0.94 0.97 0.98 0.99 1.0 227.0 1.0omega_u[0,0] 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1000.0 nanomega_u[1,0] -0.01 0.02 0.33 -0.64 -0.26 -0.01 0.24 0.6 252.0 1.0omega_u[0,1] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 nanomega_u[1,1] 0.94 4.4e-3 0.07 0.73 0.92 0.97 0.99 1.0 278.0 1.0
I am also having this issue for some of my parameters in PyStan. Rhat = nan, but n_eff=iterations.
mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat
omega[0,0] 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1000.0 nanomega[1,0] -0.2 4.5e-3 0.07 -0.33 -0.25 -0.2 -0.15 -0.07 231.0 1.0omega[0,1] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 nanomega[1,1] 0.98 9.4e-4 0.01 0.94 0.97 0.98 0.99 1.0 227.0 1.0omega_u[0,0] 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1000.0 nanomega_u[1,0] -0.01 0.02 0.33 -0.64 -0.26 -0.01 0.24 0.6 252.0 1.0omega_u[0,1] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1000.0 nanomega_u[1,1] 0.94 4.4e-3 0.07 0.73 0.92 0.97 0.99 1.0 278.0 1.0
Thanks. So I assume this is ok then? I get better Rhat with a bigger sample size, so that is good.