使用MillerUpdatingRegression类时ArrayIndexOutOfBounds异常

时间:2014-05-06 23:45:11

标签: java apache apache-commons-math

我们在其中一个项目中尝试使用MillerUpdatingRegression类并遇到了问题。在创建了类的实例,提供了期望的变量数量并从整个样本集中添加观察结果之后,我们称之为" regress(int [])"方法,通知回归过程我们想要包括哪些变量(整个预测变量集的子集)。

当我们这样做时,我们在进程中收到一个ArrayIndexOutOfBounds异常,因为期望的变量数(nvars,在实例化MillerUpdatingRegression类时提供)小于传递给"回归的变量数( INT [])"方法。我们的理解是,这个整数数组可能是所有观测值的预测指数的一个子集。

有谁知道我们在这里缺少什么?

====更新了代码====

double predictorData[][] = new double[n][125]; double predictions[] = new double[n];

//predictorData is a [n x 125] two-dimensional array of //features/predictors with n samples and 125 predictors //predictionsArray is a n-length array of predictions //for the sample set

int numberOfPredictorVariables = 125; boolean includeConstantWhenBuildingModel = true; MillerUpdatingRegression regression = new MillerUpdatingRegression(numberOfPredictorVariables,includeConstantWhenBuildingModel); regression.addObservations(predictorData,predictionsArray)

int predictorsToIncludeInRegression[] = {0,3,9,11}; regression.regress(predictorsToIncludeInRegression); //this is where the ArrayIndexOutOfBounds exception is generated

1 个答案:

答案 0 :(得分:0)

我可以在没有完整代码示例的情况下猜测,但观察数量必须大于变量数量(在您的示例中为125)。

更确切地说,代码中的n必须大于125才能使回归生效。传递给回归方法的预测变量的数量可能少于。