Notifications
Clear all

Formula/Função Calcular margem de erro

5 Posts
2 Usuários
0 Reactions
1,913 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa Tarde galera,
Alguém ai tem alguma planilha ou formula para calculo de erro amostral??
Uso esse site quando preciso fazer os calculos http://www.raosoft.com/samplesize.html mas via função seria o ideal.

Deu uma procurada na internet mas não achei nada muito efetivo e que funcione corretamente.

vlwww

 
Postado : 29/01/2014 12:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Cara, eu não tenho, mas... se vc publicar a lógica a ser aplicada, podemos criar uma comunitária hein !

como faz esses cálculos ?

FF

 
Postado : 29/01/2014 2:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fala Fernando,
Cara ia ser legal conseguir fazer isso, pelo que eu procurei não achei nada na internet.. como eu precisava urgentemente, fiz via VBA entrando no site e fazendo os calculos e me retornando o resultado..mas não é o ideal acho que é possível fazer no excel mesmo. Como a conta é meio maluca, entrei no site dei um inspecionar elemento e vi que eles usam algumas funções em javascript para os calculos...

Basicamente o DoCalculate() é a função que no change dos textbox fazem os calculos. Vou quebrar um pouco a cabeça aqui tbm, mas se você ou alguém conseguir extrair alguma coisa seria legal..

vlw

<!--

//Please cite as 
//Shanti R Rao and Potluri M Rao, "Sample Size Calculator", 
//Raosoft Inc., 2009, http://www.raosoft.com/samplesize.html

//You can derive these formulas from first principles. The 
//ProbCriticalNormal function is adapted from an algorithm published
//in Numerical Recipes in Fortran.

function ProbCriticalNormal(P)
{
//      input p is confidence level convert it to
//      cumulative probability before computing critical

	var   Y, Pr,	Real1, Real2, HOLD;
	var  I;
	var PN = [0,    // ARRAY[1..5] OF REAL
			-0.322232431088  ,
			 -1.0             ,
			 -0.342242088547  ,
			 -0.0204231210245 ,
			 -0.453642210148E-4 ];

	var QN = [0,   //  ARRAY[1..5] OF REAL
			0.0993484626060 ,
			 0.588581570495  ,
			 0.531103462366  ,
			 0.103537752850  ,
			 0.38560700634E-2 ];

	 Pr = 0.5 - P/2; // one side significance


  if ( Pr <=1.0E-8) HOLD = 6;
	else {
			if (Pr == 0.5) HOLD = 0;
			else{
					Y = Math.sqrt ( Math.log( 1.0 / (Pr * Pr) ) );
					Real1 = PN[5];  Real2 = QN[5];

					for ( I=4; I >= 1; I--)
					{
					  Real1 = Real1 * Y + PN[I];
					  Real2 = Real2 * Y + QN[I];
					}

					HOLD = Y + Real1/Real2;
			} // end of else pr = 0.5
		} // end of else Pr <= 1.0E-8

  return HOLD;
}  // end of CriticalNormal

function SampleSize(margin,  confidence,  response,  population)
{
     pcn = ProbCriticalNormal(confidence / 100.0);
     d1 = pcn * pcn * response * (100.0 - response);
     d2 = (population - 1.0) * (margin * margin) + d1;
    if (d2 > 0.0)
     return Math.ceil(population * d1 / d2);
    return 0.0;
}

function MarginOfError( sample,  confidence,  response,  population)
{
     var pcn = ProbCriticalNormal(confidence / 100.0);
     d1 = pcn * pcn * response * (100.0 - response);
     d2 = d1 * (population - sample) / (sample * (population - 1.0))
    if (d2 > 0.0)
     return Math.sqrt(d2);
    return 0.0;
}

function DoCalculate()
{
	var ss = SampleSize(Number(document.ss.margin.value),
		    Number(document.ss.confidence.value), 
		    Number(document.ss.response.value), 
		    Number(document.ss.population.value));
	document.getElementById('sample').innerHTML=('<b>'+Math.ceil(ss).toString()+'</b');
	
	ss = SampleSize(Number(document.ss.margin.value),
		    Number(document.ss.confidence1.value), 
		    Number(document.ss.response.value), 
		    Number(document.ss.population.value));
	document.getElementById('sample4').innerHTML=('<b>'+Math.ceil(ss).toString()+'</b');
	
	ss = SampleSize(Number(document.ss.margin.value),
		    Number(document.ss.confidence2.value), 
		    Number(document.ss.response.value), 
		    Number(document.ss.population.value));
	document.getElementById('sample5').innerHTML=('<b>'+Math.ceil(ss).toString()+'</b');
	
	ss = SampleSize(Number(document.ss.margin.value),
		    Number(document.ss.confidence3.value), 
		    Number(document.ss.response.value), 
		    Number(document.ss.population.value));
	document.getElementById('sample6').innerHTML=('<b>'+Math.ceil(ss).toString()+'</b');

	var m = MarginOfError(Number(document.ss.sample1.value),
		    Number(document.ss.confidence.value), 
		    Number(document.ss.response.value), 
		    Number(document.ss.population.value));
	document.getElementById('margin1').innerHTML=('<b>'+m.toFixed(2).toString()+'%</b');
		    
	m = MarginOfError(Number(document.ss.sample2.value),
		    Number(document.ss.confidence.value), 
		    Number(document.ss.response.value), 
		    Number(document.ss.population.value));
	document.getElementById('margin2').innerHTML=('<b>'+m.toFixed(2).toString()+'%</b');
		    
	m = MarginOfError(Number(document.ss.sample3.value),
		    Number(document.ss.confidence.value), 
		    Number(document.ss.response.value), 
		    Number(document.ss.population.value));
	document.getElementById('margin3').innerHTML=('<b>'+m.toFixed(2).toString()+'%</b');

	return true;
}
-->
 
Postado : 30/01/2014 6:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caio e Fernando,

Com uma fórmula no excel vc mata o problema.

Veja o anexo.

Abs,

 
Postado : 31/01/2014 10:31 pm
(@ricaoliv79)
Posts: 0
New Member
 

Boa tarde pessoal.
Gostaria de receber essa planilha, estou com a mesma necessidade do Caio.
Grato.
Abs

 
Postado : 13/03/2017 11:47 am