Esempio n. 1
0
 public double[] Precs(double μ0_final, double σ0_final)
 {
     double[] precs      = new double[2];
     double[] precValues = DistributionSelection.PrecValues(StandardSelection.InverseProcessValue(μ0_final), σ0_final);
     precs[0] = pub_function.resolution_getReso(StandardSelection.ProcessValue(precValues[0]), 0.000001);
     precs[1] = pub_function.resolution_getReso(StandardSelection.ProcessValue(precValues[1]), 0.000001);
     return(precs);
 }
Esempio n. 2
0
            public OutputParameters GetResult(double[] xArray, int[] vArray)
            {
                for (int i = 0; i < xArray.Length; i++)
                {
                    xArray[i] = StandardSelection.InverseProcessValue(xArray[i]);
                }
                OutputParameters outputParameters = DistributionSelection.DotDistribution(xArray, vArray);

                outputParameters.μ0_final = StandardSelection.GetAvgValue(outputParameters.μ0_final);
                return(outputParameters);
            }
            public OutputParameters GetResult(double[] xArray, int[] vArray)
            {
                for (int i = 0; i < xArray.Length; i++)
                {
                    xArray[i] = StandardSelection.InverseProcessValue(xArray[i]);
                }
                var outputParameters = DistributionSelection.MLS_getMLS(xArray, vArray);

                DistributionSelection.Interval_estimation(xArray, vArray, ref outputParameters);
                outputParameters.μ0_final = StandardSelection.GetAvgValue(outputParameters.μ0_final);
                return(outputParameters);
            }
            public List <IntervalEstimation> ResponsePointIntervalEstimate(double[] x, int[] v, double reponseProbability, double confidenceLevel, double fq, double favg, double fsigma)
            {
                List <IntervalEstimation> intervalEstimations = new List <IntervalEstimation>();

                if (fq != 0)
                {
                    reponseProbability = DistributionSelection.PointIntervalDistribution(StandardSelection.InverseProcessValue(fq), StandardSelection.InverseProcessValue(favg), fsigma);
                }
                var Single = SingleSideEstimation(x, v, reponseProbability, confidenceLevel);

                intervalEstimations.Add(GetIntervalEstimationValue(Single));
                var Double = DoubleSideEstimation(x, v, reponseProbability, confidenceLevel);

                intervalEstimations.Add(GetIntervalEstimationValue(Double));
                return(intervalEstimations);
            }
