double[] scomponent() {

    DisturbanceSmoother smoother = new DisturbanceSmoother();
    smoother.setSsf(ssf);
    smoother.process(ssfdata);
    SmoothingResults sstates = smoother.calcSmoothedStates();
    double[] cmp = new double[ssfdata.getCount()];
    DataBlock z = new DataBlock(ssf.getStateDim());
    DataBlock zc = z.drop(2, 0);
    for (int i = 0; i < cmp.length; ++i) {
      zc.copy(S.row(i));
      cmp[i] = sstates.zcomponent(i, z);
    }
    return cmp;
  }