\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[unicode]{hyperref}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{listings}
\usepackage{graphicx}
\graphicspath{{media/}}
\date{\today}
\title{}
\author{}
\begin{document}



\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/claireprf/sem_titulo_2_}


Claire Pauline Röpke Ferrando - apaixonada por roedores!

Sou aluna de doutorado no PPG Ecologia e Conservação de Recursos Naturais da Universidade Federal de Uberlândia - MG orientada pela professora Natália O. Leiner. Minha linha de pesquisa atual envolve estudos sobre estrutura social de roedores através de dados de área de vida, parentesco e estrutura populacional. 
\url{https://lemaufu.wixsite.com/labecomammals}

\href{http://ecor.ib.usp.br/doku.php?id=05_curso_antigo:r2019:alunos:trabalho_final:claireprf:exec}{.:exec}

---------------- meus exercícios ---------------

\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/exercicio_1_respondendo_topicos_1_a_3.r}{exercicio\_1\_respondendo\_topicos\_1\_a\_3.r}
\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/aula4_exercicios_so_1_e_3.r}{aula4\_exercicios\_so\_1\_e\_3.r}
\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/aula5_exercicios_construcaograficos.r}{aula5\_exercicios\_construcaograficos.r}
\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/notar_nao_leu_aula6_exercicios_2_e_3_anova_unha_e_facil.r}{notar\_nao\_leu\_aula6\_exercicios\_2\_e\_3\_anova\_unha\_e\_facil.r}\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/aula7b_exercicios.r}{aula7b\_exercicios.r}
\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/aula7_exercicio_2_modelo_mais_simples.r}{aula7\_exercicio\_2\_modelo\_mais\_simples.r}
\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/aula8_exercicios.r}{aula8\_exercicios.r}
\href{media/bie5782/01_curso_atual/alunos/trabalho_final/claireprf/aula9_exercicio_2..r}{aula9\_exercicio\_2..r}

--------------- Trabalho Final ------------------

\textbf{PROPOSTA  A - Quantas amostras são necessárias?}

Contextualização:

Ecólogos e cientistas em geral trabalham com réplicas de amostras a fim de melhor representar a população ou a comunidade geral.  Dentro desse contexto, os pesquisadores sempre procuram por obter os melhores resultados (i.e. mais representativos da realidade) em um menor tempo, custo e esforço. Poucas e muitas amostras podem levar a resultados enviesados e a custos desnecessários, respectivamente (Eckblad 1991). Para se detectar diferenças entre grupos amostrais depende da variabilidade do parâmetro e o tamanho da diferença que se pretende detectar (Gotelli \& Ellison 2004). Segundo Gotelli \& Ellison (2004) 10 amostras seria o mínimo para fins de comparação entre categorias ou tratamentos (Rule of 10), porém isso depende, por exemplo, dos organismos de estudo, tipo de amostragem e objetivo do estudo. Com base nessa problemática, Eckblad (1991) apresentou uma forma de estimar o número de amostras necessárias para estimar a média populacional em uma porcentagem de acurácia da média real.

\textbf{A função}

Com base no trabalho de Eckblad (1991), a função \texttt{n.samples()} estimará o número de amostras necessárias para uma determinada porcentagem de interesse de acurácia, assim como a acurácia em si da média do tamanho amostral. Essas estimativas são baseadas no valor de t com nível de significância (0,05) correspondente ao grau de liberdade (i.e. número de amostras – 1), média, variância e erro padrão da média das amostras e tamanho da amostra (i.e. número de amostras). Ainda, os dados devem seguir uma distribuição normal. Os cálculos das estimativas propostos por Eckblad (1991) estão representados pelas duas fórmulas a seguir (imagens retiradas de Eckblad (1991)):

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/claireprf/sample_size}


\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/claireprf/accuracy}


Além das estimativas descritas acima, a função também gerará um gráfico de relação entre a média acurada e o número de amostras necessárias para um ou mais grupos como mostra a figura abaixo (imagens retiradas de Eckblad (1991))

\centering\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/claireprf/grafico}


\textbf{Nome da função}

\texttt{n.samples()}

\textbf{Argumentos da função - Entrada}

\emph{Argumento1}:\texttt{x}, objeto da classe vetor ou data.frame com observações numéricas.