Esempio n. 5
0
            public SideReturnData BatchIntervalCalculate(double Y_Ceiling, double Y_LowerLimit, int Y_PartitionNumber, double ConfidenceLevel, double favg, double fsigma, double[] xArray, int[] vArray, int intervalChoose)
            {
                SideReturnData sideReturnData = new SideReturnData();
                double         Y_ScaleLength  = (DistributionSelection.QnormAndQlogisDistribution(Y_Ceiling) - DistributionSelection.QnormAndQlogisDistribution(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] = DistributionSelection.PointIntervalDistribution(DistributionSelection.QnormAndQlogisDistribution(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];

                for (int i = 0; i < sideReturnData.responseProbability.Length; i++)
                {
                    IntervalEstimation ie = new IntervalEstimation();
                    if (intervalChoose == 0)
                    {
                        ie = SingleSideEstimation(xArray, vArray, sideReturnData.responseProbability[i], ConfidenceLevel);
                    }
                    else
                    {
                        ie = DoubleSideEstimation(xArray, vArray, sideReturnData.responseProbability[i], ConfidenceLevel);
                    }
                    sideReturnData.Y_LowerLimits[i] = ie.Confidence.Down;
                    sideReturnData.Y_Ceilings[i]    = ie.Confidence.Up;
                    double fq = sideReturnData.responseProbability[i];
                    sideReturnData.responsePoints[i] = StandardSelection.ProcessValue(StandardSelection.InverseProcessValue(favg) + (DistributionSelection.QnormAndQlogisDistribution(fq) * fsigma));
                }
                return(sideReturnData);
            }
Esempio n. 6
0
 public string Discription()
 {
     return(DistributionSelection.DistributionSelection() + StandardSelection.StandardSelection());
 }
Esempio n. 7
0
 public double CorrectionAlgorithm(double fsigma, int count) => DistributionSelection.CorrectionDistribution(count) * fsigma;
Esempio n. 8
0
 public IntervalEstimation DoubleSideEstimation(double[] xArray, int[] vArray, double reponseProbability, double confidenceLevel) => DistributionSelection.IntervalDistribution(StandardSelection.InverseProcessArray(xArray), vArray, reponseProbability, confidenceLevel);
Esempio n. 9
0
 public double ResponseProbabilityCalculate(double fq, double favg, double fsigma) => DistributionSelection.PointIntervalDistribution(StandardSelection.InverseProcessValue(fq), StandardSelection.InverseProcessValue(favg), fsigma);
Esempio n. 10
0
 public double ResponsePointCalculate(double fq, double favg, double fsigma) => StandardSelection.ProcessValue(StandardSelection.InverseProcessValue(favg) + (DistributionSelection.QnormAndQlogisDistribution(fq) * fsigma));
Esempio n. 11
0
 private void GetDistribution(double[] xArray, int[] vArray, double mumin, double mumax, double reso, ref OutputParameters outputParameters, out double z, double sigmaguess)
 {
     mumin  = StandardSelection.InverseProcessValue(mumin);
     mumax  = StandardSelection.InverseProcessValue(mumax);
     xArray = StandardSelection.InverseProcessArray(xArray);
     if (xArray.Length == 0)
     {
         pub_function.resolution_getReso((mumin + mumax) / 2, reso, out z);
         outputParameters.μ0_final = 0;
         outputParameters.σ0_final = 0;
     }
     else
     {
         int sum = 0;
         for (int j = 0; j < xArray.Length; j++)
         {
             sum += vArray[j];
         }
         if (sum == 0 || sum == xArray.Length)
         {
             z = xArray[xArray.Length - 1];
             double[] sumi = { (mumin + z) / 2, z - 2 * sigmaguess, 2 * z - xArray[0] };
             double[] sum0 = { (mumax + z) / 2, z + 2 * sigmaguess, 2 * z - xArray[0] };
             if (sum == xArray.Length)
             {
                 pub_function.resolution_getReso(pub_function.MIN_getMin(sumi), reso, out z);
             }
             else
             {
                 pub_function.resolution_getReso(pub_function.MAX_getMax(sum0), reso, out z);
             }
             outputParameters.μ0_final = 0;
             outputParameters.σ0_final = 0;
         }
         else
         {
             double[] xArray_change = new double[xArray.Length];
             int[]    vArray_change = new int[xArray.Length];
             int      ij;
             for (ij = 0; ij < xArray.Length; ij++)
             {
                 xArray_change[ij] = xArray[ij];
                 vArray_change[ij] = vArray[ij];
             }
             outputParameters.Maxf = pub_function.MAX_getMax(pub_function.getF(xArray_change, vArray_change));
             outputParameters.Mins = pub_function.MIN_getMin(pub_function.S_getS(xArray_change, vArray_change));
             double[] FZ   = pub_function.getF(xArray_change, vArray_change);   //失败的刺激量
             double[] SZ   = pub_function.S_getS(xArray_change, vArray_change); //成功的刺激量
             double   Diff = outputParameters.Mins - outputParameters.Maxf;
             if (DopDistributionSelection.IsValueSize(Diff, sigmaguess))
             {
                 pub_function.resolution_getReso((outputParameters.Mins + outputParameters.Maxf) / 2, reso, out z);
                 outputParameters.μ0_final = z;
                 outputParameters.σ0_final = 0;
             }
             else
             {
                 if (outputParameters.Mins > outputParameters.Maxf)
                 {
                     outputParameters.μ0_final = (outputParameters.Mins + outputParameters.Maxf) / 2;
                     outputParameters.σ0_final = 0;
                     pub_function.resolution_getReso(DopDistributionSelection.Fisher_getZ_new(xArray_change, vArray_change, outputParameters.μ0_final, sigmaguess), reso, out z);
                     outputParameters.sigmaguess = 0.8 * sigmaguess;
                 }
                 else
                 {
                     outputParameters            = DistributionSelection.MLS_getMLS(xArray_change, vArray_change);
                     outputParameters.sigmaguess = sigmaguess;
                     pub_function.resolution_getReso(DopDistributionSelection.Fisher_getZ_new(xArray_change, vArray_change, outputParameters.μ0_final, outputParameters.σ0_final), reso, out z);
                 }
             }
         }
     }
     DistributionSelection.Interval_estimation(xArray, vArray, ref outputParameters);
 }
 public string Discription() => DistributionSelection.DistributionSelection() + StandardSelection.StandardSelection();