Я пытаюсь вызвать rq() пакета квант пакета внутри функции. Ниже приведено упрощенное объяснение моей проблемы.R: вызов функции rq() внутри функции и определение линейного предиктора
Если я следовать рекомендациям, найденных в http://developer.r-project.org/model-fitting-functions.txt, у меня есть дизайн матрица после линии
x <- model.matrix(mt, mf, contrasts)
с первой колонкой, полной 1, чтобы создать перехватывать.
Теперь, когда я называю RQ(), я вынужден использовать что-то вроде
fit <- rq (y ~ x [,2], tau = 0.5, ...)
Моя проблема происходит, если есть больше чем 1 объясняющей переменной. Я не знаю, как найти автоматический способ, чтобы написать:
x [,2] + x [,3] + x [,4] + ...
Вот полный упрощенный код:
ao_qr <- function (formula, data, method = "br",...) {
cl <- match.call()
## keep only the arguments which should go into the model
## frame
mf <- match.call (expand.dots = FALSE)
m <- match (c ("formula", "data"), names (mf), 0)
mf <- mf[c (1, m)]
mf$drop.unused.levels <- TRUE
mf[[1]] <- as.name ("model.frame")
mf <- eval.parent (mf)
if (method == "model.frame") return (mf)
## allow model.frame to update the terms object before
## saving it
mt <- attr (mf, "terms")
y <- model.response (mf, "numeric")
x <- model.matrix (mt, mf, contrasts)
## proceed with the quantile regression
fit <- rq (y ~ x[,2], tau = 0.5, ...)
print (summary (fit, se = "boot", R = 100))
}
я вызываю функцию с:
ao_qr(pain ~ treatment + extra, data = data.subset)
И здесь как получить данные:
require (lqmm)
data(labor)
data <- labor
data.subset <- subset (data, time == 90)
data.subset$extra <- rnorm (65)
В этом случае, с этим кодом, мой линейный предиктор включает только «лечение». Если я хочу «лишний», мне нужно вручную добавить x [, 3] в линейный предиктор rq() в коде. Это не является автоматическим и не будет работать с другими наборами данных с неизвестным числом переменных. Кто-нибудь знает, как справиться с этим?
Любая помощь будет принята с благодарностью!