It should also be noted that this delta method is just an approximation
- so it is not surprising that it might disagree with a simulaiton by
10% or more. Also, technically the variance of a ratio of two normally
distributed random variables doesn't even exist! Therefore even a
simulation, if carried out long enough would produce arbitarily high
"SE" values. The saving grace is that if the variance of the denominator
is much smaller than the mean, we can "get away" with these
approximations for practical usage.
Al Feiveson
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Jeph Herrin
Sent: Tuesday, January 13, 2009 7:11 AM
To: [email protected]
Subject: Re: st: Standard error of a ratio of two random variables
For what it's worth, a simulation may give the most accurate answer:
quietly ci X
local mux=r(mean)
local sex=r(se)
quietly ci Y
local muy=r(mean)
local sey=r(se)
corr X Y
local rho=r(rho)
matrix b= (`mux' \ `muy')
matrix V= (1, `rho' \ `rho', 1)
matrix sd =(`sex' \ `sey')
clear
set obs 100000
drawnorm X Y, means(b) corr(V) sds(sd)
gen ratio=X/Y
sum ratio
The SD of the variable -ratio- should be the SE of X/Y.
Jeph
Sergiy Radyakin wrote:
> Dear All,
>
> I need to find a standard error of Z a ratio of two random
> variables X and Y: Z=X/Y, where the means and SEs for X and Y are
> known, as well as their corr coefficient. (In my particular case X and
> Y are numbers of people that have such and such characteristics). I am
> using delta-method according to [
> http://www.math.umt.edu/patterson/549/Delta.pdf ] (see page 2(38)). I
> then use svy:ratio to check my results and they don't match. I wonder
> if I am doing something wrong, or is it any kind of precision-related
> problem (the difference is about 7%, i.e. 1.7959 vs. 1.6795), or is my
> check simply wrong and not applicable in this case.
>
> I would appreciate if someone could look into the code and let me
> know why the results are different.
>
> Thank you,
> Sergiy Radyakin
>
> Below is a do file that one can Ctrl+C/Ctrl+V to Stata's command line:
>
> **** BEGIN OF RV_RATIO.DO ****
> sysuse auto, clear
> generate byte www=1
> svyset [pw=www]
>
> capture program drop st_error_of_ratio program define
> st_error_of_ratio, rclass
> syntax varlist(min=2 max=2)
> svy: mean `varlist'
> matrix B=e(b)
> local mux=B[1,1]
> local muy=B[1,2]
> matrix V=e(V)
> local sigma2x=V[1,1]
> local sigma2y=V[2,2]
> local sigmax_sigmay=V[1,2]
> svyset
> corr `varlist' [aw`=r(wexp)']
> local rho=r(rho)
> return scalar se = sqrt((`mux')^2*`sigma2y'/(`muy')^4 +
> `sigma2x'/(`muy')^2 - 2*`mux'/(`muy')^3*`rho'*`sigmax_sigmay')
> end
> st_error_of_ratio price length
> display as text "Estimated SE=" as result r(se)
> svy: ratio price / length
> **** END OF RV_RATIO.DO ****
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
>
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/