mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	
		
			
	
	
		
			501 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			501 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | 
 | ||
|  | [section:cs_eg Chi Squared Distribution Examples] | ||
|  | 
 | ||
|  | [section:chi_sq_intervals Confidence Intervals on the Standard Deviation] | ||
|  | 
 | ||
|  | Once you have calculated the standard deviation for your data, a legitimate | ||
|  | question to ask is "How reliable is the calculated standard deviation?". | ||
|  | For this situation the Chi Squared distribution can be used to calculate | ||
|  | confidence intervals for the standard deviation. | ||
|  | 
 | ||
|  | The full example code & sample output is in | ||
|  | [@../../example/chi_square_std_dev_test.cpp chi_square_std_dev_test.cpp]. | ||
|  | 
 | ||
|  | We'll begin by defining the procedure that will calculate and print out the | ||
|  | confidence intervals: | ||
|  | 
 | ||
|  |    void confidence_limits_on_std_deviation( | ||
|  |         double Sd,    // Sample Standard Deviation | ||
|  |         unsigned N)   // Sample size | ||
|  |    { | ||
|  | 
 | ||
|  | We'll begin by printing out some general information: | ||
|  | 
 | ||
|  |    cout << | ||
|  |       "________________________________________________\n" | ||
|  |       "2-Sided Confidence Limits For Standard Deviation\n" | ||
|  |       "________________________________________________\n\n"; | ||
|  |    cout << setprecision(7); | ||
|  |    cout << setw(40) << left << "Number of Observations" << "=  " << N << "\n"; | ||
|  |    cout << setw(40) << left << "Standard Deviation" << "=  " << Sd << "\n"; | ||
|  | 
 | ||
|  | and then define a table of significance levels for which we'll calculate | ||
|  | intervals: | ||
|  | 
 | ||
|  |    double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; | ||
|  | 
 | ||
|  | The distribution we'll need to calculate the confidence intervals is a | ||
|  | Chi Squared distribution, with N-1 degrees of freedom: | ||
|  | 
 | ||
|  |    chi_squared dist(N - 1); | ||
|  | 
 | ||
|  | For each value of alpha, the formula for the confidence interval is given by: | ||
|  | 
 | ||
|  | [equation chi_squ_tut1] | ||
|  | 
 | ||
|  | Where [equation chi_squ_tut2] is the upper critical value, and | ||
|  | [equation chi_squ_tut3] is the lower critical value of the | ||
|  | Chi Squared distribution. | ||
|  | 
 | ||
|  | In code we begin by printing out a table header: | ||
|  | 
 | ||
|  |    cout << "\n\n" | ||
|  |            "_____________________________________________\n" | ||
|  |            "Confidence          Lower          Upper\n" | ||
|  |            " Value (%)          Limit          Limit\n" | ||
|  |            "_____________________________________________\n"; | ||
|  | 
 | ||
|  | and then loop over the values of alpha and calculate the intervals | ||
|  | for each: remember that the lower critical value is the same as the | ||
|  | quantile, and the upper critical value is the same as the quantile | ||
|  | from the complement of the probability: | ||
|  | 
 | ||
|  |    for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) | ||
|  |    { | ||
|  |       // Confidence value: | ||
|  |       cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); | ||
|  |       // Calculate limits: | ||
|  |       double lower_limit = sqrt((N - 1) * Sd * Sd / quantile(complement(dist, alpha[i] / 2))); | ||
|  |       double upper_limit = sqrt((N - 1) * Sd * Sd / quantile(dist, alpha[i] / 2)); | ||
|  |       // Print Limits: | ||
|  |       cout << fixed << setprecision(5) << setw(15) << right << lower_limit; | ||
|  |       cout << fixed << setprecision(5) << setw(15) << right << upper_limit << endl; | ||
|  |    } | ||
|  |    cout << endl; | ||
|  | 
 | ||
|  | To see some example output we'll use the | ||
|  | [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3581.htm | ||
|  | gear data] from the __handbook. | ||
|  | The data represents measurements of gear diameter from a manufacturing | ||
|  | process. | ||
|  | 
 | ||
