2017-04-19 14 views
2

スタンのスキュー正規分布から引き出す方法はありますか?そうでない場合は、正規分布から引き出して、スキューを通常に変換する方法はありますか?スタンを使用したスキュー正規分布からの引き抜き

UPDATE

私はスタンマニュアルでy~skew_normal(mu, sigma, alpha)を見つけましたが、私はインスタンスのパラメータ

mu=1, sigma=10, alpha=-1000

で1000の値をサンプリングするとき、私はまた、いくつかの-infの値を取得します。なぜどんなアイデア?

UPDATE 2

マイtesting.stan

data{ 
    real mu; 
    real sigma; 
    real alpha; 
} 
model{ 

} 
generated quantities{ 
    real temp; 

    temp = skew_normal_rng(mu, sigma, alpha); 

} 

、その後、私のtesting.Rファイル

sdata <- list(
    mu=1, 
    sigma=10, 
    alpha=-1000 
) 

model <- stan_model("stan code//testing.stan") 

system.time(
    samples <- sampling(model,data=sdata,seed=42, 
         chain=1,algorithm="Fixed_param", 
         iter=10000,thin=1,control=list(max_treedepth=9) 
) 
) 

object <- rstan::extract(samples) 
# hist(object$temp,breaks=100) 
# plot(density(object$temp)) 
# mean(is.finite(object$temp)) 
# sum(!is.finite(object$temp)) 
sort(object$temp) 

そしてsort(object$temp)を実行した後、私はいくつかの-infの値を取得します。このモデルを実行

+0

ランダム描画をしたい場合は、 'generated quantity'ブロックで' skew_normal_rng'を使います。あなたの質問が実際には「スキューノーマルと思われるデータ生成プロセスのパラメータをどのように見積もることができますか? 'skew_normal'サンプリング文または' skew_normal_lpdf'関数を使う必要があります。 –

+0

@BenGoodrich私は質問 – quant

+0

をOKに更新しました。それはバグです。 –

答えて

2

parameters { real y; } model { y ~ skew_normal(1, 10, -1000); }

私が描く無限得ることはありません。私は数多くの相違がありますが、それは数値が不安定であることを意味します。これは、たとえ私が最初のステップサイズを小さくして目標受け入れ率を上げたとしても当てはまります。

-1000の代わりに-10のスキューパラメータを使用すると、その問題は解決します。

極端なスキュー値に対してさらに安定させるために内部実装を変更する方法があるかもしれませんが、-1000では数値的に問題があります。

+0

質問 – quant

+0

を更新しました。この問題はスキューパラメータ-4 – quant

関連する問題