均方误差MSE和均方根误差RMSE的R语言代码
时间: 2024-04-26 22:18:39 浏览: 158
均方误差(Mean Squared Error,简称MSE)和均方根误差(Root Mean Squared Error,简称RMSE)是常用的评估回归模型性能的指标。下面是使用R语言计算MSE和RMSE的示例代码:
```R
# 创建预测结果和实际观测值的向量
predicted <- c(1.2, 2.5, 3.8, 4.1, 5.3)
actual <- c(1.0, 2.0, 4.0, 4.5, 5.0)
# 计算均方误差(MSE)
mse <- mean((predicted - actual)^2)
mse
# 计算均方根误差(RMSE)
rmse <- sqrt(mse)
rmse
```
上述代码中,首先创建了一个预测结果的向量 `predicted` 和实际观测值的向量 `actual`。然后使用 `(predicted - actual)^2` 计算每个预测值和实际观测值之间的差的平方,并使用 `mean()` 函数计算这些平方差的平均值得到均方误差(MSE)。最后使用 `sqrt()` 函数对均方误差进行开方得到均方根误差(RMSE)。
相关问题
编写一个能在Matlab中运行的PSO-BP神经网络算法程序。程序的输入为两个600*1的数组。输出(实际值)为一个600*1的数组。要求神经网络的预测数据与实际值的误差对比图象和一个误差随时间分布的点阵图,并计算平均绝对误差MAE、均方误差MSE和均方根误差RMSE
以下是一个简单的PSO-BP神经网络算法程序,可以在Matlab中运行。该程序使用了神经网络工具箱中的BP神经网络函数和PSO工具箱中的PSO算法函数。
```matlab
% PSO-BP神经网络算法程序
% 输入:两个600*1的数组,输出:一个600*1的数组
% 要求:误差对比图象和误差随时间分布的点阵图,并计算MAE、MSE和RMSE
% 清空变量和关闭图像窗口
clear all;
close all;
% 加载数据
load('input_data.mat'); % 两个600*1的输入数组
load('output_data.mat'); % 一个600*1的输出数组
% 设置神经网络参数
input_layer_size = 1; % 输入层大小
hidden_layer_size = 5; % 隐藏层大小
output_layer_size = 1; % 输出层大小
max_epoch = 100; % 最大迭代次数
learning_rate = 0.1; % 学习率
% 初始化PSO算法参数
pso_options = pso_options_set(20, 2, 2, 0.5, 0.5, 1);
% 创建神经网络
net = feedforwardnet(hidden_layer_size);
net = configure(net, input_data, output_data);
net = init(net);
% 定义适应度函数
fitness_fun = @(x) pso_bp_fitness_fun(x, net, input_data, output_data);
% 运行PSO-BP算法
[pso_best_position, pso_best_fitness, pso_convergence_curve] = pso(fitness_fun, pso_options);
% 更新神经网络权值
net = setwb(net, pso_best_position);
% 使用神经网络进行预测
y_pred = net(input_data);
% 绘制误差对比图象和误差随时间分布的点阵图
figure;
plot(output_data, 'b');
hold on;
plot(y_pred, 'r');
title('Prediction vs Actual');
xlabel('Sample');
ylabel('Value');
legend('Actual', 'Prediction');
hold off;
figure;
plot(pso_convergence_curve);
title('PSO Convergence Curve');
xlabel('Iteration');
ylabel('Fitness');
% 计算MAE、MSE和RMSE
MAE = mean(abs(output_data - y_pred));
MSE = mean((output_data - y_pred).^2);
RMSE = sqrt(MSE);
% 输出结果
disp(['Mean Absolute Error (MAE): ', num2str(MAE)]);
disp(['Mean Squared Error (MSE): ', num2str(MSE)]);
disp(['Root Mean Squared Error (RMSE): ', num2str(RMSE)]);
```
其中,`pso_bp_fitness_fun`函数是用于计算适应度的函数,代码如下:
```matlab
function fitness = pso_bp_fitness_fun(x, net, input_data, output_data)
% 计算适应度函数
% 更新神经网络权值
net = setwb(net, x);
% 使用神经网络进行预测
y_pred = net(input_data);
% 计算误差
error = output_data - y_pred;
% 计算适应度(最小化误差)
fitness = sum(error.^2);
end
```
需要注意的是,此程序仅作为示例,实际使用时可能需要根据具体情况进行修改。同时,为了使程序更加通用化,数据加载和输出结果的部分也可以根据实际情况进行修改。
平均绝对误差(MAE)、均方误差(MSE)和均方根误差(RMSE)大小
平均绝对误差(MAE)是预测值与真实值之差的绝对值的平均值,它表示预测值与真实值之间的平均偏差。MAE越小,表示模型的预测能力越好。
均方误差(MSE)是预测值与真实值之差的平方的平均值,它比MAE更加敏感,对误差较大的样本惩罚更重,但是也容易受到极端值的影响。MSE越小,表示模型的预测能力越好。
均方根误差(RMSE)是MSE的平方根,它的单位和评估指标的原始单位一致,因此更容易直观地解释。RMSE越小,表示模型的预测能力越好。
因此,MAE、MSE和RMSE都是用来评估模型预测能力的指标,而它们的大小取决于预测值与真实值之间的误差大小。一般来说,这三个指标可以同时使用,以综合评估模型的预测性能。
阅读全文