데이터에서 간단한 선형 함수와 감마 분포 잡음 항의 매개 변수를 추정하고 싶습니다. (참고 : 이는 후속 질문 인 https://stats.stackexchange.com/questions/88676/regression-with-unidirectional-noise이지만 간소화되고 구현에 특화된 것임). "단방향"잡음을 이용한 회귀
내가 다음과 같이 pymc 사용하여 이러한 매개 변수 추정 시도 : 다음과 같이 보이는
import numpy as np
np.random.seed(0)
size = 200
true_intercept = 1
true_slope = 2
# Generate observed data
x_ = np.linspace(0, 1, size)
true_regression_line = true_intercept + true_slope * x_ # y = a + b*x
noise_ = np.random.gamma(shape=1.0, scale=1.0, size=size)
y_ = true_regression_line + noise_
그러나
from pymc import Normal, Gamma, Uniform, Model, MAP
# Define priors
intercept = Normal('intercept', 0, tau=0.1)
slope = Normal('slope', 0, tau=0.1)
alpha = Uniform('alpha', 0, 2)
beta = Uniform('beta', 0, 2)
noise = Gamma('noise', alpha=alpha, beta=beta, size=size)
# Give likelihood > 0 to models where the regression line becomes larger than
# any of the datapoint
y = Normal('y', mu=intercept + slope * x_ + noise, tau=100,
observed=True, value=y_)
# Perform MAP fit of model
model = Model([alpha, beta, intercept, slope, noise])
map_ = MAP(model)
map_.fit()
이 나에게주는 다음과 같이 내 관측 데이터를 생성 한 말 실제 값에서 멀리 떨어져있는 예상치 :
- Interc EPT : 참 : 1.000, 기준 : 3.281
- 기울기 : 참 : 2.000, 기준 : 내가 잘못 뭔가를하고 -3.400
암을?
나는 주로 MAP.fit()에서 사용되는 최적화 프로그램의 문제점이라는 것을 알아 냈습니다. – frisbee