//响应概率计算 public double ResponseProbabilityCalculation(double fq, double favg, double fsigma) { double rpc = LiftingDistributionSelection.PValue(LiftingMethodStandardSelection.InverseProcessValue(fq), LiftingMethodStandardSelection.InverseProcessValue(favg), fsigma); pub_function.resolution_getReso(rpc, 0.000001, out rpc); return(rpc); }
// public double[] VarianceFunctionResponsePointIntervalEstimated(double confidenceLevel, int textNumber, double fq, double favg, double fsigma, double fsigmaavg, double fsigmasigma) { double[] ie = new double[8]; double Tfw = updownMethod.get_t_shuangce(confidenceLevel, textNumber - 1); double Tfw_dance = updownMethod.get_t_dance(confidenceLevel, textNumber - 1); if (fq != 0) { fq = LiftingDistributionSelection.PValue(LiftingMethodStandardSelection.InverseProcessValue(fq), LiftingMethodStandardSelection.InverseProcessValue(favg), fsigma); ie = GetDoubleArray(Tfw, Tfw_dance, fq, favg, fsigma, fsigmaavg, fsigmasigma); } return(ie); }
//响应点区间估计 public List <IntervalEstimation> ResponsePointIntervalEstimated(double responseProbability, double confidenceLevel, double[] xArray, int[] vArray, double fq, double favg, double fsigma) { List <IntervalEstimation> intervalEstimations = new List <IntervalEstimation>(); if (fq != 0) { responseProbability = LiftingDistributionSelection.PValue(LiftingMethodStandardSelection.InverseProcessValue(fq), LiftingMethodStandardSelection.InverseProcessValue(favg), fsigma); pub_function.resolution_getReso(responseProbability, 0.000001, out responseProbability); } xArray = LiftingMethodStandardSelection.InverseProcessArray(xArray); var Single = SingleSideEstimation(xArray, vArray, responseProbability, confidenceLevel, LiftingMethodStandardSelection.InverseProcessValue(favg), fsigma); intervalEstimations.Add(GetIntervalEstimationValue(Single)); var Double = DoubleSideEstimation(xArray, vArray, responseProbability, confidenceLevel, LiftingMethodStandardSelection.InverseProcessValue(favg), fsigma); intervalEstimations.Add(GetIntervalEstimationValue(Double)); return(intervalEstimations); }
private SideReturnData GetSideReturnDataValue(double Y_Ceiling, double Y_LowerLimit, int Y_PartitionNumber) { SideReturnData sideReturnData = new SideReturnData(); double Y_ScaleLength = (LiftingDistributionSelection.QValue(Y_Ceiling) - LiftingDistributionSelection.QValue(Y_LowerLimit)) / Y_PartitionNumber; sideReturnData.responseProbability = new double[Y_PartitionNumber + 1]; for (int i = 0; i <= Y_PartitionNumber; i++) { if (i == 0) { sideReturnData.responseProbability[i] = Y_LowerLimit; } else { sideReturnData.responseProbability[i] = LiftingDistributionSelection.PValue(LiftingDistributionSelection.QValue(Y_LowerLimit) + i * Y_ScaleLength, 0, 1); } } sideReturnData.Y_Ceilings = new double[sideReturnData.responseProbability.Length]; sideReturnData.Y_LowerLimits = new double[sideReturnData.responseProbability.Length]; sideReturnData.responsePoints = new double[sideReturnData.responseProbability.Length]; return(sideReturnData); }