From spencer.graves at structuremonitoring.com  Wed Jun 11 07:02:53 2014
From: spencer.graves at structuremonitoring.com (Spencer Graves)
Date: Tue, 10 Jun 2014 22:02:53 -0700
Subject: [Rd] infelicity in dlnorm, plnorm
Message-ID: <5397E2FD.1010000@structuremonitoring.com>

In theory, dlnorm(x, ...) == dnorm(log(x), ...)/x, x>0.


Unfortunately, when sd=0, dlnorm and plnorm return NaN, while dnorm 
returns (if(x != mean)0 else Inf) and pnorm returns (if(x<mean)0 else 
1). [A numerical optimization, maxLik{maxLik}, reported the NaNs for me.]


help('dlnorm') says, "dlnorm is calculated from the definition (in 
?Details?). [pqr]lnorm are based on the relationship to the normal." 
This seems not completely accurate, because plnorm(2, 1, 0) returns NaN, 
while pnorm(log(2), 1, 0) returns 0.


Obviously, this is not very important. However, I felt a need to report it.


Thanks for all you do to make R the great product it is.


Spencer Graves


 > dlnorm(2, 1, 0)
[1] NaN
Warning message:
In dlnorm(2, 1, 0) : NaNs produced
 > dnorm(log(2), 1, 0)/2
[1] 0
 >
 > dlnorm(2, 1, 1)
[1] 0.1902978
 > dnorm(log(2), 1, 1)/2
[1] 0.1902978
 >
 > dlnorm(exp(1), 1, 0)
[1] NaN
Warning message:
In dlnorm(exp(1), 1, 0) : NaNs produced
 > dnorm(1, 1, 0)/exp(1)
[1] Inf
 >
 > sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base



[Rd] infelicity in dlnorm, plnorm
Spencer Graves