我试图在函数中调用 quantreg 包的 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)
在这种情况下,使用此代码,我的线性预测器仅包含“治疗”。如果我想要“额外”,我必须在代码中的 rq() 的线性预测器中手动添加 x[,3] 。这不是自动的,并且不适用于具有未知数量变量的其他数据集。有谁知道如何解决这个问题?
任何帮助将不胜感激 !!!