blob: 0e9019f096306e0baa04d9aad65c81a6d563df6a [file] [log] [blame]
#-------------------------------------------------------------
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#-------------------------------------------------------------
# Prints the difference statistics of two matrices given, to indicate how
# they are different. This can be used for instance in comparison of lossy
# compression techniques, that reduce the fidelity of the data.
#
# INPUT:
# --------------------------------------------------------------------------------
# X First Matrix to compare
# Y Second Matrix to compare
# --------------------------------------------------------------------------------
m_differenceStatistics = function(Matrix[Double] X, Matrix[Double] Y) {
P = matrix("0.0 0.01 0.1 0.25 0.5 0.75 0.90 0.99 1.0", rows= 9, cols=1)
print("quantiles are: " + toString(target=P, linesep=" "))
# Mean Square Error
[MSE, SEQ] = mse(X=X, Y=Y, P=P)
print(" Mean Square Error: " + toString(as.scalar(MSE)))
print(" Quantile Square Error: " + toString(target=SEQ , linesep=" "))
# Root Mean Square Error
[RMSE, RSEQ] = rmse(X=X, Y=Y, P=P)
print(" Root Mean Square Error: " + toString(as.scalar(RMSE)))
print(" Quantile Root Square Error: " + toString(target=RSEQ , linesep=" "))
# Normalized Root Mean Square Error
[NRMSE, NRSEQ] = nrmse(X=X, Y=Y, P=P)
print("Normalized Root Mean Square Error: " + toString(as.scalar(NRMSE)))
print(" Quantile Norm Root Square Error: " + toString(target=NRSEQ , linesep=" "))
# Mean Absolute Error
[MAE, AEQ] = mae(X=X, Y=Y, P=P)
print(" Mean Absolute Error: " + toString(as.scalar(MAE)))
print(" Quantile Absolute Error: " + toString(target=AEQ , linesep=" "))
# Mean Absolute Percentage Error
[MAPE, APEQ] = mape(X=X, Y=Y, P=P)
print(" Mean Absolute percentage Error: " + toString(as.scalar(MAPE)))
print(" Quantile APE: " + toString(target=APEQ , linesep=" "))
# Symmetric Mean Absolute Percentage Error
[sMAPE, sAPEQ] = smape(X=X, Y=Y, P=P)
print("symmetric Mean Absolute per Error: " + toString(as.scalar(sMAPE)))
print(" Quantile symmetric MAPE: " + toString(target=sAPEQ , linesep=" "))
# Modified Symmetric Mean Absolute Percentage Error
[msMAPE, msAPEQ] = msmape(X=X, Y=Y, P=P)
print(" modified symmetric MAPE: " + toString(as.scalar(msMAPE)))
print(" Quantile modified symmetric MAPE: " + toString(target=msAPEQ , linesep=" "))
# Peak Signal to Noise Ratio
PSNR = psnr(X=X, Y=Y)
print(" Peak Signal to Noise Ratio: " + toString(target=PSNR , linesep=" "))
# Standard deviation
sd_Y = sd(Y)
sd_X = sd(X)
sd_diff = abs(sd_Y - sd_X)
print(" Standard Deviation Values (X,Y): (" + toString(sd_X) + ", " + toString(sd_Y) + ")")
print(" Standard Deviation Difference: " + toString(sd_diff))
skew_x = skewness(X)
skew_y = skewness(Y)
skew_diff = abs(skew_y - skew_x)
print(" Skew Values (X,Y): (" + toString(target=skew_x, linesep=" ") + ", " + toString(target=skew_y, linesep=" ") + ")")
print(" Skew Difference: " + toString(skew_diff))
}