У меня есть этот пример кода, который я использую в Python с пакетом pymc3
import pymc3
import numpy as np
size = 100
# Predictor variable
X1 = np.random.randn(size)
X2 = np.random.randn(size) * 0.2
X3 = np.random.randn(size) * 2
alpha, sigma = 1, 1
beta = [1, 2.5]
Y = alpha + beta[0]*X1 + beta[1]*X2 + np.random.randn(size)*sigma
basic_model = pymc3.Model()
with basic_model:
# Priors for unknown model parameters
alpha = pymc3.Normal('alpha', mu=0, sd=1)
beta = pymc3.Normal('beta', mu=0, sd=1, shape=3)
sigma = pymc3.HalfNormal('sigma', sd=1)
# Expected value of outcome
mu = alpha + beta[0]*X1 + beta[1]*X2 + beta[2]*X3
Y_obs = pymc3.Normal('Y_obs', mu=mu, sd=sigma, observed = Y)
trace = pymc3.sample(100,chains = 1, step = pymc3.NUTS())
a = trace['alpha']
b = trace['beta']
print (trace['alpha'])
print (trace['beta'])
print (a[0] + b[0][0]*X1[0] + b[0][1]*X2[0] + b[0][2]*X3[0]) #mu
Я ожидал, что если mu = 0, только бета и альфа константы будут меняться? И я получаю анализ, но результат никогда не равен 0 или даже близко к 0? Например, если альфа отрицательна, другие константы или по крайней мере одна должна быть положительной, поэтому каждое вычисление (мю) должно быть 0 или близко к 0 ?. Если я пытаюсь установить mu = 0, я получаю ошибку SyntaxError: can't assign to literal