实现lowess方法

时间:2013-02-06 13:31:02

标签: regression smooth weighted-average

我试图在java中重新实现lowess算法。我在matlab页面中读到了以下步骤解释了这个问题:

  
      
  1. 计算跨度中每个数据点的回归权重。
  2.   
  3. 执行加权线性最小二乘回归。对于lowess,回归使用一次多项式。
  4.   
  5. 平滑值由感兴趣的预测值加权回归给出。
  6.   

我有一个数据点列表(x,y),并且对于每个数据点,我使用三立方核计算邻居的权重(这里,alpha = 0.01,即考虑平滑的邻居0.01)(步骤1) )。

我不确定第二步应该用什么方法。目前我制作了两个阵列, 内核 y w 是权重列表, dx 是数据点的 x 位置,而 dy y 数据点的位置。 j 指的是 j '邻居。平滑值应在y轴上计算。

kernel[j][0]=w[j];
kernel[j][1]=w[j]*d.x;
y[j]=w[j]*d.y;

我使用以下行来计算回归:

SimpleRegression reg= new SimpleRegression();
reg.addObservations(kernel,y);
double rm=reg.getIntercept();
double rm0=reg.getSlope();

1)我应该在哪里确定学位(一次多项式)? 2)我有正确的是rm0是平滑值,还是我还应该做某事或使用其他方法进行回归?

非常感谢你的帮助。

0 个答案:

没有答案