/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); double lowerBound = 0; double upperBound = 0; final double alpha = (1.0 - confidenceLevel) / 2.0; final FDistribution distributionLowerBound = new FDistribution(2 * (numberOfTrials - numberOfSuccesses + 1), 2 * numberOfSuccesses); final double fValueLowerBound = distributionLowerBound.inverseCumulativeProbability(1 - alpha); if (numberOfSuccesses > 0) { lowerBound = numberOfSuccesses / (numberOfSuccesses + (numberOfTrials - numberOfSuccesses + 1) * fValueLowerBound); } final FDistribution distributionUpperBound = new FDistribution(2 * (numberOfSuccesses + 1), 2 * (numberOfTrials - numberOfSuccesses)); final double fValueUpperBound = distributionUpperBound.inverseCumulativeProbability(1 - alpha); if (numberOfSuccesses > 0) { upperBound = (numberOfSuccesses + 1) * fValueUpperBound / (numberOfTrials - numberOfSuccesses + (numberOfSuccesses + 1) * fValueUpperBound); } return new ConfidenceInterval(lowerBound, upperBound, confidenceLevel); }
public double[] confidenceInterval(){ double N=sampleSize; double nI = numberOfVariables; double df1=N-1.0; double df2=(N-1.0)*(nI-1.0); double[] ci=new double[2]; FDistribution fDist = new FDistribution(df1, df2); try{ ci[0] = 1.0-((1.0-reliability.value())*fDist.inverseCumulativeProbability(0.975)); ci[1] = 1.0-((1.0-reliability.value())*fDist.inverseCumulativeProbability(0.025)); }catch(Exception ex){ ci[0] = Double.NaN; ci[1] = Double.NaN; } return ci; }
/** * This confidence interval applies to Coefficient alpha because it has a known sampling quadrature. * For other reliabilty methods it is only an approximation of the confidence interval because the * sampling quadrature of other reliability estimates is not known. * * @return confidence interval as an array with the lower bound in position 0 and the upper bound in position 1. */ public double[] confidenceInterval(double numberOfExaminees){ // double numberOfExaminees = matrix.getMaxSampleSize(); double[] confidenceInterval = new double[2]; double numberOfItems = (double)nItems; double df1=numberOfExaminees-1.0; double df2=(numberOfExaminees-1.0)*(numberOfItems-1.0); FDistribution fDist = new FDistribution(df1, df2); try{ confidenceInterval[0] = 1.0-((1.0-this.value())*fDist.inverseCumulativeProbability(0.975)); confidenceInterval[1] = 1.0-((1.0-this.value())*fDist.inverseCumulativeProbability(0.025)); }catch(Exception ex){ confidenceInterval[0] = Double.NaN; confidenceInterval[1] = Double.NaN; } return confidenceInterval; }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); double lowerBound = 0; double upperBound = 0; final double alpha = (1.0 - confidenceLevel) / 2.0; final FDistribution distributionLowerBound = new FDistribution(2 * (numberOfTrials - numberOfSuccesses + 1), 2 * numberOfSuccesses); final double fValueLowerBound = distributionLowerBound.inverseCumulativeProbability(1 - alpha); if (numberOfSuccesses > 0) { lowerBound = numberOfSuccesses / (numberOfSuccesses + (numberOfTrials - numberOfSuccesses + 1) * fValueLowerBound); } final FDistribution distributionUpperBound = new FDistribution(2 * (numberOfSuccesses + 1), 2 * (numberOfTrials - numberOfSuccesses)); final double fValueUpperBound = distributionUpperBound.inverseCumulativeProbability(1 - alpha); if (numberOfSuccesses > 0) { upperBound = (numberOfSuccesses + 1) * fValueUpperBound / (numberOfTrials - numberOfSuccesses + (numberOfSuccesses + 1) * fValueUpperBound); } return new ConfidenceInterval(lowerBound, upperBound, confidenceLevel); }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); double lowerBound = 0; double upperBound = 0; final double alpha = (1.0 - confidenceLevel) / 2.0; final FDistribution distributionLowerBound = new FDistribution(2 * (numberOfTrials - numberOfSuccesses + 1), 2 * numberOfSuccesses); final double fValueLowerBound = distributionLowerBound.inverseCumulativeProbability(1 - alpha); if (numberOfSuccesses > 0) { lowerBound = numberOfSuccesses / (numberOfSuccesses + (numberOfTrials - numberOfSuccesses + 1) * fValueLowerBound); } final FDistribution distributionUpperBound = new FDistribution(2 * (numberOfSuccesses + 1), 2 * (numberOfTrials - numberOfSuccesses)); final double fValueUpperBound = distributionUpperBound.inverseCumulativeProbability(1 - alpha); if (numberOfSuccesses > 0) { upperBound = (numberOfSuccesses + 1) * fValueUpperBound / (numberOfTrials - numberOfSuccesses + (numberOfSuccesses + 1) * fValueUpperBound); } return new ConfidenceInterval(lowerBound, upperBound, confidenceLevel); }
@Override public final void compute() { if (input[0].isDefined() && input[1].isDefined() && input[2].isDefined()) { double param = a.getDouble(); double param2 = b.getDouble(); double val = c.getDouble(); try { FDistribution dist = getFDistribution(param, param2); num.setValue(dist.inverseCumulativeProbability(val)); // P(T <= // val) } catch (Exception e) { e.printStackTrace(); num.setUndefined(); } } else { num.setUndefined(); } }