我从CRAN存储库中安装了moments 0.14.1包,它显示为已安装。
但是当我尝试运行一个简单的测试时,我得到一个错误:
> library(moments)
>
> # Generate some test data
> x <- rlnorm(100,meanlog = 0, sdlog = 1)
> library(moments)
>
> # Generate some test data
> x <- rlnorm(100,meanlog = 0, sdlog = 1)
>
> # Calculate the logmean of the test data
> mean_x <- meanlog(x)
Error in meanlog(x) : could not find function "meanlog"
我使用的是R版本4.2.1。我不知道如何修理它,所以我请求帮助
在您的问题中,您通过在rlnorm
函数中指定参数meanlog
和sdlog
,生成了x
中对数正态分布的数据。这与library(moments)
没有任何关系。
由于对数正态分布是非线性的,必须进行一些变换才能得到x
的算术平均值和方差/标准差。您可以编写自己的函数:
set.seed(123)
x <- rlnorm(100, meanlog = 0, sdlog = 1)
meanlog_fun <- function(y) {
ests <- MASS::fitdistr(y, "lognormal")[[1]]
mn <- exp(ests[1] + (ests[2] ^ 2) / 2)
sd <- exp(ests[1] + (ests[2] ^ 2) / 2) * sqrt(exp(ests[2] ^ 2) - 1)
c(mean = mn, sd = sd)
}
meanlog_fun(x)
# mean.meanlog sd.meanlog
# 1.653437 1.871858
由于这是一个编码论坛,所以我不会进入数学,但变换的公式几乎可以在任何地方找到,参见维基百科页面上的对数正态分布。