I would like to know how to transform negative values to log()
, since I have heteroskedastic data. I've read that log(x+1)
solves the problem but this doesn't work with my data and I continue getting NaNs as result.
For e.g. I get this warning message (I didn't put my complete database because I think one of my negative values is enough to show the problem):
> log(-1.27+1)
[1] NaN
Warning message:
In log(-1.27 + 1) : NaNs produced
>
UPDATE:
Here is an histogram of my data. I'm working with palaeontological time series of chemical measurements. If the difference between (for e.g.) variables like Ca and Zn is too big, I need some type of data standardization, which is why I'm testing the log()
function.
log(x+1)
transformation will is only defined forx > -1
, as thenx + 1
is positive. It'd be good to know your reason for wanting to log transform your data. $\endgroup$sign(x) * (abs(x))^(1/3)
, the details depending on software syntax. For more on cube roots see e.g. stata-journal.com/sjpdf.html?articlenum=st0223 (see esp. pp.152-3).We used cube roots to help visualization of a response variable that can be positive and negative in nature.com/nature/journal/v500/n7464/full/… $\endgroup$