您好,我想检查是否提供dplyr
工作流反映的计算均方误差估计由作为descried泰勒(2010年)。
在哪里:
所使用的数据非常简单,类似于摘录:
set.seed(123)
dta <- data.frame(group = rep(LETTERS[1:3], 10),
year = rep(2001:2010, 3),
value = round(runif(30),2))
工作流程草案将与以下代码相对应:
# Pkgs
Vectorize(require)(package = c("dplyr", "magrittr"),
char = TRUE)
# Workflow
dta %<>%
arrange(group, year) %>%
group_by(group) %>%
mutate(X1 = cumsum(value) / row_number()) %>%
mutate(X2 = cumsum(lead(value)) / (length(value) - row_number())) %>%
mutate(MSEe = cumsum((value - X1) ^ 2 + (value - X2) ^ 2))
泰勒(Taylor),2010年,变更点分析:检测变更的功能强大的新工具可用:http://www.variation.com/cpa/tech/changepoint.html
这就是我到目前为止所拥有的...希望学习更好的方法
dta %>%
arrange(group, year) %>%
group_by(group) %>%
mutate(cmX1=cummean(value), cmX2=(sum(value)-cumsum(value)) / (length(value) - row_number())) %>%
do(data.frame(m=1:nrow(.),
MSE=sapply(1:nrow(.), function(n) sum((.$value[1:n] - .$cmX1[n])^2) +
sum((.$value[(n+1):length(.$value)] - .$cmX2[n])^2)))) %>%
ungroup()
数值检查:
mse <- function(x, m) {
meanX1 <- sum(x[1:m]) / m
meanX2 <- sum(x[(m+1):length(x)]) / (length(x)-m)
sum((x[1:m] - meanX1)^2) + sum((x[(m+1):length(x)] - meanX2)^2)
} #mse
dta <- dta[order(dta$group, dta$year),]
sapply(1:10, function(n) mse(dta$value[dta$group=="A"], n))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句