我正在编写一个R软件包,其中主要函数接受一个模型,该模型只能具有单个因子协变量(允许使用偏移量)。为确保用户遵守此规则,我需要进行检查。
例如,让我们看一下以下四个模型:
例如,让我们看一下以下四个模型:
set.seed(123)
n <- 10
## data
data <- data.frame(y = rnorm(n),
trt = rep(c(0, 1), each = n/2),
x = 1:n)
datan <- data
datan$trt <- as.factor(datan$trt)
## models
mod1 <- lm(y ~ factor(trt), data = data)
mod2 <- lm(y ~ offset(x) + as.factor(trt), data = data)
mod3 <- lm(y ~ trt, data = datan)
mod4 <- glm(y ~ trt + offset(x), data = data)
mod5 <- lm(y ~ x + as.factor(trt), data = data)
模型1、2和3是可以的,模型4和5不行(模型4有一个非因素变量trt
,模型5有第二个协变量x
)。
我该如何使用R进行检查?最理想的情况是对于一个可行的模型,我会得到一个TRUE
,而对于有问题的模型,我会得到一个FALSE
。
这不仅适用于lm()
和glm()
,还适用于survreg()
和coxph()
(来自生存包)。有用的东西是查看公式eval(getCall(mod1)$formula)
和数据(data
/ datan
)。