with pm.Model() as hierarchical_model:
# Hyperpriors for group nodes
mu_a = pm.Normal('mu_a', mu=0., sigma=100)
sigma_a = pm.HalfNormal('sigma_a', 5.)
mu_b = pm.Normal('mu_b', mu=0., sigma=100)
sigma_b = pm.HalfNormal('sigma_b', 5.)
mu_c = pm.Normal('mu_c', mu=0., sigma=100)
sigma_c = pm.HalfNormal('sigma_c', 5.)
mu_d = pm.Normal('mu_d', mu=0., sigma=100)
sigma_d = pm.HalfNormal('sigma_d', 5.)
mu_e = pm.Normal('mu_e', mu=0., sigma=100)
sigma_e = pm.HalfNormal('sigma_e', 5.)
mu_f = pm.Normal('mu_f', mu=0., sigma=100)
sigma_f = pm.HalfNormal('sigma_f', 5.)
# Intercept for each county, distributed around group mean mu_a
# Above we just set mu and sd to a fixed value while here we
# plug in a common group distribution for all a and b (which are
# vectors of length n_counties).
a = pm.Normal('a', mu=mu_a, sigma=sigma_a, shape=n_school)
# Intercept for each county, distributed around group mean mu_a
b = pm.Normal('b', mu=mu_b, sigma=sigma_b, shape=n_school)
c = pm.Normal('c', mu=mu_c, sigma=sigma_c, shape=n_school)
d = pm.Normal('d', mu=mu_d, sigma=sigma_d, shape=n_school)
e = pm.Normal('e', mu=mu_e, sigma=sigma_e, shape=n_school)
f = pm.Normal('f', mu=mu_f, sigma=sigma_f, shape=n_school)
# Model error
eps = pm.HalfCauchy('eps', 5.)
test_score_est = a[school_idx] + b[school_idx]*df.student_ses.values+ c[school_idx]*df.student_iq.values+ d[school_idx]*df.school_avrg._ses.values+ e[school_idx]*df.school_avrg._iq.values+ f[school_idx]*df.student_gender_0.values
# Data likelihood
test_like = pm.Normal('test_like', mu=test_score_est,
sigma=eps, observed=df.test_score)
我得到以下错误
OUTPUT: IndexError: index 211 is out of bounds for size 211
**你好。我得到了这个错误的分层遗憾。n_school=211为什么我会犯这样的错误?如果你能帮助我,我将不胜感激。提前感谢大家
下面我提供了有关如何计算n_学校和学校idx的信息。**
school_idx=df.school_id.values
n_school=len(df.school_id.unique())
OUTPUT= n_school=211
Python是0索引的,在类似列表的数据结构中有211个元素,内容将在索引中
[0,1,2,..,210]
基于此,很可能在某个地方存在大小不匹配相关问题 更多 >
编程相关推荐