rstanarm()のベイジアンリニアモデルの別の変数の値がどのように変化するかを示したいと考えています。私はモデルを適合させることができ、各パラメータの推定値を見るために後部から引き出すことができますが、他の変化や関連する不確実性として、相互作用における1つの変数の影響のある種のプロットを与える方法は明確ではありません(すなわち、限界効果プロット)。以下は私の試みである。この(線形、ガウス、アイデンティティのリンク、無インターセプト)の場合ベイジアンモデルの相互作用効果をプロットする(rstanarmを使用)
library(rstanarm)
# Set Seed
set.seed(1)
# Generate fake data
w1 <- rbeta(n = 50, shape1 = 2, shape2 = 1.5)
w2 <- rbeta(n = 50, shape1 = 3, shape2 = 2.5)
dat <- data.frame(y = log(w1/(1-w1)),
x = log(w2/(1-w2)),
z = seq(1:50))
# Fit linear regression without an intercept:
m1 <- rstanarm::stan_glm(y ~ 0 + x*z,
data = dat,
family = gaussian(),
algorithm = "sampling",
chains = 4,
seed = 123,
)
# Create data sets with low values and high values of one of the predictors
dat_lowx <- dat
dat_lowx$x <- 0
dat_highx <- dat
dat_highx$x <- 5
out_low <- rstanarm::posterior_predict(object = m1,
newdata = dat_lowx)
out_high <- rstanarm::posterior_predict(object = m1,
newdata = dat_highx)
# Calculate differences in posterior predictions
mfx <- out_high - out_low
# Somehow get the coefficients for the other predictor?
申し訳ありませんが、私はここに何を見ているのか分かりません。 dmu_dxへの割り当ては、後部からの各ドローの限界効果を計算しているようです。それは問題ありませんが、平均的な限界効果です。しかし、「yからのzへのzの増加の効果」を指定したい場合は、dmu_dx1 < - post [、1] + post [、3]%*%t( dmu_dx2 < - post [、1] + post [、3]%*%t(rep(b、nrow(x)))を引いた後、diff < - dmu_dx2 - dmu_dx2 – user3614648
'dmu_dx'(または' dmu_dz')に代入すると、それぞれに1つのマージン効果が作成されます(つまり、 '' dmu_dx'') 'dat'を参照し、' colnames(dmu_dx) 'に同じ値を代入すると、 'mcmc_intervals'の縦軸にその値が入ります。これは本当に連続するプレディクタの_marginal_効果(瞬時変化率)に対して有効です。ダミー変数の変更の事後分布を0から1またはより一般的に 'a'と' b'としたい場合は、あなたが提案する行に沿って行うことができます。 –