bt.log | R Documentation |
Converts a log-mean and log-variance to the original scale and calculates confidence intervals
bt.log(meanlog = NULL, sdlog = NULL, n = NULL, alpha = 0.05)
meanlog |
sample mean of natural log-transformed values |
sdlog |
sample standard deviation of natural log-transformed values |
n |
sample size |
alpha |
alpha-level used to estimate confidence intervals |
There are two methods of calcuating the bias-corrected mean on the original scale.
The bt.mean
is calculated following equation 14 (the infinite series estimation)
in Finney (1941). approx.bt.mean
is calculated using the commonly known approximation
from Finney (1941):
mean=exp(meanlog+sdlog^2/2). The variance is var=exp(2*meanlog)*(Gn(2*sdlog^2)-Gn((n-2)/(n-1)*sdlog^2) and standard deviation is sqrt(var) where Gn is the infinite series function (equation 10). The variance and standard deviation of the back-transformed mean are var.mean=var/n; sd.mean=sqrt(var.mean). The median is calculated as exp(meanlog). Confidence intervals for the back-transformed mean are from the Cox method (Zhou and Gao, 1997) modified by substituting the z distribution with the t distribution as recommended by Olsson (2005):
LCI=exp(meanlog+sdlog^2/2-t(df,1-alpha/2)*sqrt((sdlog^2/n)+(sdlog^4/(2*(n-1)))) and
UCI=exp(meanlog+sdlog^2/2+t(df,1-alpha/2)*sqrt((sdlog^2/n)+(sdlog^4/(2*(n-1))))
where df=n-1.
A vector containing bt.mean
, approx.bt.mean
,var
, sd
, var.mean
,sd.mean
,
median
, LCI (lower confidence interval), and UCI (upper confidence interval).
Gary A. Nelson, Massachusetts Division of Marine Fisheries gary.nelson@mass.gov
Finney, D. J. 1941. On the distribution of a variate whose logarithm is normally distributed. Journal of the Royal Statistical Society Supplement 7: 155-161.
Zhou, X-H., and Gao, S. 1997. Confidence intervals for the log-normal mean. Statistics in Medicine 16:783-790.
Olsson, F. 2005. Confidence intervals for the mean of a log-normal distribution. Journal of Statistics Education 13(1). www.amstat.org/publications/jse/v13n1/olsson.html
## The example below shows accuracy of the back-transformation
y<-rlnorm(100,meanlog=0.7,sdlog=0.2)
known<-unlist(list(known.mean=mean(y),var=var(y),sd=sd(y),
var.mean=var(y)/length(y),sd.mean=sqrt(var(y)/length(y))))
est<-bt.log(meanlog=mean(log(y)),sdlog=sd(log(y)),n=length(y))[c(1,3,4,5,6)]
known;est
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.