Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: Re: How to compute sample size assuming a specificy accuracy in parameter estimation

From   "Joseph Coveney" <[email protected]>
To   <[email protected]>
Subject   st: Re: How to compute sample size assuming a specificy accuracy in parameter estimation
Date   Fri, 2 Mar 2012 17:03:58 +0900

Tiago V. Pereira wrote:

I would like to know if there is a Stata package out there that computes
the sample size required to give a specific accuracy in the estimation of
the population parameter (assumed to be normally distributed).

For example, I would like to estimate the mean of a population having a
precision of 2 in my 95% confidence intervals. Precision here is the plus
and minus value used to create the confidence interval.

I have guesses on the population mean, standard deviation and know the
total population size.

I have checked -aipe-, -sampsi-, and others, but failed to find out a
specific package for that purpose.

Let me know if I am missing something when using them.


If I understand you correctly, then you're looking for a sample size that gives
a 95% confidence half-interval of 2, assuming that the population standard
deviation equals some value.  In lieu of an analytical solution, couldn't you
just use simulation with something like the do-file below?  It uses an assumed
standard deviation of 10 for illustration.

I suppose you could do the simulation more formally, creating a population of
the known (finite) size and with the assumed standard deviation, storing it in a
file, and then sampling from it with various sample sizes.  I doubt that that
effort is worth it, though.

Joseph Coveney

version 11.2

clear *
set more off
set seed `=date("2012-03-02", "YMD")'

program define simem, rclass
    version 11.2
    syntax , n(integer) sd(real) halfwidth(real) ///
        [level(real `c(level)')]

    quietly drop _all
    quietly set obs `n'
    tempvar tmpvar0
    generate double `tmpvar0' = rnormal(0, `sd')
    quietly ci `tmpvar0', level(`level')
    return scalar success = (r(ub) - r(mean)) <= `halfwidth'

forvalues n = 100(5)130 {
    quietly simulate success = r(success), reps(1000) nodots: ///
        simem , n(`n') sd(10) halfwidth(2)
    summarize success, meanonly
    display in smcl as text "N = `n'  Power = " %05.3f r(mean)
    if 0.95 < r(mean) continue, break


*   For searches and help try:

© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index