[R] error propagation - hope it is correct subject

Thomas W Blackwell tblackw at umich.edu
Tue Dec 23 15:37:56 CET 2003


Petr  -

Yes, you are interpreting the second suggestion exactly correctly,
apart from concern for possible correlations among x1,x2,x3.
If one can treat them as independent, I would do exactly as you
show:  generate a vector of, say, n = 10000 simulated draws from
x1, another vector of the same length for x2, and another for x3,
then calculate  sd(f(x1,x2,x3))  as an approximation to the std
dev of f().

-  tom blackwell  -  u michigan medical school  -  ann arbor  -

On Tue, 23 Dec 2003, Petr Pikal wrote:

> Hallo Thomas
>
> Thank you for your answer, even I am not sure how to do it in R (or maybe at
> all). My mathematics background is only faint so I drop the first possibility which
> is for me rather cryptic.
>
> Does your second suggestion mean:
>
> 1:	compute random variable  y <- f(rnorm(n,mymeanx1,mysdx1),
> rnorm(n,mymeanx2, ...), ...)
>
> according to my function f  (based on assumption x variables values can be
> considered normally distributed and and independent)
>
> 2:	sd(y)
>
> can be considered as variation of y?
> Or is it necessary to do something like
>
> vysled<-NULL
> for (i in 1:300) vysled[i]<-sd(sample(y,100))
> mean(vysled)
>
> to get bootstraped estimation of sd(y)
>
> My actual data have some missing values and some outliers which I can either
> remove or to use some robust statistics for mean and variation estimates.
>
> Thank you and have a nice Christmas
>
> Petr
>
> On 22 Dec 2003 at 8:56, Thomas W Blackwell wrote:
>
> > Petr  -
> >
> > Very briefly, I think of three ways to approximate the standard
> > deviation of  y = f(x1,x2,x3).
> >
> >   (1) linearise f() and use the covariance matrix of [x1,x2,x3].
> >   (2) simulate draws from the joint distribution of [x1,x2,x3],
> >  then compute the sample std dev of resulting f()s.
> >   (3) go back to the original data set from which [x1,x2,x3] were
> >  estimated as parameters, re-sample rows with replacement,
> >  estimate [x1,x2,x3] and compute f, then take sample std dev.
> >
> > Other names for these three would be (1) the "delta method" or
> > Taylor series expansion, (2) parametric bootstrap, (3) bootstrap.
> >
> > Different choices are appropriate in different situations.
> >
> > If the std devs of x1,x2,x3 are small relative to the curvature
> > (2nd derivative) in f(), then use (1) and compute by matrix algebra
> >
> > Var(f(x1,x2,x3))  approx  t(grad f) %*% Cov(x1,x2,x3) %*% grad f.
> >
> > If the curvature in f() is an issue, use (2) with draws of x1,x2,x3
> > from some parametric distribution (eg, rnorm()) with each component
> > properly conditioned on the ones already drawn.
> >
> > Only if there were no set of intermediate parameters [x1,x2,x3]
> > would I use (3) to get the precision of f directly.  I'm sure
> > Brad Efron would say something different.  (3) is the only one
> > that is canned in R, simply because the other two are practically
> > one-liners.
> >
> > -  tom blackwell  -  u michigan medical school  -  ann arbor  -
> >
> > On Mon, 22 Dec 2003, Petr Pikal wrote:
> >
> > > Dear all
> > >
> > > Please, can you advice me how to compute an error, standard
> > > deviation or another measure of variability of computed value.
> > >
> > > I would like to do something like:
> > >
> > > var(y) = some.function(var(x1),var(x2),var(x3))
> > >
> > > for level F1 (2,3,...)
> > >
> > > Let say I have some variables - x1, x2, x3 (two computed for levels
> > > of factor F and one which is same for all levels) and I want to
> > > compute
> > >
> > > y = f(x1,x2,x3)
> > >
> > > for some levels of factor F
> > >
> > > I can compute variation of variables for levels of F, I know a
> > > variation of one variable but I am not sure how to transfer it to
> > > variation of y within respective levels.
> > >
> > > I found some methods which I can use but I wonder if  there is some
> > > method implemented in R (Manly B.F. Biom.J.28,949,(1986), some local
> > > statistical books available to me).
> > >
> > > I have a feeling I could use bootstrap method for this but I am not
> > > sure how.
> > >
> > > Thank you and merry Christmas to all
> > >
> > > Petr Pikal
> > > petr.pikal at precheza.cz
> > >
> > > ______________________________________________
> > > R-help at stat.math.ethz.ch mailing list
> > > https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> > >
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
> Petr Pikal
> petr.pikal at precheza.cz
>
>
>




More information about the R-help mailing list