[英]Calculating Sample Moments in R (raw code)
我正在尝试对函数进行编码,这些函数将计算从1阶到4阶在0和均值附近的样本矩。 我记下了第一个,但第二个却遇到了麻烦。 这是我的代码:
moment.zero <- function(x) {
lapply(1:4, function(i) (1/length(x$elements)) * sum(x$elements^i))
}
moment.mean <- function(x) {
lapply(1:4, function(i) (1/length(x$elements)) * sum(x$elements #mistake is here - mean(x$elements))^i)
}
我不应该使用循环,所以我使用了lapply函数。 我无法找出均值周围样本时刻的代码; 我需要访问列表中的每个元素,从均值中减去它,然后将其提高到适当的幂。 使用索引没有帮助,所以我的主要问题是:如何引用列表中的每个元素?
moment.zero <- function(x) {
n <- length(x)
sapply(1:4, function(i) (1/n) * sum(x^i))
}
moment.mean <- function(x) {
mu <- mean(x)
n <- length(x)
sapply(1:4, function(i) (1/n) * sum((x - mu)^i))
}
请注意,预先计算mu
和n
是(较小的)效率改进-否则它们将被计算四次。
要引用向量的元素,请使用方括号:例如x[2]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.