\emph{Argumento2}: \texttt{accuracy}, porcentagem de acurácia da média do tamanho amostral (de 10 a 50\%).

\emph{Argumento3}: \texttt{tvalue} , valor de t correspondente ao número de amostras e nível de significância 0,05.

\emph{Argumento4}: \texttt{graphic}, TRUE ou FALSE (default TRUE).

\textbf{Pseudo-código}: 

\textbf{1.}Verifica que existem valores faltantes nos dados. 

se sim:

stop(“There are missing values in your data”)

\textbf{2.Premissa1}: se objeto é diferente de vetor ou data frame 

stop (“your object is not a vector or even a data.frame”)

\textbf{3.}Se, o objeto for um vetor:

\textbf{a.Premissa3.1}: vetor é de classe numérica

se não não for:

stop (“your vector is not numeric”)

\textbf{b.Premissa3.2}: número de amostras ≥ 10 

se não for: 

stop (“your object has less than 10 observations”) 

\textbf{c.Premissa3.3}: distribuição normal do vetor 

\textbf{d.}Cria objeto \texttt{norm} com o teste da normalidade dos dados (shapiro.test())

\textbf{e.}Se P menor do que 0,05.

stop(“your data doesn’t follow a normal distribution”)

\textbf{f.}Cria objeto \texttt{med} com a média da amostra (com mean())

\textbf{g.}Cria objeto \texttt{vari} com a variância da amostra (com var())

\textbf{h.}Cria objeto \texttt{er.pad} com o erro padrão da média da amostra

\textbf{i.}Cria objeto \texttt{n} com o tamanho da amostra (número de amostras) (com length())

\textbf{j.}Cria objeto \texttt{coef.var} com o coeficiente de variação da amostra

\textbf{k.}Cria objeto \texttt{sample.size} com a estimativa do número de amostras necessário com base na porcentagem de acurácia e valor de t informados nos argumentos \texttt{accuracy} e \texttt{tvalue}, respectivamente. 

\textbf{l.}Cria objeto \texttt{accur} com a estimativa da acurácia da média da amostra com base no valor de t informado no argumento \texttt{tvalue} (com apply())

\textbf{m.}return (list(\texttt{sample.size}, accuracy=\texttt{accur}))

\textbf{n.}Se argumento \texttt{graphic} != TRUE

stop (“the end”)

\textbf{o.}Cria objeto \texttt{x.axis} com as porcentagens de acurácia de 10 a 50\%.

\textbf{p.}Cria objeto \texttt{y.axis} com os números de amostras necessárias para as diferentes porcentagens de acurácia da 
média da variável.

\textbf{q.}Cria objeto \texttt{sample.plot} com o plot da relação entre número de amostras para diferentes acurácias da média da amostra (com plot())

\textbf{r.}Return(\texttt{sample.plot})

\textbf{4.}Se o objeto for um data.frame

\textbf{a.Premissa4.1}:data.frame somente com colunas numéricas 

install.packages(\texttt{dplyr})

\textbf{b.}seleciona somente as colunas com valores numéricos do data.frame com a função select\_if

\textbf{c.Premissa4.2}: se número de amostras \textless  10  por variável (colunas)

stop (“your object has less than 10 observations”) 

\textbf{d.Premissa 4.3}: distribuição normal das variáveis 

\textbf{e.}Cria objeto \texttt{norm} com o teste da normalidade das variáveis (colunas) (com apply())

\textbf{f.}Se P \textless  0,05.

\textbf{g.}stop(“there are variables that don’t fit a normal distribution”)	

\textbf{h.}Cria objeto \texttt{med} com a média dos dados de cada variável do data.frame (com apply())

\textbf{i.}Cria objeto \texttt{vari} com a variância dos dados de cada variável do data.frame (com apply())

\textbf{j.}Cria objeto \texttt{er.pad} com o erro padrão da média da amostra de cada variável do data.frame (com apply())

\textbf{k.}Cria objeto \texttt{n}com o tamanho da amostra de cada variável do data.frame (número de amostras) (com apply())

\textbf{l.}Cria objeto \texttt{coef.var} com o coeficiente de variação da amostra de cada variável do data.frame (com apply())

\textbf{m.}Cria objeto \texttt{samples.size} com o número de amostras necessário com base na porcentagem de acurácia e valor de t informados nos argumentos \texttt{accuracy} e \texttt{tvalue}, respectivamente (com apply()).

