আপনি কীভাবে বায়েশিয়ান আনোভা এবং আরগ্রেশন করবেন? [বন্ধ]


14

আমার কাছে একটি মোটামুটি সহজ ডেটাসেট রয়েছে যার মধ্যে একটি স্বতন্ত্র ভেরিয়েবল, একটি নির্ভরশীল ভেরিয়েবল এবং একটি শ্রেণিবদ্ধ ভেরিয়েবল থাকে। আমার যেমন aov()এবং এর ঘন ঘন পরীক্ষা চালানোর প্রচুর অভিজ্ঞতা আছে lm()তবে আর এগুলিতে কীভাবে তাদের বেয়েসিয়ান সমতুল্য সম্পাদন করা যায় তা আমি বুঝতে পারি না।

আমি প্রথম দুটি ভেরিয়েবলের উপর বায়সীয় লিনিয়ার রিগ্রেশন এবং গ্রুপিং হিসাবে শ্রেণিবদ্ধ ভেরিয়েবল ব্যবহার করে বৈচিত্রের একটি বায়সিয়ান বিশ্লেষণ চালাতে চাই, তবে আর এর সাথে কীভাবে এটি করা যায় তার কোনও সাধারণ উদাহরণ আমি পাই না। উভয়? অতিরিক্তভাবে, বায়সিয়ান বিশ্লেষণ দ্বারা আউটপুট পরিসংখ্যানগুলি ঠিক কী এবং তারা কী প্রকাশ করে?

আমি পরিসংখ্যান সম্পর্কে খুব পারদর্শী নই, তবে conকমত্য বলে মনে হচ্ছে যে পি-মানগুলির সাথে প্রাথমিক পরীক্ষাগুলি ব্যবহার করা এখন কিছুটা বিভ্রান্ত বলে মনে করা হয়েছে এবং আমি চালিয়ে যাওয়ার চেষ্টা করছি। শুভেচ্ছা।


2
বায়েশিয়ান ডেটা অ্যানালাইসিস করা: আর এবং বিইউজিএস সহ একটি টিউটোরিয়ালটি একটি ভাল শুরু হতে পারে। এই সম্পর্কিত প্রশ্নে বায়েশিয়ান আনোভা-র কিছু লিঙ্ক রয়েছে: বায়েশিয়ান দ্বি-গুণক আনোভা । আমি আপনার শেষ বাক্যটির সাথে পরিষ্কার নই, যদিও পি-মান ব্যাখ্যা করার পরিবর্তে আমরা সাধারণত প্রভাব আকারের পরিমাপ ব্যবহার করার পরামর্শ দিই ।
chl

উত্তর:


12

আপনি যদি প্রচুর বায়েশিয়ান পরিসংখ্যান করার ইচ্ছা রাখেন তবে আপনি BUGS / JAGS ভাষা শেখার জন্য সহায়ক মনে করবেন, যা R2OpenBUGS বা R2WinBUGS প্যাকেজগুলির মাধ্যমে আরে অ্যাক্সেস করা যায়।

তবে একটি দ্রুত উদাহরণের জন্য যার জন্য BUGS সিনট্যাক্স বোঝার দরকার নেই, আপনি "বেয়েসেম" প্যাকেজটি ব্যবহার করতে পারেন যা উত্তরোত্তর বিতরণ থেকে স্যাম্পলিংয়ের জন্য রানাইরেগগীবস ফাংশন রয়েছে। আপনি বর্ণিত মত ডেটা সহ একটি উদাহরণ এখানে .....

library(bayesm)

podwt <- structure(list(wt = c(1.76, 1.45, 1.03, 1.53, 2.34, 1.96, 1.79, 1.21, 0.49, 0.85, 1, 1.54, 1.01, 0.75, 2.11, 0.92), treat = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("I", "U"), class = "factor"), mus = c(4.15, 2.76, 1.77, 3.11, 4.65, 3.46, 3.75, 2.04, 1.25, 2.39, 2.54, 3.41, 1.27, 1.26, 3.87, 1.01)), .Names = c("wt", "treat", "mus"), row.names = c(NA, -16L), class = "data.frame")

# response
y1 <- podwt$wt

# First run a one-way anova

# Create the design matrix - need to insert a column of 1s
x1 <- cbind(matrix(1,nrow(podwt),1),podwt$treat)

