สแตน (โดยเฉพาะอย่างยิ่ง rstan) มีสิ่งอำนวยความสะดวกในตัวเพื่อสร้างการกระจายหลังที่ทำนายได้หรือไม่?
มันไม่ยากที่จะสร้างการกระจายจากสแตนพอดี แต่ฉันไม่อยากประดิษฐ์ล้อ
สแตน (โดยเฉพาะอย่างยิ่ง rstan) มีสิ่งอำนวยความสะดวกในตัวเพื่อสร้างการกระจายหลังที่ทำนายได้หรือไม่?
มันไม่ยากที่จะสร้างการกระจายจากสแตนพอดี แต่ฉันไม่อยากประดิษฐ์ล้อ
คำตอบ:
ตามคู่มือผู้ใช้สแตน v2.2.0 (หน้า 361–362):
ในสแตนการจำลองหลังสามารถสร้างได้สองวิธี วิธีแรกคือการปฏิบัติต่อตัวแปรที่คาดการณ์ไว้เป็นพารามิเตอร์และจากนั้นกำหนดการกระจายของพวกเขาในรูปแบบบล็อก แนวทางที่สองซึ่งทำงานกับตัวแปรที่ไม่ต่อเนื่องคือการสร้างข้อมูลที่จำลองแบบโดยใช้เครื่องกำเนิดตัวเลขสุ่มในบล็อกปริมาณที่สร้างขึ้น
ฉันมักจะใช้หลัง
ต่อไปนี้ไม่ใช่คำตอบที่ละเอียด แต่หวังว่ามันจะดีกว่าไม่มีคำตอบ ในแอปพลิเคชันของฉันเองฉันใช้การตรวจสอบแบบคาดการณ์ล่วงหน้าเพื่อตรวจสอบการทำนายแบบจำลองสำหรับการวัดแบบพึ่งพาเดี่ยวซึ่งถูกสร้างขึ้นจากแบบจำลองเชิงเส้น สิ่งนี้ง่ายใน JAGS แต่ค่อนข้างทึบแสงในสแตน
data{
int<lower=1> N; // no. rows
real x[N]; // predictor
real y[N]; // dependent variable
}
parameters{
real alpha; // int.
real beta; // slope
real<lower=0> sigma_e; // resid. var.
real y_tilde[N]; // post. pred.
}
model{
real mu[N];
for(i in 1:N){
mu[i] <- alpha + beta*x[i];
}
y ~ normal(mu,sigma_e); //lik
y_tilde ~ normal(mu,sigma_e);
alpha ~ normal(0,5);
beta ~ normal(0,5);
sigma_e ~ cauchy(0,5);
}
generated quantities{
real minimum;
real maximum;
minimum <- min(y_tilde);
maximum <- max(y_tilde);
}
ต้องมีวิธีที่ดีกว่าในการทำเช่นนี้ดังนั้นใครบางคนโปรดโพสต์คำตอบที่ดีกว่า แต่โค้ดด้านบนสร้างการกระจายการคาดการณ์หลัง N หนึ่งอันสำหรับแต่ละการสังเกต ฉันทำสิ่งนี้เพื่อให้สามารถพบการกระจายตัวของ extrema ที่สามารถคาดการณ์ได้ แต่ถ้าคุณสนใจเฉพาะปริมาณการทำนายหลังy_tilde
คุณอาจทำได้โดยไม่ต้องมีทั้งหมด สำหรับชุดข้อมูลขนาดใหญ่การแก้ปัญหาด้านบนนั้นเห็นได้ชัดว่าใช้พื้นที่มากเกินไป