0

我正在尝试创建一个循环,让我返回自举置信区间,以进行具有一个截距和三个系数的回归分析。对自举函数进行编程效果很好。

问题是我必须在函数 boot.ci 中使用索引(如 index=1)来处理回归的每个对象,因为 boot.ci 不知道我的回归模型系数的名称。

所以我做了以下事情:

for (i in 2:inputnumberobjects)
  {
   cat(paste("BOOT CONFIDENCE INTERVALS FOR COEFFICIENT ", inputnamesobjects[i], ":\n\n", sep=""))
   boot.ci(bootResults, type = "bca", index=i) ### Result for Coefficients
  }

在循环之前,我指定了对象的数量和对象的名称。

问题是,该函数似乎以某种方式忽略了循环中的 boot.ci 函数。

例如,如果对象的名称是 inputnamesobjects <- c("a", "b", "c", "d")

然后我得到以下输出:

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT a:

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT b:

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT c:

BOOT CONFIDENCE INTERVALS FOR COEFFICIENT d:

我没有得到的是 boot.ci 的结果

如果我不使用循环而是使用类似的东西:

boot.ci(bootResults, type = "bca", index=2)

一切正常。

有任何想法吗?

4

3 回答 3

2

如果您只想查看输出,请将您的函数包装在print命令中。

for (i in 2:inputnumberobjects)
  {
   cat(paste("BOOT CONFIDENCE INTERVALS FOR COEFFICIENT ", inputnamesobjects[i], ":\n\n", sep=""))
   print(boot.ci(bootResults, type = "bca", index=i)) ### Result for Coefficients
  }
于 2013-08-28T14:40:06.260 回答
1

我正在使用函数帮助中的示例数据,boot.ci因为您没有包含任何内容。有些函数在其他函数中时需要强制打印,通常使用 function print。复制这个格式:

library(boot)
ratio <- function(d, w) sum(d$x * w)/sum(d$u * w)
city.boot <- boot(city, ratio, R = 999, stype = "w", sim = "ordinary")

for (i in letters[1:5]) {
   cat("This is number:\n", i, "\n")
   print(boot.ci(city.boot, conf = c(0.90, 0.95),type = c("bca")))
}

请注意,您不需要pastecat. 但总的来说,最好避免cat使用print稍微温和的功能。使用cat会导致烦人的消息,以后很难。

将来,请提供可重复的示例!(并让我们知道您正在使用哪些软件包!)

于 2013-08-28T14:40:20.403 回答
0

自动打印在循环内被关闭,就像在函数内一样。如果要查看输出,则需要显式打印某些内容。

for (i in 2:inputnumberobjects)
{
   cat(paste("BOOT CONFIDENCE INTERVALS FOR COEFFICIENT ", inputnamesobjects[i], ":\n\n", sep=""))
   print(boot.ci(bootResults, type = "bca", index=i)) ### Result for Coefficients
}

希望有帮助。

于 2013-08-28T14:47:17.170 回答