我们在其中一个项目中尝试使用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
答案 0 :(得分:0)
我可以在没有完整代码示例的情况下猜测,但观察数量必须大于变量数量(在您的示例中为125)。
更确切地说,代码中的n必须大于125才能使回归生效。传递给回归方法的预测变量的数量可能少于。