I have two means and their standard errors from a paper. I would like to calculate their ratio and its variance, but I don't have the covariance. But if I could make some assumptions about the correlation and proceed from there by backing out the covariance, I can get a range of estimates. Theory suggests that the correlation is positive. I implemented this approach with the Delta Method and also Fieller's method on some fake data:

#delimit;
clear;
set obs 21;
egen rho = seq(), from(-10) to(10);
replace rho = rho/10;

scalar dR = 1026;
scalar dS = 305;
scalar var_dR = 2026^2;
scalar var_dS = 40^2;

gen cov = rho*sqrt(scalar(var_dR))*sqrt(scalar(var_dS));
gen roas = scalar(dR)/scalar(dS);

/* Delta Method */
gen var_roas = ((scalar(dR)^2)/(scalar(dS)^4))*scalar(var_dS)
+ (1/(scalar(dS)^2))*scalar(var_dR)
- 2*((scalar(dR))/(scalar(dS)^3))*cov;
gen roas_lb = roas - 1.96*sqrt(var_roas);
gen roas_ub = roas + 1.96*sqrt(var_roas);

/* Fieller's Method */
scalar t2 = invt(28,.95);
scalar aa = (scalar(dS)^2) - (scalar(var_dS)*scalar(t2)^2);
gen bb = (2*cov*scalar(t2)^2) - (2*scalar(dR)*scalar(dS));
scalar cc = (scalar(dR)^2) - (var_dR*scalar(t2)^2);
gen rad = sqrt(bb*bb - 4*aa*cc);
gen fi_lb = (-bb - rad) / (2 * aa);
gen fi_ub = (-bb + rad) / (2 * aa);

tw
(line roas rho, lcolor(navy))
(line roas_ub rho, lpattern(dash) lcolor(navy))
(line roas_lb rho, lpattern(dash) lcolor(navy))
(line fi_ub rho, lpattern(dash) lcolor(maroon))
(line fi_lb rho, lpattern(dash) lcolor(maroon))
, legend(label(1 "ROAS") label(2 "Delta Method CI") label(5 "Fieller's Method CI") order(1 2 5) rows(1) span)
xlab(#10, grid) ylab(#10, angle(0) grid)
yline(0, lpattern(solid) lcolor(gs5))
xtitle("Correlation Between dR and dS")
title("dR/dS Ratio With 95% Confidence Interval")
plotregion(fcolor(white) lcolor(white)) graphregion(fcolor(white) lcolor(white));
I am little puzzled by why the intervals look so different, and I am uncertain if I specified t2 correctly (the means are based on 28 days of data).

Am I doing something stupid here? Is there any way to do something like this better (with tighter bounds)?