Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有没有一种方法可以返回转换日志(x+;1)?_R_Math - Fatal编程技术网

R 有没有一种方法可以返回转换日志(x+;1)?

R 有没有一种方法可以返回转换日志(x+;1)?,r,math,R,Math,有没有办法反变换R中log(x+1)值向量的平均值?我试图使用base包中的expm1()函数,但数字肯定不正确 df <- c(11, 24, 21, 63, 44, 95, 12, 43, 0, 5, 26, 22, 25, 48, 86, 2) mean(df) df这更像是一道数学题。平均值(log(x))的指数化值不等于(x)的平均值 mydf不,这是不可能的。不幸的是,mean(log1p(x))==mean(log(1+x))是单向操作。 想象 但是 所以拥有mean(l

有没有办法反变换R中
log(x+1)
值向量的平均值?我试图使用
base
包中的
expm1()
函数,但数字肯定不正确

df <- c(11, 24, 21, 63, 44, 95, 12, 43, 0, 5, 26, 22, 25, 48, 86, 2)

mean(df)

df这更像是一道数学题。平均值(log(x))的指数化值不等于(x)的平均值


mydf不,这是不可能的。不幸的是,
mean(log1p(x))==mean(log(1+x))
是单向操作。 想象

但是


所以拥有
mean(log1p(…)
你不能得到
mean(…)
。对于一个给定的
平均值(log1p())
,每当集合有多个项目时,就会有无限多个不同的
平均值。

@DmitryBychenko的答案清楚地解释了为什么如果你只有平均值,这是不可能的。但是,如果使用一种形式的delta方法(使用二阶泰勒级数近似)得到均值和方差,则可以得到一个近似值,该方法表示一般(近似)
mean(F(x))~F(mean(x))+F'(mean(x))*var(x)/2
。对于这个特殊的问题,

F(x) = exp(x)-1
F''(x) = exp(x)
这是初等微积分,但如果需要,可以使用
D(D(表达式(exp(x)-1),“x”),“x”)
进行双重检查。现在:

变换尺度上的均值和方差
这很容易理解。谢谢你澄清:)这也很有帮助!感谢您的回答。根据对数的性质,
log(x+1)
对一组值的算术平均值等于
log
对同一组值的几何平均值
(x+1)
。这两种方法之间没有一对一的对应关系。
mydf <- c(5,10)
mean(mydf)
[1] 7.5
log(mydf)
[1] 1.609438 2.302585
mean(log(mydf))
[1] 1.956012
exp(mean(log(mydf)))
[1] 7.071068
 A <- c(1 / exp(1) - 1, exp(1) - 1)
 B <- c(0, 0)
 mean(A) = 0.5430806
 mean(B) = 0 
 mean(log1p(A)) = 0
 mean(log1p(B)) = 0
F(x) = exp(x)-1
F''(x) = exp(x)