|  | [pre''' | ||
|  | ________________________________________________ | ||
|  | 2-Sided Confidence Limits For Standard Deviation | ||
|  | ________________________________________________ | ||
|  | 
 | ||
|  | Number of Observations                  =  100 | ||
|  | Standard Deviation                      =  0.006278908 | ||
|  | 
 | ||
|  | 
 | ||
|  | _____________________________________________ | ||
|  | Confidence          Lower          Upper | ||
|  |  Value (%)          Limit          Limit | ||
|  | _____________________________________________ | ||
|  |     50.000        0.00601        0.00662 | ||
|  |     75.000        0.00582        0.00685 | ||
|  |     90.000        0.00563        0.00712 | ||
|  |     95.000        0.00551        0.00729 | ||
|  |     99.000        0.00530        0.00766 | ||
|  |     99.900        0.00507        0.00812 | ||
|  |     99.990        0.00489        0.00855 | ||
|  |     99.999        0.00474        0.00895 | ||
|  | '''] | ||
|  | 
 | ||
|  | So at the 95% confidence level we conclude that the standard deviation | ||
|  | is between 0.00551 and 0.00729. | ||
|  | 
 | ||
|  | [h4 Confidence intervals as a function of the number of observations] | ||
|  | 
 | ||
|  | Similarly, we can also list the confidence intervals for the standard deviation | ||
|  | for the common confidence levels 95%, for increasing numbers of observations. | ||
|  | 
 | ||
|  | The standard deviation used to compute these values is unity, | ||
|  | so the limits listed are *multipliers* for any particular standard deviation. | ||
|  | For example, given a standard deviation of 0.0062789 as in the example | ||
|  | above; for 100 observations the multiplier is 0.8780 | ||
|  | giving the lower confidence limit of 0.8780 * 0.006728 = 0.00551. | ||
|  | 
 | ||
|  | [pre''' | ||
|  | ____________________________________________________ | ||
|  | Confidence level (two-sided)            =  0.0500000 | ||
|  | Standard Deviation                      =  1.0000000 | ||
|  | ________________________________________ | ||
|  | Observations        Lower          Upper | ||
|  |                     Limit          Limit | ||
|  | ________________________________________ | ||
|  |          2         0.4461        31.9102 | ||
|  |          3         0.5207         6.2847 | ||
|  |          4         0.5665         3.7285 | ||
|  |          5         0.5991         2.8736 | ||
|  |          6         0.6242         2.4526 | ||
|  |          7         0.6444         2.2021 | ||
|  |          8         0.6612         2.0353 | ||
|  |          9         0.6755         1.9158 | ||
|  |         10         0.6878         1.8256 | ||
|  |         15         0.7321         1.5771 | ||
|  |         20         0.7605         1.4606 | ||
|  |         30         0.7964         1.3443 | ||
|  |         40         0.8192         1.2840 | ||
|  |         50         0.8353         1.2461 | ||
|  |         60         0.8476         1.2197 | ||
|  |        100         0.8780         1.1617 | ||
|  |        120         0.8875         1.1454 | ||
|  |       1000         0.9580         1.0459 | ||
|  |      10000         0.9863         1.0141 | ||
|  |      50000         0.9938         1.0062 | ||
|  |     100000         0.9956         1.0044 | ||
|  |    1000000         0.9986         1.0014 | ||
|  | '''] | ||
|  | 
 | ||
|  | With just 2 observations the limits are from *0.445* up to to *31.9*, | ||
|  | so the standard deviation might be about *half* | ||
|  | the observed value up to [*30 times] the observed value! | ||
|  | 
 | ||
|  | Estimating a standard deviation with just a handful of values leaves a very great uncertainty, | ||
|  | especially the upper limit. | ||
|  | Note especially how far the upper limit is skewed from the most likely standard deviation. | ||
|  | 
 | ||
|  | Even for 10 observations, normally considered a reasonable number, | ||
|  | the range is still from 0.69 to 1.8, about a range of 0.7 to 2, | ||
|  | and is still highly skewed with an upper limit *twice* the median. | ||
|  | 
 | ||
|  | When we have 1000 observations, the estimate of the standard deviation is starting to look convincing, | ||
|  | with a range from 0.95 to 1.05 - now near symmetrical, but still about + or - 5%. | ||
|  | 
 | ||
|  | Only when we have 10000 or more repeated observations can we start to be reasonably confident | ||
|  | (provided we are sure that other factors like drift are not creeping in). | ||
|  | 
 | ||
|  | For 10000 observations, the interval is 0.99 to 1.1 - finally a really convincing + or -1% confidence. | ||
|  | 
 | ||
|  | [endsect] [/section:chi_sq_intervals Confidence Intervals on the Standard Deviation] | ||
|  | 
 | ||
|  | [section:chi_sq_test Chi-Square Test for the Standard Deviation] | ||
|  | 
 | ||
