[R] Fwd: Strange results : bootrstrp CIs

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Sat Jan 13 23:59:16 CET 2024


Sorry, didn't cc this to the list.


-------- Forwarded Message --------
Subject: Re: [R] Strange results : bootrstrp CIs
Date: Sat, 13 Jan 2024 17:37:19 -0500
From: Duncan Murdoch <murdoch.duncan using gmail.com>
To: varin sacha <varinsacha using yahoo.fr>

You can debug things like this by setting options(error = recover). That 
will drop into the debugger when the error occurs.  Examine t.star, r, 
and res[[r]] and you will likely see what the problem was.

My guess is that one of the bootstrap samples had a different selection 
of countries, so factor(Country) had different levels, and that would 
really mess things up.

You'll need to decide how to handle that:  If you are trying to estimate 
the coefficient for Italy in a sample that contains no data from Italy, 
what should the coefficient be?  (This is easier for Bayesians to 
handle:  we don't need data!)

Duncan

On 13/01/2024 5:22 p.m., varin sacha via R-help wrote:
> Dear Duncan,
> Dear Ivan,
> 
> I really thank you a lot for your response.
> So, if I correctly understand your answers the problem is coming from this line:
> 
> coef(lm(Score~ Time + factor(Country)),data=data[idx,])
> 
> This line should be:
> coef(lm(Score~ Time + factor(Country),data=data[idx,]))
> 
> If yes, now I get an error message (code here below)! So, it still does not work.
> 
> Error in t.star[r, ] <- res[[r]] :
>    number of items to replace is not a multiple of replacement length
> 
> 
> ##########################################
> Score=c(345,564,467,675,432,346,476,512,567,543,234,435,654,411,356,658,432,345,432,345, 345,456,543,501)
>   
> Country=c("Italy", "Italy", "Italy", "Turkey", "Turkey", "Turkey", "USA", "USA", "USA", "Korea", "Korea", "Korea", "Portugal", "Portugal", "Portugal", "UK", "UK", "UK", "Poland", "Poland", "Poland", "Austria", "Austria", "Austria")
>   
> Time=c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3)
>   
> e=data.frame(Score, Country, Time)
>   
>   
> library(boot)
> func= function(data, idx) {
> coef(lm(Score~ Time + factor(Country),data=data[idx,]))
> }
> B= boot(e, func, R=1000)
>   
> boot.ci(B, index=2, type="perc")
> #############################################################
> 
> 
> 
> 
> 
> 
> 
> 
> Le samedi 13 janvier 2024 à 21:56:58 UTC+1, Ivan Krylov <ikrylov using disroot.org> a écrit :
> 
> 
> 
> 
> 
> В Sat, 13 Jan 2024 20:33:47 +0000 (UTC)
> 
> varin sacha via R-help <r-help using r-project.org> пишет:
> 
>> coef(lm(Score~ Time + factor(Country)),data=data[idx,])
> 
> 
> Wrong place for the data=... argument. You meant to give it to lm(...),
> but in the end it went to coef(...). Without the data=... argument, the
> formula passed to lm() picks up the global variables inherited by the
> func() closure.
> 
> Unfortunately, S3 methods really do have to ignore extra arguments they
> don't understand if the class is to be extended, so coef.lm isn't
> allowed to complain to you about it.
>



More information about the R-help mailing list