\textbf{n.}Cria objeto \texttt{accur} com a estimativa da porcentagem de acurácia da média das amostras de cada variável do data.frame com base no valor de t informado no argumento \texttt{tvalue} (com apply())

\textbf{o.}return (list(\texttt{sample.size}, accuracy=\texttt{accur}))

\textbf{p.}Se argumento graphic != TRUE

stop (“ the end”)

\textbf{q.}Cria objeto \texttt{x.axis} com as porcentagens de acurácia de 10 a 50\% .

\textbf{r.}Cria objeto \texttt{y.axis} com os números de amostras necessárias para diferentes porcentagens de acurácia da média.

\textbf{s.}Cria objeto \texttt{samples.plot} com o plot relação entre número de amostras para diferentes acurácias da média das amostras de cada variável (com plot())

\textbf{t.}Return(\texttt{samples.plot})

\textbf{Saída}: Lista com as estimativas de número de amostras necessárias para uma determinada porcentagem de acurácia da média de interesse e de acurácia da média do tamanho amostral. Ainda, um gráfico de relação entre número de amostras necessárias e médias acuradas para uma ou mais variáveis. Julia Barreto
Oi Claire, tudo bem? Gostei da ideia da função, o objetivo está muito claro mas acho que ainda precisamos trabalhar em detalhar melhor a proposta. Tem algumas informações que faltaram mas que você parece ter em mente. Pormenores que, assim que começar a montar, você vai notar e terá que decidir como seguir. Por exemplo, os argumentos na função, pensar o que fazer se não forem preenchidos (função para? Ou haverá um valor default?). Pensa também que o primeiro passo da função seria conferir se o objeto de entrada atende aos requisitos. Então, não faz sentido conferir se tem NAs antes de ver se é vetor ou data frame, considere inverter essas estapas. 

Vale tentar ensaiar suas habilidades, procure maneiras de tornar a tarefa mais instigante, por exemplo com uso de controle de fluxo vistos nas últimas aulas. Uma outra ideia que complementaria bastante a função, seria resultar em mais de uma estimativa como sugestões de outras maior quantidade de amostras para aumentar a acurácia. Compreende o que quero dizer? Isso seria particularmente interessante para casos em que um número um pouco maior de amostras já aumentasse bastante a acurácia. Seria uma saída interessante sobretudo quando o usuário não apontasse a desejada (deixando o argumento sem preencher, optando pelo default).
Me escreve se quiser conversar sobre essas ou outras ideias que venha a ter, e qualquer dúvida também, claro! Estou à disposição =)
\href{mailto:barretoj@usp.br}{Julia Barreto} Claire Ferrando
Olá Julia!
Muito obrigada pelas dicas. Ainda estou incerta sobre como aplicar as tuas sugestões. Mas vou começara mexer nisso e as dúvidas vão surgir e entro em contato contigo. Com certeza terei dúvidas!
Obrigada!
 Julia Barreto
Massa! Boa sorte e qualquer coisa vc já sabe aonde me achar :) 


\textbf{Fontes}:

Eckblad, J. W. (1991) How Many Samples Should Be Taken? BioScience 41, 346-348.

Gotelli, N. J. \& Ellison, A. M. (2004) A Primer of Ecological Statistics. Sunderland, MA: Sinauer \& Associates, 2004

McCabe, D. J. (2011) Sampling Biological Communities. Nature Education Knowledge 3(10):63

\begin{center}
\line(1,0){250}
\end{center}



\begin{center}
\line(1,0){250}
\end{center}



\textbf{PROPOSTA B - Uma função para várias}

Contextualização:

O programa R é estruturado por diferentes funções para diferentes finalidades. Elas resumem várias etapas/passos de análises, facilitando a vida do usuário. 

\textbf{A função}

Seguindo nessa idéia, a função fast.resume() tem como finalidade, através de um único argumento (o próprio objeto), retornar as características básicas do objeto de dados independentemente da sua classe.

\textbf{Nome da função}:

fast.resume (x)

\textbf{Argumento da função - Entrada}

\emph{Argumento1}:\texttt{x},objeto de qualquer classe/estrutura.

\textbf{Pseudo-código}:

\textbf{1.}Se o objeto for um vetor, isto é “numeric” ou “factor” ou “character” ou “integer” ou “logic”

