R:在函数内调用rq()并定义线性预测器

时间:2012-07-03 11:30:49

标签: regression quantile

我试图在函数中调用包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]。这不是自动的,不适用于具有未知数量变量的其他数据集。 有谁知道如何解决这个问题?

任何帮助将不胜感激!!!

1 个答案:

答案 0 :(得分:1)

我找到了一个简单的解决方案:     X [2:NcoI位(x)]的