割合に対する回帰モデル
割合など,
出力分布に正規分布を仮定したくない
そんなわけで出力分布にはベータ分布を仮定する。
x の関数で表現する
ベータ分布のパラメータを例えば正規分布ベースの回帰モデルであれば、正規分布の平均パラメータを
同様に,ベータ分布は2種類の形状パラメータ
このままでは後段の分析の品質に影響するので、ちょっとしたトリックを導入して別の定式化を与える。
2種類のパラメータ
が確認できる。
都合よく
一方
余談だが、ベータ分布の分散が
参考までに、Numpyro実装
import jax
import jax.numpy as jnp
import numpyro
import numpyro.distributions as dist
def model(X, y=None):
num_features = X.shape[1]
ln_phi = numpyro.sample("ln_phi", dist.StudentT(df=4, loc=0, scale=1))
weights = numpyro.sample("weights", dist.Normal(0, 10).expand([num_features]))
intercept = numpyro.sample("intercept", dist.Normal(0, 10))
mean = jnp.dot(X, weights) + intercept
with numpyro.plate("data", X.shape[0]):
mu = jax.nn.sigmoid(mean)
phi = jnp.exp(ln_phi)
a = mu * phi
b = (1 - mu) * phi
numpyro.sample("obs", dist.Beta(a, b), obs=y)
Discussion