# data for the Bayesian analysis
dt1 <- list(y=y1,X=x1)

# runiregGibbs uses a normal prior for the regression coefficients and 
# an inverse chi-squared prior for va

# mean of the normal prior. We have 2 estimates - 1 intercept 
# and 1 regression coefficient
betabar1 <- c(0,0)

# Pecision matrix for the normal prior. Again we have 2
A1 <- 0.01 * diag(2)
# note this is a very diffuse prior

# degrees of freedom for the inverse chi-square prior
n1 <- 3  

# scale parameter for the inverse chi-square prior
ssq1 <- var(y1) 

Prior1 <- list(betabar=betabar1, A=A1, nu=n1, ssq=ssq1)

# number of iterations of the Gibbs sampler
iter <- 10000  

# thinning/slicing parameter. 1 means we keep all all values
slice <- 1 

MCMC <- list(R=iter, keep=slice)

sim1 <- runiregGibbs(dt1, Prior1, MCMC)

plot(sim1$betadraw)
    plot(sim1$sigmasqdraw)

summary(sim1$betadraw)
    summary(sim1$sigmasqdraw)

# compare with maximum likelihood estimates:
fitpodwt <- lm(wt~treat, data=podwt)
summary(fitpodwt)
anova(fitpodwt)


# now for ordinary linear regression

x2 <- cbind(matrix(1,nrow(podwt),1),podwt$mus)

dt2 <- list(y=y1,X=x2)

sim2 <- runiregGibbs(dt1, Prior1, MCMC)

summary(sim1$betadraw)
    summary(sim1$sigmasqdraw)
plot(sim$betadraw)
    plot(sim$sigmasqdraw)

# compare with maximum likelihood estimates:
summary(lm(podwt$wt~mus,data=podwt))


# now with both variables

x3 <- cbind(matrix(1,nrow(podwt),1),podwt$treat,podwt$mus)

dt3 <- list(y=y1,X=x3)

# now we have an additional estimate so modify the prior accordingly

betabar1 <- c(0,0,0)
A1 <- 0.01 * diag(3)
Prior1 <- list(betabar=betabar1, A=A1, nu=n1, ssq=ssq1)

sim3 <- runiregGibbs(dt3, Prior1, MCMC)

plot(sim3$betadraw)
    plot(sim3$sigmasqdraw)
summary(sim3$betadraw)
    summary(sim3$sigmasqdraw)

# compare with maximum likelihood estimates:
summary(lm(podwt$wt~treat+mus,data=podwt))

আউটপুট থেকে নিষ্কাশনগুলি হ'ল: আনোভা: বয়েসিয়ান:

Summary of Posterior Marginal Distributions 
Moments 
   mean std dev num se rel eff sam size
1  2.18    0.40 0.0042    0.99     9000
2 -0.55    0.25 0.0025    0.87     9000

Quantiles 
  2.5%    5%   50%   95%  97.5%
1  1.4  1.51  2.18  2.83  2.976
2 -1.1 -0.97 -0.55 -0.13 -0.041

LM ():

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.6338     0.1651   9.895 1.06e-07 ***
treatU       -0.5500     0.2335  -2.355   0.0336 *  

সাধারণ লিনিয়ার রিগ্রেশন: বেয়েসিয়ান:

Summary of Posterior Marginal Distributions 
Moments 
  mean std dev  num se rel eff sam size
1 0.23   0.208 0.00222     1.0     4500
2 0.42   0.072 0.00082     1.2     4500

Quantiles
   2.5%    5%  50%  95% 97.5%
1 -0.18 -0.10 0.23 0.56  0.63
2  0.28  0.31 0.42 0.54  0.56

LM ():

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.23330    0.14272   1.635    0.124    
mus          0.42181    0.04931   8.554 6.23e-07 ***

2 covariate মডেল: বেয়েসিয়ান:

Summary of Posterior Marginal Distributions 
Moments 
   mean std dev  num se rel eff sam size
1  0.48   0.437 0.00520     1.3     4500
2 -0.12   0.184 0.00221     1.3     4500
3  0.40   0.083 0.00094     1.2     4500

Quantiles 
   2.5%    5%   50%  95% 97.5%