|  | We use this test to determine whether the standard deviation of a sample | ||
|  | differs from a specified value.  Typically this occurs in process change | ||
|  | situations where we wish to compare the standard deviation of a new | ||
|  | process to an established one. | ||
|  | 
 | ||
|  | The code for this example is contained in | ||
|  | [@../../example/chi_square_std_dev_test.cpp chi_square_std_dev_test.cpp], and | ||
|  | we'll begin by defining the procedure that will print out the test | ||
|  | statistics: | ||
|  | 
 | ||
|  |    void chi_squared_test( | ||
|  |        double Sd,     // Sample std deviation | ||
|  |        double D,      // True std deviation | ||
|  |        unsigned N,    // Sample size | ||
|  |        double alpha)  // Significance level | ||
|  |    { | ||
|  | 
 | ||
|  | The procedure begins by printing a summary of the input data: | ||
|  | 
 | ||
|  |    using namespace std; | ||
|  |    using namespace boost::math; | ||
|  | 
 | ||
|  |    // Print header: | ||
|  |    cout << | ||
|  |       "______________________________________________\n" | ||
|  |       "Chi Squared test for sample standard deviation\n" | ||
|  |       "______________________________________________\n\n"; | ||
|  |    cout << setprecision(5); | ||
|  |    cout << setw(55) << left << "Number of Observations" << "=  " << N << "\n"; | ||
|  |    cout << setw(55) << left << "Sample Standard Deviation" << "=  " << Sd << "\n"; | ||
|  |    cout << setw(55) << left << "Expected True Standard Deviation" << "=  " << D << "\n\n"; | ||
|  | 
 | ||
|  | The test statistic (T) is simply the ratio of the sample and "true" standard | ||
|  | deviations squared, multiplied by the number of degrees of freedom (the | ||
|  | sample size less one): | ||
|  | 
 | ||
|  |    double t_stat = (N - 1) * (Sd / D) * (Sd / D); | ||
|  |    cout << setw(55) << left << "Test Statistic" << "=  " << t_stat << "\n"; | ||
|  | 
 | ||
|  | The distribution we need to use, is a Chi Squared distribution with N-1 | ||
|  | degrees of freedom: | ||
|  | 
 | ||
|  |    chi_squared dist(N - 1); | ||
|  | 
 | ||
|  | The various hypothesis that can be tested are summarised in the following table: | ||
|  | 
 | ||
|  | [table | ||
|  | [[Hypothesis][Test]] | ||
|  | [[The null-hypothesis: there is no difference in standard deviation from the specified value] | ||
|  |     [ Reject if T < [chi][super 2][sub (1-alpha/2; N-1)] or T > [chi][super 2][sub (alpha/2; N-1)] ]] | ||
|  | [[The alternative hypothesis: there is a difference in standard deviation from the specified value] | ||
|  |     [ Reject if [chi][super 2][sub (1-alpha/2; N-1)] >= T  >= [chi][super 2][sub (alpha/2; N-1)] ]] | ||
|  | [[The alternative hypothesis: the standard deviation is less than the specified value] | ||
|  |     [ Reject if [chi][super 2][sub (1-alpha; N-1)] <= T ]] | ||
|  | [[The alternative hypothesis: the standard deviation is greater than the specified value] | ||
|  |     [ Reject if [chi][super 2][sub (alpha; N-1)] >= T ]] | ||
|  | ] | ||
|  | 
 | ||
|  | Where [chi][super 2][sub (alpha; N-1)] is the upper critical value of the | ||
|  | Chi Squared distribution, and [chi][super 2][sub (1-alpha; N-1)] is the | ||
|  | lower critical value. | ||
|  | 
 | ||
|  | Recall that the lower critical value is the same | ||
|  | as the quantile, and the upper critical value is the same as the quantile | ||
|  | from the complement of the probability, that gives us the following code | ||
|  | to calculate the critical values: | ||
|  | 
 | ||
|  |    double ucv = quantile(complement(dist, alpha)); | ||
|  |    double ucv2 = quantile(complement(dist, alpha / 2)); | ||
|  |    double lcv = quantile(dist, alpha); | ||
|  |    double lcv2 = quantile(dist, alpha / 2); | ||
|  |    cout << setw(55) << left << "Upper Critical Value at alpha: " << "=  " | ||
|  |       << setprecision(3) << scientific << ucv << "\n"; | ||
|  |    cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "=  " | ||
|  |       << setprecision(3) << scientific << ucv2 << "\n"; | ||
|  |    cout << setw(55) << left << "Lower Critical Value at alpha: " << "=  " | ||
|  |       << setprecision(3) << scientific << lcv << "\n"; | ||
|  |    cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "=  " | ||
|  |       << setprecision(3) << scientific << lcv2 << "\n\n"; | ||
|  | 
 | ||
|  | Now that we have the critical values, we can compare these to our test | ||
|  | statistic, and print out the result of each hypothesis and test: | ||
|  | 
 | ||
|  |    cout << setw(55) << left << | ||
|  |       "Results for Alternative Hypothesis and alpha" << "=  " | ||
|  |       << setprecision(4) << fixed << alpha << "\n\n"; | ||
|  |    cout << "Alternative Hypothesis              Conclusion\n"; | ||
|  | 
 | ||
|  |    cout << "Standard Deviation != " << setprecision(3) << fixed << D << "            "; | ||
|  |    if((ucv2 < t_stat) || (lcv2 > t_stat)) | ||
|  |       cout << "ACCEPTED\n"; | ||
|  |    else | ||
|  |       cout << "REJECTED\n"; | ||
|  | 
 | ||
|  |    cout << "Standard Deviation  < " << setprecision(3) << fixed << D << "            "; | ||
|  |    if(lcv > t_stat) | ||
|  |       cout << "ACCEPTED\n"; | ||
|  |    else | ||
|  |       cout << "REJECTED\n"; | ||
|  | 
 | ||
|  |    cout << "Standard Deviation  > " << setprecision(3) << fixed << D << "            "; | ||
|  |    if(ucv < t_stat) | ||
|  |       cout << "ACCEPTED\n"; | ||
|  |    else | ||
|  |       cout << "REJECTED\n"; | ||
|  |    cout << endl << endl; | ||
|  | 
 | ||
|  | To see some example output we'll use the | ||
|  | [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3581.htm | ||
|  | gear data] from the __handbook. | ||
|  | The data represents measurements of gear diameter from a manufacturing | ||
|  | process.  The program output is deliberately designed to mirror | ||
|  | the DATAPLOT output shown in the | ||
|  | [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda358.htm | ||
|  | NIST Handbook Example]. | ||
|  | 
 | ||
|  | [pre''' | ||
|  | ______________________________________________ | ||
|  | Chi Squared test for sample standard deviation | ||
|  | ______________________________________________ | ||
|  | 
 | ||
|  | Number of Observations                                 =  100 | ||
|  | Sample Standard Deviation                              =  0.00628 | ||
|  | Expected True Standard Deviation                       =  0.10000 | ||
|  | 
 | ||
|  | Test Statistic                                         =  0.39030 | ||
|  | CDF of test statistic:                                 =  1.438e-099 | ||
|  | Upper Critical Value at alpha:                         =  1.232e+002 | ||
|  | Upper Critical Value at alpha/2:                       =  1.284e+002 | ||
|  | Lower Critical Value at alpha:                         =  7.705e+001 | ||
|  | Lower Critical Value at alpha/2:                       =  7.336e+001 | ||
|  | 
 | ||
|  | Results for Alternative Hypothesis and alpha           =  0.0500 | ||
|  | 
 | ||
|  | Alternative Hypothesis              Conclusion''' | ||
|  | Standard Deviation != 0.100            ACCEPTED | ||
|  | Standard Deviation  < 0.100            ACCEPTED | ||
|  | Standard Deviation  > 0.100            REJECTED | ||
|  | ] | ||
|  | 
 | ||
|  | In this case we are testing whether the sample standard deviation is 0.1, | ||
|  | and the null-hypothesis is rejected, so we conclude that the standard | ||
|  | deviation ['is not] 0.1. | ||
|  | 
 | ||
|  | For an alternative example, consider the | ||
|  | [@http://www.itl.nist.gov/div898/handbook/prc/section2/prc23.htm | ||
|  | silicon wafer data] again from the __handbook. | ||
|  | In this scenario a supplier of 100 ohm.cm silicon wafers claims | ||
|  | that his fabrication  process can produce wafers with sufficient | ||
|  | consistency so that the standard deviation of resistivity for | ||
|  | the lot does not exceed 10 ohm.cm. A sample of N = 10 wafers taken | ||
|  | from the lot has a standard deviation of 13.97 ohm.cm, and the question | ||
|  | we ask ourselves is "Is the suppliers claim correct?". | ||
|  | 
 | ||
|  | The program output now looks like this: | ||
|  | 
 | ||
|  | [pre''' | ||
|  | ______________________________________________ | ||
|  | Chi Squared test for sample standard deviation | ||
|  | ______________________________________________ | ||
|  | 
 | ||
|  | Number of Observations                                 =  10 | ||
|  | Sample Standard Deviation                              =  13.97000 | ||
|  | Expected True Standard Deviation                       =  10.00000 | ||
|  | 
 | ||
|  | Test Statistic                                         =  17.56448 | ||
|  | CDF of test statistic:                                 =  9.594e-001 | ||
|  | Upper Critical Value at alpha:                         =  1.692e+001 | ||
|  | Upper Critical Value at alpha/2:                       =  1.902e+001 | ||
|  | Lower Critical Value at alpha:                         =  3.325e+000 | ||
|  | Lower Critical Value at alpha/2:                       =  2.700e+000 | ||
|  | 
 | ||
|  | Results for Alternative Hypothesis and alpha           =  0.0500 | ||
|  | 
 | ||
|  | Alternative Hypothesis              Conclusion''' | ||
|  | Standard Deviation != 10.000            REJECTED | ||
|  | Standard Deviation  < 10.000            REJECTED | ||
|  | Standard Deviation  > 10.000            ACCEPTED | ||
|  | ] | ||
|  | 
 | ||
|  | In this case, our null-hypothesis is that the standard deviation of | ||
|  | the sample is less than 10: this hypothesis is rejected in the analysis | ||
|  | above, and so we reject the manufacturers claim. | ||
|  | 
 | ||
|  | [endsect] [/section:chi_sq_test Chi-Square Test for the Standard Deviation] | ||
|  | 
 | ||
|  | [section:chi_sq_size Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation] | ||
|  | 
 | ||
|  | Suppose we conduct a Chi Squared test for standard deviation and the result | ||
|  | is borderline, a legitimate question to ask is "How large would the sample size | ||
|  | have to be in order to produce a definitive result?" | ||
|  | 
 | ||
|  | The class template [link math_toolkit.dist_ref.dists.chi_squared_dist | ||
|  | chi_squared_distribution] has a static method | ||
|  | `find_degrees_of_freedom` that will calculate this value for | ||
|  | some acceptable risk of type I failure /alpha/, type II failure | ||
|  | /beta/, and difference from the standard deviation /diff/.  Please | ||
|  | note that the method used works on variance, and not standard deviation | ||
|  | as is usual for the Chi Squared Test. | ||
|  | 
 | ||
|  | The code for this example is located in | ||
|  | [@../../example/chi_square_std_dev_test.cpp chi_square_std_dev_test.cpp]. | ||
|  | 
 | ||
|  | We begin by defining a procedure to print out the sample sizes required | ||
|  | for various risk levels: | ||
|  | 
 | ||
|  |    void chi_squared_sample_sized( | ||
|  |         double diff,      // difference from variance to detect | ||
|  |         double variance)  // true variance | ||
|  |    { | ||
|  | 
 | ||
|  | The procedure begins by printing out the input data: | ||
|  | 
 | ||
|  |    using namespace std; | ||
|  |    using namespace boost::math; | ||
|  | 
 | ||
|  |    // Print out general info: | ||
|  |    cout << | ||
|  |       "_____________________________________________________________\n" | ||
|  |       "Estimated sample sizes required for various confidence levels\n" | ||
|  |       "_____________________________________________________________\n\n"; | ||
|  |    cout << setprecision(5); | ||
|  |    cout << setw(40) << left << "True Variance" << "=  " << variance << "\n"; | ||
|  |    cout << setw(40) << left << "Difference to detect" << "=  " << diff << "\n"; | ||
|  | 
 | ||
|  | And defines a table of significance levels for which we'll calculate sample sizes: | ||
|  | 
 | ||
|  |    double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; | ||
|  | 
 | ||
|  | For each value of alpha we can calculate two sample sizes: one where the | ||
|  | sample variance is less than the true value by /diff/ and one | ||
|  | where it is greater than the true value by /diff/.  Thanks to the | ||
|  | asymmetric nature of the Chi Squared distribution these two values will | ||
|  | not be the same, the difference in their calculation differs only in the | ||
|  | sign of /diff/ that's passed to `find_degrees_of_freedom`.  Finally | ||
|  | in this example we'll simply things, and let risk level /beta/ be the | ||
|  | same as /alpha/: | ||
|  | 
 | ||
|  |    cout << "\n\n" | ||
|  |            "_______________________________________________________________\n" | ||
|  |            "Confidence       Estimated          Estimated\n" | ||
|  |            " Value (%)      Sample Size        Sample Size\n" | ||
|  |            "                (lower one         (upper one\n" | ||
|  |            "                 sided test)        sided test)\n" | ||
|  |            "_______________________________________________________________\n"; | ||
|  |    // | ||
|  |    // Now print out the data for the table rows. | ||
|  |    // | ||
|  |    for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) | ||
|  |    { | ||
|  |       // Confidence value: | ||
|  |       cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); | ||
|  |       // calculate df for a lower single sided test: | ||
|  |       double df = chi_squared::find_degrees_of_freedom( | ||
|  |          -diff, alpha[i], alpha[i], variance); | ||
|  |       // convert to sample size: | ||
|  |       double size = ceil(df) + 1; | ||
|  |       // Print size: | ||
|  |       cout << fixed << setprecision(0) << setw(16) << right << size; | ||
|  |       // calculate df for an upper single sided test: | ||
|  |       df = chi_squared::find_degrees_of_freedom( | ||
|  |          diff, alpha[i], alpha[i], variance); | ||
|  |       // convert to sample size: | ||
|  |       size = ceil(df) + 1; | ||
|  |       // Print size: | ||
|  |       cout << fixed << setprecision(0) << setw(16) << right << size << endl; | ||
|  |    } | ||
|  |    cout << endl; | ||
|  | 
 | ||
|  | For some example output, consider the | ||
|  | [@http://www.itl.nist.gov/div898/handbook/prc/section2/prc23.htm | ||
|  | silicon wafer data] from the __handbook. | ||
|  | In this scenario a supplier of 100 ohm.cm silicon wafers claims | ||
|  | that his fabrication  process can produce wafers with sufficient | ||
|  | consistency so that the standard deviation of resistivity for | ||
|  | the lot does not exceed 10 ohm.cm. A sample of N = 10 wafers taken | ||
|  | from the lot has a standard deviation of 13.97 ohm.cm, and the question | ||
|  | we ask ourselves is "How large would our sample have to be to reliably | ||
|  | detect this difference?". | ||
|  | 
 | ||
|  | To use our procedure above, we have to convert the | ||
|  | standard deviations to variance (square them), | ||
|  | after which the program output looks like this: | ||
|  | 
 | ||
|  | [pre''' | ||
|  | _____________________________________________________________ | ||
|  | Estimated sample sizes required for various confidence levels | ||
|  | _____________________________________________________________ | ||
|  | 
 | ||
|  | True Variance                           =  100.00000 | ||
|  | Difference to detect                    =  95.16090 | ||
|  | 
 | ||
|  | 
 | ||
|  | _______________________________________________________________ | ||
|  | Confidence       Estimated          Estimated | ||
|  |  Value (%)      Sample Size        Sample Size | ||
|  |                 (lower one         (upper one | ||
|  |                  sided test)        sided test) | ||
|  | _______________________________________________________________ | ||
|  |     50.000               2               2 | ||
|  |     75.000               2              10 | ||
|  |     90.000               4              32 | ||
|  |     95.000               5              51 | ||
|  |     99.000               7              99 | ||
|  |     99.900              11             174 | ||
|  |     99.990              15             251 | ||
|  |     99.999              20             330''' | ||
|  | ] | ||
|  | 
 | ||
|  | In this case we are interested in a upper single sided test. | ||
|  | So for example, if the maximum acceptable risk of falsely rejecting | ||
|  | the null-hypothesis is 0.05 (Type I error), and the maximum acceptable | ||
|  | risk of failing to reject the null-hypothesis is also 0.05 | ||
|  | (Type II error), we estimate that we would need a sample size of 51. | ||
|  | 
 | ||
|  | [endsect] [/section:chi_sq_size Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation] | ||
|  | 
 | ||
|  | [endsect] [/section:cs_eg Chi Squared Distribution] | ||
|  | 
 | ||
|  | [/ | ||
|  |   Copyright 2006, 2013 John Maddock and Paul A. Bristow. | ||
|  |   Distributed under the Boost Software License, Version 1.0. | ||
|  |   (See accompanying file LICENSE_1_0.txt or copy at | ||
|  |   http://www.boost.org/LICENSE_1_0.txt). | ||
|  | ] | ||
|  | 
 |