0

I am trying to compare different models using the same data. I am running R version 3.6.1 (which seems to have problems of its own— especially in downloading packages). This is what I am trying to do:

bs <- function(formula=model1, data=my_data, R=1000) 
{
 d <- my_data[R=1000,] 
  fit <- lm(formula=model1, data=my_data)
  return(coef(fit)) 
} 

results <- boot(data=my_data, statistic=bs, R=1000, formula=model1)

plot(results, index=1) # intercept 
plot(results, index=2) # wt 
plot(results, index=3) # disp 


boot.ci(results, type="bca", index=1) # intercept 
boot.ci(results, type="bca", index=2) # wt 
boot.ci(results, type="bca", index=3) # disp

EVERY TIME I try to run this code, I get this error:

Error in `[.data.table`(my_data, R = 1000, ) : unused argument (R = 1000)

If I remove the R variable from the last line, I get this error:

Error in index.array(n, R, sim, strata, m, L, weights) : argument "R" is missing, with no default

I'm neither a statistician nor a programmer, just a confused biologist hoping to understand what I'm looking at— how can the argument be unused AND be missing without a default? What am I doing wrong?

Thank you for your help!!

StupidWolf
  • 45,075
  • 17
  • 40
  • 72
  • The error seems to be coming from the `d <- my_data[R=1000,]` part. What are you trying to do with that line? – MrFlick Dec 06 '19 at 20:55
  • I'm mimicking something I found... even if I Just run the line `results <- boot(data=my_data, statistic=bs, R=1000, formula=model1)` I STILL get the R is unused response! – StudentFlyer Dec 06 '19 at 21:34
  • But that's calling the `bs` function which has the bad line of code in it. That statement just doesn't make sense. I don't think you can call the `bs` function without getting that error. – MrFlick Dec 06 '19 at 21:35

1 Answers1

1

R is the number of bootstraps and used only when you call boot. The function bs does not need to know which bootstrap it is on. And in your original function, it is not very clear whether you are using the function variables or calling from global.

I show below how bs should be written, and it should work for you:

bs <- function(my_data,inds,formula=model1) 
{
 d <- my_data[inds,] 
  fit <- lm(formula=formula, data=d)
  return(coef(fit)) 
} 

results <- boot(data=mtcars, statistic=bs, R=10, formula=as.formula(mpg~.))
> results

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = mtcars, statistic = bs, R = 10, formula = as.formula(mpg ~ 
    .))


Bootstrap Statistics :
        original        bias    std. error
t1*  12.30337416 -19.268069883 37.18417307
t2*  -0.11144048   0.311423945  1.27584819
t3*   0.01333524   0.012433796  0.01697679
t4*  -0.02148212  -0.006148059  0.02917990
t5*   0.78711097   0.778926590  3.57621690
t6*  -3.71530393  -1.632978225  3.32856394
t7*   0.82104075   0.963507105  1.53123787
t8*   0.31776281  -1.230288420  3.27278936
t9*   2.52022689   0.157071809  3.31151260
t10*  0.65541302   0.084539332  1.83846998
t11* -0.19941925   0.131494452  1.10284335
StupidWolf
  • 45,075
  • 17
  • 40
  • 72