R包力矩安装

jm81lzqq  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(160)

我在我的RStudio中安装了来自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版,不知道怎么修,所以找人帮忙

cpjpxq1n

cpjpxq1n1#

在您的问题中,您通过在rlnorm函数中指定参数meanlogsdlog来生成在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

由于这是一个编码论坛,我不会进入数学,但公式的转换几乎可以找到任何地方,见the wikipedia page on the lognormal distribution

相关问题