Провести квантильную регрессию с несколькими зависимыми переменными в R - PullRequest
2 голосов
/ 19 апреля 2020

Я заинтересован в проведении многомерной регрессии в R, изучая влияние группирующей переменной (2 уровня) на несколько зависимых переменных. Однако из-за того, что мои данные не являются нормальными, а две группы не имеют однородных отклонений, я вместо этого использую квантильную регрессию. Я использую функцию rq из набора инструментов Quantreg, чтобы сделать это.

Мой код выглядит следующим образом

 # Generate some fake data
   DV = matrix(rnorm(40*5),ncol=5) #construct matrix for dependent variables

   IV =  matrix(rep(1:2,20)) #matrix for grouping factor

   library(quantreg)

   model.q = rq(DV~IV,
             tau = 0.5)

Я получаю следующее сообщение об ошибке при запуске:

Error in y - x %*% z$coef : non-conformable arrays
In addition: Warning message:
In rq.fit.br(x, y, tau = tau, ...) : Solution may be nonunique

Я полагаю, это связано с тем, что у меня несколько DV, так как модель работает нормально, когда я пытаюсь использовать DV с одним столбцом. Есть ли определенный c способ форматирования данных? Или, может быть, есть еще одна функция, которую я смогу использовать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Если у вас есть несколько ответов, вам, скорее всего, понадобится:

DV = matrix(rnorm(40*5),ncol=5) #construct matrix for dependent variables
IV =  matrix(rep(1:2,20)) #matrix for grouping factor
library(quantreg)
rqs.fit(x=IV, y=DV, tau=0.5, tol = 0.0001)

К сожалению, документации о том, как это работает, на самом деле не так много. Я могу обновить, если найду его

2 голосов
/ 19 апреля 2020

Если вы просто хотите запустить несколько регрессий, каждая с одним и тем же набором независимых переменных, но с другой зависимой переменной, вы можете написать функцию, а затем применить ее ко всем столбцам вашей DV матрицы и сохранить модели в списке:

reg <- function(col_number) {
  model.q <- rq(DV[, col_number] ~ IV, tau = 0.5)
}
model_list <- lapply(1:ncol(DV), reg)

Однако, как указано в комментариях, возможно, вам нужна многомерная модель, учитывающая корреляцию результата - но тогда я не думаю, что метод rq было бы уместно

...