为什么 Theil 的 U2 精度在预测包和 DescTools 中不一样?
Why is Theil's U2 accuracy not the same in forecast package and DescTools?
今天我尝试使用 DescTools 中的 Theil's U2 而不是 forecast 包。我只是想知道,为什么两个函数返回不同的结果?据我所知,应该没有区别。
library(forecast)
library(DescTools)
fc_df = data.frame(
fc1 = c(5565,5448,5164,5067,4997,5035,5168,5088,5162,4990,5018,5782),
fc2 = c(2565,2448,2164,2067,1997,1035,2168,2088,2162,1990,1018,2782)
)
act_df = data.frame(
act1 = c(9370,7980,6050,5640,6220,5740,6040,5130,5090,5210,4910,6890),
act2 = c(2900,2160,2400,2020,1630,1660,2210,1930,1960,1590,1730,2440)
)
# forecast
ts_act <- ts(act_df, frequency = 12)
do.call(what = rbind, args = lapply(1:ncol(fc_df), function(x){
forecast::accuracy(fc_df[, x], ts_act[, x])}
))
# DescTools ts
TheilU(fc_df$fc1, ts_act[, 1])
TheilU(fc_df$fc2, ts_act[, 2])
不幸的是,有几种统计数据被称为“Theil's U”,部分原因是 Theil 本人在不同论文中对不同统计数据使用了相同的符号。
假设预测值存储在向量 f
中,实际值存储在向量 a
中,每个长度为 n
。然后预测包返回一个基于相对变化的统计数据。
fpe <- f[2:n]/a[1:(n-1)] - 1
ape <- a[2:n]/a[1:(n-1)] - 1
theil <- sqrt(sum((fpe - ape)^2)/sum(ape^2))
DescTools 包 returns 两种类型的 Theil's U 统计量。 type=2
是
theil <- sqrt(sum((f-a)^2)/sum(a^2))
而 type=1
由
给出
theil <- sqrt(sum((f-a)^2/n))/(sqrt(sum(f^2)/n) + sqrt(sum(f^2)/n))
今天我尝试使用 DescTools 中的 Theil's U2 而不是 forecast 包。我只是想知道,为什么两个函数返回不同的结果?据我所知,应该没有区别。
library(forecast)
library(DescTools)
fc_df = data.frame(
fc1 = c(5565,5448,5164,5067,4997,5035,5168,5088,5162,4990,5018,5782),
fc2 = c(2565,2448,2164,2067,1997,1035,2168,2088,2162,1990,1018,2782)
)
act_df = data.frame(
act1 = c(9370,7980,6050,5640,6220,5740,6040,5130,5090,5210,4910,6890),
act2 = c(2900,2160,2400,2020,1630,1660,2210,1930,1960,1590,1730,2440)
)
# forecast
ts_act <- ts(act_df, frequency = 12)
do.call(what = rbind, args = lapply(1:ncol(fc_df), function(x){
forecast::accuracy(fc_df[, x], ts_act[, x])}
))
# DescTools ts
TheilU(fc_df$fc1, ts_act[, 1])
TheilU(fc_df$fc2, ts_act[, 2])
不幸的是,有几种统计数据被称为“Theil's U”,部分原因是 Theil 本人在不同论文中对不同统计数据使用了相同的符号。
假设预测值存储在向量 f
中,实际值存储在向量 a
中,每个长度为 n
。然后预测包返回一个基于相对变化的统计数据。
fpe <- f[2:n]/a[1:(n-1)] - 1
ape <- a[2:n]/a[1:(n-1)] - 1
theil <- sqrt(sum((fpe - ape)^2)/sum(ape^2))
DescTools 包 returns 两种类型的 Theil's U 统计量。 type=2
是
theil <- sqrt(sum((f-a)^2)/sum(a^2))
而 type=1
由
theil <- sqrt(sum((f-a)^2/n))/(sqrt(sum(f^2)/n) + sqrt(sum(f^2)/n))