I'm trying to make a loop which gives me back the bootstrapped confidence intervals for a regression analysis with one Intercept and three coefficients. Programming the bootstrapping function worked well.
The problem is that I have to adress each object of the regression within the function boot.ci with an index (like index=1), because boot.ci doesn't know the names of my regression model coefficients.
So I did the following:
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
}
Before the loop I spefified the number of objects and the names of the objects.
The problem is, that the function somehow seems to ignore the boot.ci Function within the loop.
For example if the names of the objects are
inputnamesobjects <- c("a", "b", "c", "d")
then I get the following output:
BOOT CONFIDENCE INTERVALS FOR COEFFICIENT a:
BOOT CONFIDENCE INTERVALS FOR COEFFICIENT b:
BOOT CONFIDENCE INTERVALS FOR COEFFICIENT c:
BOOT CONFIDENCE INTERVALS FOR COEFFICIENT d:
What I didn't get, is the results of boot.ci
If I#m not using a loop and instead use something like:
boot.ci(bootResults, type = "bca", index=2)
everything works fine.
Any ideas?
I'm using the example data from the function help for boot.ci
since you haven't included any. Some functions need to be forced to print when they're inside other functions, often using the function print
. Copy the format of this:
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")))
}
Notice that you don't need to paste
inside of cat
. But in general it is good to avoid cat
as print
is a slightly gentler function. Using cat
can lead to annoying messages that are hard later.
In future, please supply reproducible examples! (And let us know which packages you're using!)
If you just want to see the output, wrap your function in a print
command.
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
}
Automatic printing is turned off inside a loop, just as it is inside a function. You need to explicitly print something if you want to see the output.
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
}
Hope that helps.