当输出具有随机行为时,如何执行多元多项式回归?

时间:2017-06-23 19:06:49

标签: r matlab

我正在模拟实验。该实验具有3个参数a,b,c(变量?)但是结果r不能被“预测”,因为它具有随机分量。为了最小化随机分量,我已经多次运行这个实验(n)。所以在简历中我有n个4元组a,b,c,r,其中a,b,c是相同的,但r是变化的。每批实验都运行a,b,c(k批次)的不同值,使得完整的数据集具有k次n组4元组。

我想找出适合这些数据的最佳多项式,以及如何比较它们:

fit1:enter image description hereenter image description here

fit2:enter image description hereenter image description here

fit3:一些三次多项式函数和相应的误差

fit4:另一个3度(更简单)的多项式函数和相应的误差

依旧......

这可以用R或Matlab ®完成。我搜索并找到了很多例子,但是没有一个处理不同输出的相同输入值。

我考虑过进行多元多项式回归n次,为每个参数增加一些小的delta,但在此之前我宁愿采用更清洁的溶剂。

任何帮助都将不胜感激。

提前致谢, 雅克

1 个答案:

答案 0 :(得分:0)

多项式回归应该能够很好地处理随机模拟。只需模拟rn次,并对您模拟的所有点执行多元多项式回归(我建议polyfitn())。

对于相同的r,您有多个[a,b,c]值,但合适的曲线应该能够估计真实的分布。

在polyfitn中,它看起来像这样

 n = 1000;
 a = rand(500,1);
 b = rand(500,1);
 c = rand(500,1);
 for n = 1:1000
    for i = 1:length(a)
       r(n,i) = foo(a,b,c);
    end
 end   

 my_functions = {'a^2 b^2 c^2  a  b  c',...};
 for fun_id = 1:length(my_functions)   
      p{f_id} = polyfitn(repmat([a,b,c],[n,1]),r(:),myfunctions{fun_id})
 end

从基函数迭代地/递归地生成一组多项式方程并不困难。但对于三个变量,可能没有必要。除非你有一个特定的理由来拟合高阶多项式(行星物理学,粒子物理学等物理学),否则你不应该有太多的函数来拟合。除非您有特定的理由这样做(过度拟合的风险,稀疏的数据互变噪声,更准确的非线性方法),否则使用高阶多项式来解释数据通常不是一种好的做法。