下面的代码取自示例...如何获得在Excel等输出中可以找到的p值和t-stat?
OLSMultipleLinearRegression regression2 = new OLSMultipleLinearRegression();
double[] y = { 4, 8, 13, 18};
double[][] x = {{ 1, 1, 1 },
{ 1, 2, 4 },
{ 1, 3, 9 },
{ 1, 4, 16 }};
regression2.newSampleData(y, x);
regression2.setNoIntercept(true);
double[] beta = regression2.estimateRegressionParameters();
for (double d : beta) {
System.out.println("D: " + d);
}在发布了这个问题后,我解决了t-stat部分:
for (int i=0; i < beta.length; i++){
double tstat = beta[i] / regression.estimateRegressionParametersStandardErrors()[i];
System.out.println("t-stats(" +i +") : " +tstat );
}发布于 2015-11-11 05:01:25
int residualdf = regression.estimateResiduals().length-beta.length;
for (int i=0; i < beta.length; i++){
double tstat = beta[i] / regression.estimateRegressionParametersStandardErrors()[i];
double pvalue = new TDistribution(residualdf).cumulativeProbability(-FastMath.abs(tstat))*2;
System.out.println("p-value(" +i +") : " +pvalue );
}这将为您提供p值。它无论如何都没有优化,但值匹配得很完美。
我已经将我的代码更新到了下面,以处理评论。它与Excel匹配。
final double[] beta = regression.estimateRegressionParameters();
final double[] standardErrors = regression.estimateRegressionParametersStandardErrors();
final int residualdf = regression.estimateResiduals().length - beta.length;
final TDistribution tdistribution = new TDistribution(residualdf);
//calculate p-value and create coefficient
final Map<RegressionCoefficientNames, RegressionCoefficient> coefficientMap = new HashMap<>(beta.length);
for (int i = 0; i < beta.length; i++)
{
double tstat = beta[i] / standardErrors[i];
double pvalue = tdistribution.cumulativeProbability(-FastMath.abs(tstat)) * 2;
final RegressionCoefficient coefficient = new RegressionCoefficient(extensionModelType.getNameByIndex(i),
beta[i],
standardErrors[i],
tstat,
pvalue);
coefficientMap.put(extensionModelType.getNameByIndex(i), coefficient);
}以下是改进后的代码。我正在匹配
class RegressionCoefficient {
private final RegressionCoefficientNames valueName;
private final Double coefficient;
private final Double standardError;
private final Double tStat;
private final Double pValue;
}https://stackoverflow.com/questions/33638170
复制相似问题