Как найти разницу в среднем с помощью команды MCMCregress?

#r #mcmc

#r #mcmc

Вопрос:

Я пытаюсь выяснить, как найти разницу в средних значениях для двух категориальных переменных с помощью MCMCregress и построить графики плотности.

Мой код

 library(MCMCpack)
data("crabs") 
out <- MCMCregress(sex~sp , data = data, family=binomial)
summary(out)
 

Я продолжаю получать сообщение об ошибке-

 Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, : NA/NaN/Inf in 'y'
 

Что я должен сделать, чтобы исправить это?

Ответ №1:

Я заметил, что sex переменная равна a factor . Вы можете просто преобразовать factor в numeric , и ваш код будет работать. Вот код,

 library(MCMCpack)
data("crabs") 
out <- MCMCregress(as.numeric(sex)~sp , data = crabs, family=binomial)
summary(out)

Iterations = 1001:11000
Thinning interval = 1 
Number of chains = 1 
Sample size per chain = 10000 

1. Empirical mean and standard deviation for each variable,
   plus standard error of the mean:

                  Mean      SD  Naive SE Time-series SE
(Intercept)  1.5002783 0.05052 0.0005052      0.0005052
spO         -0.0003147 0.07202 0.0007202      0.0007202
sigma2       0.2551607 0.02597 0.0002597      0.0002637

2. Quantiles for each variable:

               2.5%      25%        50%     75%  97.5%
(Intercept)  1.4016  1.46639  1.5005847 1.53420 1.5996
spO         -0.1433 -0.04842 -0.0009755 0.04696 0.1420
sigma2       0.2091  0.23688  0.2534471 0.27180 0.3105
 

Комментарии:

1. Хорошо, спасибо, это сработало. Можете ли вы объяснить это мне дальше?

2. @tako: MCMCregress предлагается для линейной регрессии с ошибками нормального типа (например, для непрерывных результатов), то есть переменная ответа должна быть числовой. В вашем примере sex это категориальная переменная с «M» и «F». Таким образом, мы должны преобразовать их в числовые, иначе вы получите сообщение об ошибке. Также обратите внимание, что для категориальных результатов с двумя категориями линейная регрессия и логистическая регрессия дадут одинаковый вывод. То есть family=binomial и family=normal в приведенном выше коде будет такой же вывод.

3. @tako: поскольку приведенный выше код сработал, пожалуйста, рассмотрите возможность предоставления голоса вверх, нажав на стрелку вверх рядом с ответом.