\textbf{1.1.}Mensagem (“your object is of class vector”)

\textbf{a.}Se os dados forem numéricos (i.e. “numeric”)

\textbf{\emph{i.}}mensagem (“your object is of class numeric”)

\textbf{\emph{ii.}}objeto \texttt{n.na} com número de observações ausentes (i.e. NAs) (com sum(is.na()))

\textbf{\emph{iii.}}cria objeto \texttt{su} com o sumário do objeto (com summary())

\textbf{\emph{iv.}}cria objeto \texttt{le} com o número de elementos no vetor (com length ())

\textbf{\emph{v.}}return(list(missing\_values=\texttt{n.na}, summary=\texttt{su}, length=\texttt{le}))

\textbf{b.}Se os dados forem fatores (i.e. “factor”)

\textbf{\emph{i.}}mensagem (“your object is of class factor”)

\textbf{\emph{ii.}}cria objeto \texttt{n.na} com número de observações ausentes (i.e. NAs) (com sum(is.na()))

\textbf{\emph{iii.}}cria um objeto \texttt{tab} com o número de observações para cada nível do fator (com table())

\textbf{\emph{iv.}}cria objeto \texttt{le} com o número de elementos no vetor (com length ())

\textbf{\emph{v.}}return(list(missing\_values=\texttt{n.na}, table=\texttt{tab}, length=\texttt{le}))

\textbf{c.}Se os dados forem caracteres (i.e. “character”)

\textbf{\emph{i.}}mensagem (“your object is of class character”)

\textbf{\emph{ii.}}cria objeto \texttt{n.na} com o número de observações ausentes (i.e. NAs) (com sum(is.na()))

\textbf{\emph{iii.}}cria objeto \texttt{tab} com número de vezes de um mesmo caracter

\textbf{\emph{iv.}}cria objeto \texttt{le} com o número de caracteres diferentes  no vetor (com length())

\textbf{\emph{v.}}return(list(missing\_values=\texttt{n.na}, table=\texttt{tab}, length=\texttt{le}))

\textbf{d.}Se os dados forem do tipo “integer”

\textbf{\emph{i.}}mensagem (“your object is of class integer”)

\textbf{\emph{ii.}}cria objeto \texttt{n.na} com o número de observações ausentes (i.e. NAs) (com sum (is.na()))

\textbf{\emph{iii.}}cria objeto \texttt{su} com o sumário do objeto (com summary())

\textbf{\emph{iv.}}cria objeto \texttt{le} com o número de elementos no vetor (com length ())

\textbf{\emph{v.}}return(list(missing\_values=\texttt{n.na}, summary=\texttt{su}, length=\texttt{le}))

\textbf{e.}Se os dados forem do tipo “logical”

\textbf{\emph{i.}}mensagem (“your object is of class logical”)

\textbf{\emph{ii.}}cria objeto \texttt{n.na} com o número de observações ausentes (i.e. NAs) (com sum (is.na()))

\textbf{\emph{iii.}}cria objeto \texttt{su} com o sumário do objeto (com summary())

\textbf{\emph{iv.}}cria objeto \texttt{le} com o número de elementos no vetor (com length ())

\textbf{\emph{v.}}return(list(missing\_values=\texttt{n.na}, summary=\texttt{su},length=\texttt{le}))

\textbf{2.}Se o objeto for um data frame

\textbf{a.}mensagem (“your object is of class data.frame”)

\textbf{b.}cria objeto \texttt{n.na} com o número de observações ausentes (i.e. NAs) (com sum (is.na()))

\textbf{c.}cria objeto \texttt{st} com a estrutura do objeto (com str())

\textbf{d.}cria objeto \texttt{col} com o número de colunas no objeto (com ncol())

\textbf{e.}cria objeto \texttt{row} com o número de linhas no objeto (com nrow())

\textbf{f.}cria objeto \texttt{he} com as três primeiras linhas do data.frame (com head()) (selecionando só as três primeiras 
linhas).

\textbf{g.}cria objeto \texttt{nam} com os nomes das variáveis (com names())

\textbf{h.}cria objeto \texttt{su} com o sumário do objeto (com summary())

