Мне нужно выполнить байесовскую линейную регрессию (используя пакет переосмысления), которая требует, чтобы моя категориальная переменная была числовой (я думаю), поэтому я пытаюсь создать фиктивные переменные, чтобы различные категории были представлены (0,1,2,3 ...).Я смоделировал некоторые данные ниже, чтобы показать вам, как выглядят мои данные.Имейте в виду, что мои фактические данные содержат гораздо больше категориальных переменных, которые представлены здесь, поэтому использование набора функций ifelse было бы не идеальным:
#simulated data
X <- data.frame(
Longest.axis = rnorm(50,10,5),
Time..hrs. = round(runif(50,0,4)),
Strain = sapply(1:50,function(x) {ifelse(x<12,"Msmeg_2788","Msmeg_WT")}),
Item.Name = sapply(1:50,
function(x)
{ifelse(x<6,"Q109.jpg",
ifelse(x<20,"Q340.jpg",
ifelse(x<40,"Q11.jpg","Q230.jpg")
)
)}
)
)
И ниже я покажу свою попытку создания фиктивных переменных:
#create dummy variables
Straindummy <- model.matrix(X$Strain)
Item.Namedummy <- model.matrix(X$Item.Name)
возвращает следующую ошибку:
Error: $ operator is invalid for atomic vectors
И вот моя попытка сделать многомерную байесовскую линейную регрессию на тот случай, если вам понадобится предложить то, что мне следует сделать:
library(rethinking)
model <- map(
alist(
X$Longest.Axis ~ dnorm(mu,sigma),
mu <- a + b1*Straindummy+b2*Item.Namedummy+b3*X$Time..hrs.,
a ~ dnorm(10,10),
b1 ~ dnorm(0,1),
b2 ~ dnorm(0,1),
b3 ~ dnorm(0,1),
sigma ~ dunif(0,10)
),
data = X )
Спасибо, если можете предложить любую помощь!