Extrapolation problem
Vlad-Karpov opened this issue · comments
Hello
Can you help me?
I don't understand how to do that:
/**
- y = Q1 * x + Q0
- Q1=1/2
- Q0=1/6
- real data
- x 1 2 3
- y 4/6 7/6 10/6
- suppose Q1 and Q0 unknown
- and
- input data (random observe)
- x 1 2 3
- y 1 1/2 2
- need to find Q1 and Q0
*/
class LineEx {
val Q1: Uniform = Uniform(-10.0, 10.0)
val Q0: Uniform = Uniform(-10.0, 10.0)
val e1 = Normal(fx(Q1, Q0, 1.0), 0.5)
val e2 = Normal(fx(Q1, Q0, 2.0), 0.5)
val e3 = Normal(fx(Q1, Q0, 3.0), 0.5)
def fx(q1: Element[Double], q0: Element[Double], x: Double): Element[Double] = {
q1 * Constant(x) ++ q0
}
def resolve(): Array[Double] = {
e1.observe(1.0)
e2.observe(0.5)
e3.observe(2.0)
val likliHood = e1 * e2 * e3
val priorDistribution = Q1 * Q0
val mg = MetropolisHastings(ProposalScheme.default, likliHood * priorDistribution)
mg.start()
val r = Array(
mg.computeExpectation(Q1, (d: Double) => {
println(s"Q1=${d}")
d
}),
mg.computeExpectation(Q0, (d: Double) => {
println(s"Q0=${d}")
d
})
)
mg.stop()
mg.kill()
r
}
}
this code doesn't work
thanks!