\textbf{i.}return(list(missing\_values=\texttt{n.na},  str=\texttt{st}, columns=\texttt{col}, rows=\texttt{row}, head=\texttt{he}, names=\texttt{nam}, summary=\texttt{su})

\textbf{3.}Se objeto for um “matrix”

\textbf{a.}mensagem (“your object has a matrix structure”)

\textbf{b.}cria objeto \texttt{mod} com a natureza dos dados que a compõem

\textbf{c.}cria objeto \texttt{n.na} com o número de observações ausentes (i.e. NAs) (com sum (is.na()))

\textbf{d.}cria objeto \texttt{st} com a estrutura do objeto (com str())

\textbf{e.}cria objeto \texttt{n.col} com o número de colunas (com ncol())

\textbf{f.}cria objeto \texttt{n.row} com o número de linhas (com nrows())

\textbf{g.}cria objeto \texttt{col.name} com os nomes das colunas (com colnames())

\textbf{h.}cria objeto \texttt{row.name} com os nomes das linhas (com rownames())

\textbf{i.}return(list(mode=\texttt{mod}, missing\_values=\texttt{n.na},  str=\texttt{st}, number\_columns=\texttt{n.col}, number\_rows=\texttt{n.row}, columns\_names= \texttt{col.name}, rows\_names=\texttt{row.name})

\textbf{4.}Se objeto for um “table”

\textbf{a.}mensagem (“your object is of class table”)

\textbf{b.}cria objeto \texttt{n.na} com o número de observações ausentes (i.e. NAs)(com sum (is.na()))

\textbf{c.}cria objeto \texttt{st} com a estrutura do objeto (com str())

\textbf{d.}cria objeto \texttt{n.col} com o número de colunas (com ncol())

\textbf{e.}cria objeto \texttt{n.row} com o número de linhas (com nrows())

\textbf{f.}cria objeto \texttt{col.name} com os nomes das colunas (com colnames())

\textbf{g.}cria objeto \texttt{row.name} com os nomes das linhas (com rownames())

\textbf{h.}cria objeto \texttt{he} com as três primeiras linhas da tabela (com head()) (selecionando só as três primeiras linhas)

\textbf{i.}cria objeto \texttt{nam} com os nomes das variáveis (com names())

\textbf{j.}cria objeto \texttt{su} com o sumário do objeto (com summary())

\textbf{k.}return(list(missing\_values=\texttt{n.na},  str=\texttt{st}, number\_columns=\texttt{n.col}, number\_rows=\texttt{n.row}, columns\_names= \texttt{col.name}, rows\_names=\texttt{row.name}, head=\texttt{he}, names=\texttt{nam}, summary=\texttt{su})

\textbf{5.}Se objeto for um “array” 

\textbf{a.}Mensagem (“your object has an array structure”)

\textbf{b.}cria objeto \texttt{n.na} com o número de observações ausentes (i.e. NAs) (com sum (is.na()))

\textbf{c.}cria objeto \texttt{dimens} com as dimensões do objeto (com dim())

\textbf{d.}cria objeto \texttt{dim.name} com os nomes das dimensões (com dimnames())

\textbf{e.}cria objeto \texttt{mod} com a natureza dos dados que a compõem (com mode())

\textbf{f.}cria objeto \texttt{st} com a estrutura do objeto (com str())

\textbf{g.}return(list(missing\_values=\texttt{n.na},  dimentions=\texttt{dimens}, dimentions\_name=\texttt{dim.name}, mode=\texttt{mod}, 
str=\texttt{st})

\textbf{6.}Se objeto for um “list”

\textbf{a.}Executa o próprio objeto \texttt{x} e expõe o que tem na lista 

\textbf{b.}Cria um objeto \texttt{list\_name} com os nomes dos objetos presentes na lista (com names())

\textbf{c.}Return(list(in\_the\_list=\texttt{x}, objects\_names=\texttt{list\_name}))

\textbf{Saída}: uma lista do resumo do objeto. Julia Barreto
Oi de novo! Sobre essa segunda proposta, está bastante simples além de pouco detalhada. Eu acredito que você poderia se desafiar mais do que apenas entregar resumo e classe do objeto de entrada. Sei que já optamos pela proposta A que parece mais elaborada mas, certamente, você poderia pensar em como complementar essa ideia B para que contivesse alguma novidade e maior utilidade.
\href{mailto:barretoj@usp.br}{Julia Barreto}
 Claire Ferrando
Olá! Eu concordo que essa proposta é mais simples, mas fiz essa proposta por acreditar ser útil. Se depois de finalizar a proposta A eu ainda tiver tempo, vou repensar nela.
Obrigada!
Claire


\begin{center}
\line(1,0){250}
\end{center}



\begin{center}
\line(1,0){250}
\end{center}



\textbf{Código da PROPOSTA A - Quantas amostras são necessárias?}\lstset{frame=single, language=rsplus}
\begin{lstlisting}
 

n.samples=function(x, accuracy, tvalue){						#função n.samples.
if(missing(x)){										#testa se tem objeto com dados.
	stop("There is no object")							#caso o argumento 'x' não foi atendido, a função por default pára e envia uma mensagem ao usuário da falta de dados para executar a função. 
	}
if(missing(tvalue)){									#testa se o valor de t foi informado.
	stop("You need to inform the tvalue")					#caso o argumento 'tvalue' não foi atendido, a função, por default pára e envia uma mensagem ao usuário dizendo que sem essa informação, a análise não 
	}												#pode ser feita já que é uma informação relacionada ao objeto dos dados.

#ARGUMENTO 'accuracy' não inserido

if(class(x)=="numeric"){								#testando se o objeto é um vetor, classe 'numeric' pois quando a função class é usada para um vetor, ele dá a natureza dos dados. Dessa forma, aqui também já
													#se testa se os valores são numéricos, que é uma das premissas da função. 
	if(missing(accuracy)){								#caso o usuário não inserir o argumento 'accuracy' a função retornará somente a estimativa da acurácia da média da amostra, e um data frame com o número de 
	{												#amostras necessárias para diferentes acurácias da média da população com base do objeto com os dados.
	message("By default, estimate of sample size 				#mensagem: caso o argumento 'accuracy' não foi inserido, a função, por default informa todos os valores de 
	needed will be given from 10 to 50% of 						#acurácia para os dados de 10 a 50% a cada 5%. 
	accuracy every 5%") 						
		}
		if(any(is.na(x))==TRUE){						#verificando se no vetor tem valores faltantes.
		stop("There are missing values in your data")			#se houver valores faltantes no vetor, por default a função não será executada, senão as estimativas de acurácia da média da amostra e o número de amostras serão comprometidas
		}											#i.e. estarão erradas.
		if(length(x)<10){								#seguindo a regra dos 10 de Gotelli & Ellison (2004)como número mínimo para o cálculo de estimativas mais acuradas, nessa linha verifica-se se existem 10 elemtos no objeto.
		stop ("Your object has less than 10 samples") 			#caso não haja pelo menos 10 elementos no vetor, a função não será executada.
		}
		test.norm=shapiro.test(x)						#testando a normalidade dos dados, pois uma das premissas para o cálculo das estimativas é de que os dados sigam uma distribuição normal.
		if(test.norm$p.value <= 0.05){					#se o valor do teste for menor do que 0,05, quer dizer que a distribuição dos dados não seguem uma distribuição normal. 
		stop ("Your vector doesn't follow a normal distribution") 	#não seguindo uma distribuição normal, a função pára e envia a mensagem ao usuário informando que os seus dados não seguem uma distribuição normal como é a premissa para o uso da função.
		}
		vari=var(x)									#criando objeto com a variância da amostra.
		se.mean=sqrt(vari) 							#criando objeto com o erro padrão da média.
		n=length(x)									#criando objeto com o tamanho da amostra (número de amostras).
		coef.var=sqrt(se.mean/mean(x))					#criando objeto com o coeficiente de variação da amostra.
		accur=(coef.var*tvalue)/sqrt(n)					#criando objeto com a estimativa da acurácia da média da amostra.
		accuracies=seq(from=0.05, to=0.5, by=0.05)			#criando objeto com os valores de acurácia de 10 a 15% a cada 5%.
		n.samples=(((tvalue)^2)*vari)/(accuracies*(mean(x)))^2		#criando objeto com os valores de número de amostras correspondente às acurácias da média da população.
		return (list(accuracy=accur,data.frame(accuracies,n.samples)))	#retorna ao usuário uma lista com a estimativa do número de amostras necessárias dentro da porcentagem de acurácia desejada, a estimativa da acurácia da 
		
		#grafico	
		
		accuracies=seq(from=0.05, to=0.5, by=0.05)			#criando o objeto com os valores do eixo x do gráfico (acurácias de 10 a 50% a cada 5%).
		n.samples=(((tvalue)^2)*vari)/(accuracies*(mean(x)))^2	#criando o objeto com os valores de número de amostras correspondente a acurácia (eixo y)
		par(mar=c(5, 5, 2, 2)) 							#estabelecendo as margens da imagem. 
		plot(accuracies,n.samples, cex.axis= 1.5, las=1, 		#criando um plot com a relação entre as acurácias e a estimativa dos números de amostras necessárias correspondentes.
		family="serif", tcl=0.3,col="black", xlab="", ylab="", 
		pch=19, cex=1.5,bty="l")
		lines(accuracies[order(accuracies)], 				#adicionando linhas ligando os pontos do gráfico para que o usuário possa ter uma ideia da estimativa do número de amostras necessárias para as acurácias  
			n.samples[order(accuracies)], xlim=range(accuracies), 		#entre 10 a 50%.
		ylim=range(n.samples), lwd = 2)
		mtext("Accuracy of mean", line=3,side= 1, 			#adicionando título ao eixo x do gráfico.
		cex= 1.7, family="serif")  
		mtext("Number of samples needed",line=3,side=2,cex=1.7,	#adicionando título ao eixo y do gráfico.
			family="serif")
	
			}
		}else{									#se o usuário inseriu o argumento 'accuracy' com o uso de um objeto do tipo vetor, a função seguirá a partir daqui.				
									
#ARGUMENTO 'accuracy' inserido							

	if(any(is.na(x))==TRUE){							#verificando se no vetor tem valores faltantes.
	stop("There are missing values in your data")				#se houver valores faltantes no vetor, por default a função não será executada, senão, as estimativas de acurácia e número de amostras serão comprometidas.
	}												#i.e. gerando estimativas erradas.
	if(length(x)<10){									#seguindo a regra dos 10 de Gotelli & Ellison (2004)como número mínimo para o cálculo de estimativas mais acuradas, nessa linha verifica-se se existem 10 elemtos no objeto.
	stop ("Your object has less than 10 samples") 				#caso não haja pelo menos 10 elementos no objeto, a função não será executada.
	}
	test.norm=shapiro.test(x)							#testando a normalidade dos dados, pois uma das premissas para o cálculo das estimativas é de que os dados sigam uma distribuição normal.
	if(test.norm$p.value <= 0.05){						#se o valor do teste for menor do que 0,05, quer dizer que a distribuição dos dados não seguem uma distribuição normal. 
	stop ("Your vector doesn't follow a normal distribution") 		#não seguindo uma distribuição normal, a função pára e envia a mensagem ao usuário informando que os seus dados não seguem uma distribuição normal como é a premissa para o uso da função.
	}
	vari=var(x)										#criando objeto com a variância da amostra.
	se.mean=sqrt(vari) 								#criando objeto com o erro padrão da média.
	n=length(x)										#criando objeto com o tamanho da amostra (número de amostras).
	coef.var=sqrt(se.mean/mean(x))						#criando objeto com o coeficiente de variação da amostra.
	sample.size=(((tvalue)^2)*vari)/(accuracy*(mean(x)))^2		#criando objeto com a estimativa do número de amostras necessário dentro da porcentagem de acurácia informada no argumento accuracy.
	accur=(coef.var*tvalue)/sqrt(n)						#criando objeto com a estimativa da acurácia da média da amostra.
	accuracies=seq(from=0.05, to=0.5, by=0.05)				#criando objeto com os valores de acurácia de 10 a 15% a cada 5%.
	n.samples=(((tvalue)^2)*vari)/(accuracies*(mean(x)))^2		#criando objeto com os valores de número de amostras correspondente às acurácias da média da população.
	return (list(sample.size, accuracy=accur, 				#retorna ao usuário uma lista com a estimativa do número de amostras necessárias dentro da porcentagem de acurácia desejada, a estimativa da acurácia da 
		data.frame(accuracies,n.samples)))						#média da amostra, e ainda um data frame com o número de amostras necessárias com base no objeto de dados para diferentes acurácias (de 10 a 50% a cada 5%).
	
	#gráfico	
 
	accuracies=seq(from=0.05, to=0.5, by=0.05)				#criando o objeto com os valores do eixo x do gráfico (acurácias de 10 a 50% a cada 5%).
	n.samples=(((tvalue)^2)*vari)/(accuracies*(mean(x)))^2		#criando o objeto com os valores de número de amostras correspondente a acurácia (eixo y)
	par(mar=c(5, 5, 2, 2)) 								#estabelecendo as margens da imagem. 
	plot(accuracies,n.samples, cex.axis= 1.5, las=1, 			#criando um plot com a relação entre as acurácias e a estimativa dos números de amostras necessárias correspondentes.
		family="serif", tcl=0.3,col="black", xlab="", ylab="", 
		pch=19, cex=1.5,bty="l")
	lines(accuracies[order(accuracies)], 					#adicionando linhas ligando os pontos do gráfico para que o usuário possa ter uma ideia da estimativa do número de amostras necessárias para as acurácias  
	n.samples[order(accuracies)], xlim=range(accuracies), 			#entre 10 a 50%.
	ylim=range(n.samples), lwd = 2)
	mtext("Accuracy of mean", line=3,side= 1, 				#adicionando título ao eixo x do gráfico.
		cex= 1.7, family="serif")  
	mtext("Number of samples needed",line=3,side=2,cex=1.7,		#adicionando título ao eixo y do gráfico.
		family="serif")
		}
	}

n.samples()	

\end{lstlisting}



\begin{center}
\line(1,0){250}
\end{center}



\begin{center}
\line(1,0){250}
\end{center}



\textbf{Help da PROPOSTA A - Quantas amostras são necessárias?}\lstset{frame=single, language=rsplus}
\begin{lstlisting}
 
modelo                package:unknown                R Documentation

ESTIMATIVAS DE NÚMERO DE AMOSTRAS NECESSÁRIAS E ACURÁCIA DA MÉDIA DA AMOSTRA

Description:

	Função para estimar o número de amostras necessárias para uma determinada porcentagem de interesse de acurácia da média, 
	assim como a acurácia da média do tamanho amostral. Além disso, ela oferece um data frame e um gráfico com as diferentes estimativas 
	de número de amostras necessárias para diferentes acurácias da média (i.e. de 0,1 (10%) a 0,5 (50%) a cada 5%).
	
Usage:

     n.samples(x, accuracy, tvalue)

Arguments:

	x: objeto dos dados de classe vetor.
	
	accuracy: porcentagem de acurácia da média do tamanho amostral desejada (exemplo, para acurácia de 10%, accuracy=0.1)
	
	tvalue: valor de t correspondente ao número de amostras e nível de significância 0,05.


Details:
	
	Se o objeto for um vetor, os valores do objeto devem ser com observações numéricas.
	

Value:

Se os argumentos 'accuracy' não for inserido, a função retornará somente o data frame com as estimativas do número de amostras necessárias para diferentes acurácias de 10 a 50% e a acurácia da média da amostra.
	

Warning:

	A função só é válida para objetos do tipo vetor.
	Se os argumentos 'x' e 'tvalue' não forem inseridos,a função não é executada.
	O objeto deve ter no mínimo dez elementos.
	Se o objeto de dados tiver valores faltantes, a função não é executada.
	Os dados devem ter uma distribuição normal, caso contrário, a função não é executada.
	

Author(s):

     Claire Pauline Röpke Ferrando
	claireprf@gmail.com

References:

	Eckblad, J. W. (1991) How Many Samples Should Be Taken? BioScience 41, 346-348.

	Gotelli, N. J. & Ellison, A. M. (2004) A Primer of Ecological Statistics. Sunderland, MA: Sinauer & Associates, 2004

	McCabe, D. J. (2011) Sampling Biological Communities. Nature Education Knowledge 3(10):63

Notes

Para ter acesso à tabela com os valores de t http://www.sjsu.edu/faculty/gerstman/StatPrimer/t-table.pdf
Os graus de liberdade são o número de observações (i.e. número de amostras menos 1).


Examples:

objeto=c(5,4,8,1,9,4,1,3,8,2,7)
n.samples(x=objeto, accuracy=0.1, tvalue=2.22)


objeto2=c(1,4,5,7,8,9,3,9,3,1,4,6,3,2,2)
n.samples(x=objeto2, tvalue=2.14)
\end{lstlisting}



\end{document}
