我试图在java中重新实现lowess算法。我在matlab页面中读到了以下步骤解释了这个问题:
- 计算跨度中每个数据点的回归权重。
- 执行加权线性最小二乘回归。对于lowess,回归使用一次多项式。
- 平滑值由感兴趣的预测值加权回归给出。
醇>
我有一个数据点列表(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是平滑值,还是我还应该做某事或使用其他方法进行回归?
非常感谢你的帮助。