1 -0.41 -0.24  0.48 1.18  1.35
2 -0.48 -0.42 -0.12 0.18  0.25
3  0.23  0.26  0.40 0.53  0.56

LM ():

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.36242    0.19794   1.831   0.0901 .  
treatU      -0.11995    0.12688  -0.945   0.3617    
mus          0.39590    0.05658   6.997 9.39e-06 ***

যা থেকে আমরা দেখতে পাচ্ছি যে ফলাফলগুলি সাধারণভাবে তুলনাযোগ্য, যেমনটি এই সাধারণ মডেলগুলি এবং ছড়িয়ে পড়া প্রিয়ার সাথে প্রত্যাশিত। অবশ্যই এটি এমসিএমসি ডায়াগনস্টিক প্লটগুলিও পরিদর্শন করার উপযুক্ত - উত্তরীয় ঘনত্ব, ট্রেস প্লট, অটো পারস্পরিক সম্পর্ক - যা আমি উপরেও কোড দিয়েছি (প্লটগুলি দেখানো হয়নি)।


সুতরাং আমি পৃথকভাবে দুটি পৃথক ভেরিয়েবলের বিরুদ্ধে লিনিয়ার রিগ্রেশন চালিয়েছিলাম - উভয়ই ঘন ঘন LM () পরীক্ষাটি ব্যবহার করে মোটামুটি ভাল (~ 0.01) পি-মানগুলির সাথে সম্পাদন করে। বায়সিয়ান পরীক্ষার মাধ্যমে, এই ভেরিয়েবলগুলির মধ্যে একটি ইন্টারসেপ্ট এবং opeালের জন্য খুব অনুরূপ এবং তাৎপর্যপূর্ণ ফলাফল উত্পন্ন করে, তবে অন্যটির জন্য, যা আসলে কিছুটা কম পি-মান রয়েছে, বায়েসিয়ান ফলাফল বন্যভাবে পৃথক (এবং পরিসংখ্যানগতভাবে তুচ্ছ) মান দেয়। এর অর্থ কি হতে পারে কোন ধারণা?
বার্জভ

বার্জভকে আপনার একটি নতুন প্রশ্ন পোস্ট করা উচিত এবং আপনার কোড এবং (যদি সম্ভব হয়) আপনার ডেটা অন্তর্ভুক্ত করা উচিত।
পি সেল্লাজ

2

বয়েসফ্যাক্টর প্যাকেজ (এখানে প্রদর্শিত: http://bayesfactorpcl.r-forge.r-project.org/ এবং CRAN- এ উপলব্ধ) বাইয়েশিয়ান আনোভা এবং রিগ্রেশনকে অনুমতি দেয়। এটি মডেল তুলনার জন্য বেয়েস ফ্যাক্টরগুলি ব্যবহার করে এবং অনুমানের জন্য উত্তর স্যাম্পলিংয়ের অনুমতি দেয়।


1

এটি LearnBayesপ্যাকেজের সাথে বেশ সুবিধাজনক ।

fit <- lm(Sepal.Length ~ Species, data=iris, x=TRUE, y=TRUE)
library(LearnBayes)
posterior_sims <- blinreg(fit$y, fit$x, 50000)

blinregফাংশন দ্বারা ডিফল্টরূপে noninformative পূর্বে ব্যবহার করে এবং এই একটি অনুমান উৎপাদ খুব frequentist এক বন্ধ।

অনুমান :

> # frequentist 
> fit$coefficients
      (Intercept) Speciesversicolor  Speciesvirginica 
            5.006             0.930             1.582 
> # Bayesian
> colMeans(posterior_sims$beta)
      X(Intercept) XSpeciesversicolor  XSpeciesvirginica 
         5.0066682          0.9291718          1.5807763 

আত্মবিশ্বাসের অন্তর :

> # frequentist
> confint(fit)
                      2.5 %   97.5 %
(Intercept)       4.8621258 5.149874
Speciesversicolor 0.7265312 1.133469
Speciesvirginica  1.3785312 1.785469
> # Bayesian
> apply(posterior_sims$beta, 2, function(x) quantile(x, c(0.025, 0.975)))
      X(Intercept) XSpeciesversicolor XSpeciesvirginica
2.5%      4.862444          0.7249691          1.376319
97.5%     5.149735          1.1343101          1.783060
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.