【发布时间】:2021-09-19 23:51:15
【问题描述】:
我有两个相同维度的数据矩阵,让一个矩阵用A表示,另一个用B表示,维度为24*365 其中 24 表示小时,365 表示天数(意味着每个矩阵具有一年的每小时数据)。假设我选择一天,例如星期日,假设它位于两个矩阵的第三列。同样,我从两个矩阵中选择星期日的所有剩余列,因此我从星期日的每个矩阵 A 和 B 中获得两个子矩阵。然后我将每个子矩阵作为一个向量,并从这两个向量中计算均方误差和均方误差百分比。类似地,对于一周中的剩余几天重复相同的过程。我的问题是,任何人都可以使用循环来完成整个过程,即从矩阵 A 和 B 中选择每天子矩阵的循环。然后将每个子矩阵作为一个向量,分别计算每天的均方误差和均方误差百分比。 我尝试以采用 C 和 D 表示的任意两个矩阵的示例手动解释我的问题,但由于我的原始数据矩阵的维数很大,因此还有更多子矩阵,这使得我们手动执行此操作非常耗时。
C <- matrix(16:155, ncol=14, byrow=T)
D<- matrix(50:189,ncol=14, byrow=T)
sub_C1 <- C[,c(1+(0:6)*2)]
sub_D1 <- D[,c(1+(0:6)*2)]
sub_C2 <- C[,c(2+(0:6)*2)]
sub_D2 <- D[,c(2+(0:6)*2)]
sub_C3 <- C[,c(1+(0:4)*3)]
sub_D3 <- D[,c(1+(0:4)*3)]
################mean square error################
mse_1 <- mean(abs(as.vector(sub_C1)-as.vector(sub_D1)))
mse_2 <- mean(abs(as.vector(sub_C2)-as.vector(sub_D2)))
mse_3 <- mean(abs(as.vector(sub_C3)-as.vector(sub_D3)))
################## mean percentage absolute error############
mape_1 <- mean(abs(as.vector(sub_C1)-as.vector(sub_D1))/as.vector(sub_C1))
mape_2 <- mean(abs(as.vector(sub_C2)-as.vector(sub_D2))/as.vector(sub_C2))
mape_3 <- mean(abs(as.vector(sub_C3)-as.vector(sub_D3))/as.vector(sub_C3))
#############################################################
有人可以通过循环从每个矩阵C和D中选择相同的子矩阵,并分别计算每个子矩阵的误差吗?
【问题讨论】:
标签: r loops iteration partitioning