排除regsubsets中的拦截(跳跃包)?

时间:2014-07-09 08:43:55

标签: r

我正在使用leaps包中的regsubsets命令的输出运行一些模型平均过程。一旦我排除了拦截,我就会收到一条我无法理解的错误消息:

  

重新排序变量并重试:if中出错   (任何(index [force.out] == -1))停止("不能强制使用相同的变量   并且输出"):缺少需要TRUE / FALSE的值

这个问题似乎只有在我的预测器矩阵的列数多于因变量的观察值时才出现(这是首先使用跳跃的原因之一)。请参阅以下示例代码:

# Load the package --------------------------------------------------------
require(stats)
require(leaps)

# Some artificial data ----------------------------------------------------
y <- rnorm(20)
x1  <- rnorm(20*20)
dim(x1) <- c(20,20)
x2 <- rnorm(20*21)
dim(x2) <- c(20,21)

# Allow intercept ---------------------------------------------------------
summary(regsubsets(x1,y))$which
summary(regsubsets(x2,y))$which

# Without intercept -------------------------------------------------------
summary(regsubsets(x1,y,intercept=FALSE))$which
summary(regsubsets(x2,y,intercept=FALSE))$which

1 个答案:

答案 0 :(得分:0)

通常在输入变量中具有线性相关性时会发生这种情况-使用Intercept = T运行它时,应该看到警告。 当从输入预测变量中删除线性从属列时,您将能够使用拦截= F运行regsubsetsObj。您将手动删除线性相关列。它通常是从现有指标计算得出的派生列。