\documentclass[10pt,a4]{article}

\usepackage{fullpage}
\usepackage{setspace}
\usepackage{parskip}
\usepackage{titlesec}
\usepackage[section]{placeins}
\usepackage{xcolor}
\usepackage{breakcites}
\usepackage{lineno}
\usepackage{hyphenat}





\PassOptionsToPackage{hyphens}{url}
\usepackage[colorlinks = true,
            linkcolor = blue,
            urlcolor  = blue,
            citecolor = blue,
            anchorcolor = blue]{hyperref}
\usepackage{etoolbox}
\makeatletter
\patchcmd\@combinedblfloats{\box\@outputbox}{\unvbox\@outputbox}{}{%
  \errmessage{\noexpand\@combinedblfloats could not be patched}%
}%
\makeatother


\usepackage{natbib}




\renewenvironment{abstract}
  {{\bfseries\noindent{\abstractname}\par\nobreak}\footnotesize}
  {\bigskip}

\titlespacing{\section}{0pt}{*3}{*1}
\titlespacing{\subsection}{0pt}{*2}{*0.5}
\titlespacing{\subsubsection}{0pt}{*1.5}{0pt}


\usepackage{authblk}


\usepackage{graphicx}
\usepackage[space]{grffile}
\usepackage{latexsym}
\usepackage{textcomp}
\usepackage{longtable}
\usepackage{tabulary}
\usepackage{booktabs,array,multirow}
\usepackage{amsfonts,amsmath,amssymb}
\providecommand\citet{\cite}
\providecommand\citep{\cite}
\providecommand\citealt{\cite}
% You can conditionalize code for latexml or normal latex using this.
\newif\iflatexml\latexmlfalse
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}%

\AtBeginDocument{\DeclareGraphicsExtensions{.pdf,.PDF,.eps,.EPS,.png,.PNG,.tif,.TIF,.jpg,.JPG,.jpeg,.JPEG}}

\usepackage[utf8]{inputenc}
\usepackage[english,ngerman,greek,portuguese]{babel}










\begin{document}

\title{Apresenta\selectlanguage{ngerman}ção do R com um exemplo de análise de regressão não-linear\selectlanguage{portuguese}}



\author[1]{Eduardo Esteves}%
\affil[1]{Universidade do Algarve}%


\vspace{-1em}



  
  \date{May 08, 2024}


\begingroup
\let\center\flushleft
\let\endcenter\endflushleft
\maketitle
\endgroup








\sloppy


\section*{Abstract}\label{abstract}

No seguimento dum artigo anterior acerca da an\selectlanguage{ngerman}álise de regressão
não-linear (simples) utilizando a ferramenta Solver® do Excel® propõe-se
neste artigo a apresentação do R, uma linguagem de programação e um
ambiente para computação estatística e gráfica, através da sua aplicação
na ``descrição'' de relações estatísticas (não-lineares) entre
variáveis.

\textbf{Palavras-chave}: R, Regressão não-linear.

\section*{Introdução}\label{introduuxe7uxe3o}

O R \hyperref[csl:1]{({R Core Team} and {R Development Core Team}, 2017)} é ao mesmo tempo uma linguagem de programação e
um ambiente para computação estatística e gráfica. Trata-se de uma
linguagem de programação especializada em computação com dados. Uma das
suas principais características é o seu carácter gratuito e a sua
disponibilidade para uma gama bastante variada de sistemas operativos
(vd. ). Apesar do seu carácter gratuito, o R é uma ferramenta bastante
poderosa com boas capacidades ao nível da programação e um conjunto
bastante vasto (e em constante crescimento) de packages que acrescentam
bastantes potencialidades à já poderosa versão base do R
\hyperref[csl:2]{(Torgo, 2006)}. Contudo, o termo ``ambiente'' pretende caracterizar
o R como um sistema completo e coerente ao invés dum conjunto de
ferramentas muito específicas e relativamente inflexíveis
\hyperref[csl:3]{(Venables, Smith and Team, 2006)}.

O R pode ser entendido como uma implementação da linguagem S
desenvolvida por Rick Becker, John Chambers e Allan Wilks nos Bell
Laboratories (E.U.A.), que também constitui a base do software S-Plus®
(Insightful Corp.). A evolução da linguagem S está descrita em quatro
livros de John Chambers e colaboradores. As ``distribuições'' do R
incluem um bom conjunto de manuais (\emph{vd}. ) e existem, actualmente,
vários livros que descrevem a utilização do R para análise estatística
de dados (\emph{vd}. ), \emph{e.g.} \hyperref[csl:4]{(Dalgaard, 2002)} ou
\hyperref[csl:5]{(Crawley, 2007)}. Na última revisão deste artigo usei a versão 2.12.0
(embora sejam disponibilizadas regularmente ``novas'' versões do R). O
ficheiro de instalação (R-X.XX.X-win32.exe) para Microsoft Windows® pode
ser obtido em e o processo de instalação é simples. Também existem
``versões'' para Mac OS e Unix/Linux, e 64-bit para Windows. O sítio
electrónico do projecto constitui a principal referência do R e funciona
como ponto de partida para explorar mais este sistema.

Boa parte das pessoas utiliza o R como um sistema para análise
estatística de dados, uma vez que a maioria das ``estatísticas
clássicas'' e muitas das metodologias mais recentes estão disponíveis,
embora os promotores prefiram ``pensar'' o R como um ambiente no qual
essas técnicas têm sido implementadas \hyperref[csl:3]{(Venables, Smith and Team, 2006)}. Cerca de 25
pacotes (\emph{i.e.} conjuntos de funções) fazem parte do sistema básico
(os ``recommended'' packages), mas muitos outros estão disponíveis
através do CRAN (via para instalação. Uma importante diferença entre a
linguagem S (e o R) e outros sistemas (e.g.~SPSS® ou SAS®) reside na
(muito) menor quantidade de resultados apresentados para uma qualquer
análise estatística, embora os resultados sejam guardados em objectos
para posterior consulta ou utilização pelo R noutras funções
\hyperref[csl:3]{(Venables, Smith and Team, 2006)}.

Neste artigo, pretende-se apresentar (muito sucintamente) o R, uma
linguagem de programação especializada em computação com dados,
utilizando-a para analisar problemas cujo objectivo é ``descrever''
relações estatísticas (não-lineares) entre variáveis. Não se pretende
discutir aqui os aspectos estatísticos dos resultados obtidos, apenas o
\emph{modus operandi} (ainda que de forma simplificada).

\section*{Regressão não-linear
(simples)}\label{regressuxe3o-nuxe3o-linear-simples}

Os vários aspectos relacionados com a regressão não-linear (simples) que
servem de base a este artigo foram abordados, ainda que de forma
informal e possivelmente incompleta, num artigo anterior
\hyperref[csl:6]{(Esteves, 2011)}. Em vários domínios do conhecimento, e.g.~biologia,
física, química, engenharia, etc., são usados modelos matemáticos para
descrever um conjunto de dados empíricos, genericamente

\(y=f\left(\theta\right)+\epsilon\)

em que \emph{y} é a variável dependente, \emph{x} é a variável
``independente'' -- por vezes, controlada pelo investigador -- e
\emph{f(x)} é uma função que pode incluir um ou mais parâmetros
\selectlanguage{greek}\emph{θ}, \selectlanguage{english}e \selectlanguage{greek}\emph{ϵ} \selectlanguage{english}s\selectlanguage{ngerman}ão os erros aleatórios, independentes e com
distribuição normal. Outra formulação, equivalente, é \(\hat{y}\ =f\left(x\right)\)
(em que \(\hat{y}\) se lê valor esperado, ou estimado, de
\emph{y}). Quanto melhor \emph{f(x)} se ajustar aos dados, mais
``rigorosamente'' descreverá aquela relação \hyperref[csl:7]{(Brown, 2001)}.
Pretende-se ajustar a função \emph{f(x)} aos dados empíricos de forma a
minimizar os erros \(\epsilon_i\ =\ \left(y_i-\hat{y}\right)\). De facto, o objectivo é estimar
o(s) parâmetro(s) da função \emph{f(x)} de modo a minimizar a soma dos
quadrados dos erros, SQE -- método dos mínimos quadrados. No caso de
funções (ou modelos) não-lineares, e.g.~\(y=a\exp(b\cdot x)\), não é
possível obter as estimativas dos parâmetros num único passo, como no
caso de regressões lineares, pelo que a SQE é minimizada através dum
processo iterativo (cíclico) utilizando um algoritmo apropriado que
necessita dos valores iniciais dos parâmetros \(\theta_0\)
\hyperref[csl:8]{(Bowen and Jerman, 1995)}. Tradicionalmente, transformam-se as variáveis de
alguns modelos não-lineares de forma a linearizar a relação e a permitir
a sua análise através da regressão linear. Contudo, esta abordagem é
válida se a(s) variável(is) transformadas se verificam os pressupostos
da análise de regresão linear.

\section*{Exemplo}\label{exemplo}

A utilização do R com um exemplo concreto (entretanto abordado por
\hyperref[csl:6]{(Esteves, 2011)} usando a ferramenta Solver® do Microsoft Excel®)
permitirá mostrar o funcionamento e demonstrar as capacidades do
software. Como se imagina, as funcionalidades não se esgotam no que aqui
se apresenta.

O aspecto do R ao iniciar uma sessão de trabalho em ambiente Windows®
ilustra-se na Figura . Para além da barra de ferramentas no topo (que
permite realizar as tarefas comuns: abrir/gravar ficheiros, cortar/colar
texto, instalar pacotes, ``gerir'' as janelas, etc.) surge uma janela
(\emph{R Console}) na qual se introduzem os comandos, a seguir ao sinal
\textgreater{}.

Admita-se que os dados que se pretendem analisar estão num ficheiro do
Excel®. Em primeiro lugar, será necessário guardar uma versão (*.txt ou
*.csv) - a extensão txt diz respeito a ficheiros de texto separado por
tabulações enquanto a extensão csv está relacionada com ficheiros de
texto separados por vírgulas - desse ficheiro utilizável pelo R (devem
usar-se pontos, em vez de vírgulas, como separadores decimais).\selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/image011/image0111}
\caption{{Aspeto da janela *R Console*.
{\label{642394}}%
}}
\end{center}
\end{figure}

Na consola do R escrever (fazendo Enter no fim),

\begin{verbatim}
> dados<-read.table(file="G:/MyArticles/ArtigosRegressaoNaoLinearExcel/RegressaoNaoLinear.txt\selectlanguage{english}",header=T,sep=\selectlanguage{english}"\\t")
\end{verbatim} 

para ``carregar'' a informa\selectlanguage{ngerman}ção contida no ficheiro
RegressaoNaoLinear.txt para o objecto dados. (atente-se na notação
\textgreater{}). Os parâmetros header e sep permitem considerar os
rótulos dos dados e o tipo de ficheiro de texto (neste caso separado por
tabulações), respectivamente. Por sinal, a quantidade de dados envolvida
poderia muito bem ser introduzida directamente no R através de

\begin{verbatim}
> CO2<-c(141,172,181,227,309,414,641, 936)
> Prop<-c(0.25,0.34,0.34,0.68,0.85,0.99,0.98,0.99)
\end{verbatim} 

em que c(\ldots{}) permite concatenar um conjunto de dados num objecto
(neste caso, CO2 e Prop). Podemos visualizar a informação usando a
função plot

\begin{verbatim}
> plot(Prop~CO2, las=1,xlim=c(0,1000),ylim=c(0,1),pch=16,cex=1.5, xlab=\selectlanguage{english}"CO2 (ppm)\selectlanguage{english}", ylab=\selectlanguage{english}"Proporcao de respostas correctas\selectlanguage{english}")
\end{verbatim} 

em que Prop\textasciitilde{}CO2 descreve o ``modelo'' que se pretende
representar (neste caso Prop em funcao de CO2) e cujos restantes
parametros especificam as varias caracteristicas do grafico (las para
orientacao dos rotulos do eixo dos \emph{yy}, xlim e ylim para
determinar os limites dos eixos, pch para definir o simbolo usado, cex
para aumentar o tamanho relativo dos caracteres, e xlab e ylab para
``legendar'' os eixos) (Figura a). Para mais informacoes acerca desta
(ou qualquer outra) funcao pode fazer-se

\begin{verbatim}
> plot
\end{verbatim} 

(ou entao procurar com \textgreater{}help.search(``termo'') ou, ainda,
usar a opcao Help\textgreater{} Apropos\ldots{}). Usando o botao direito
do rato sobre o grafico, e possivel copiar a figura (como metaficheiro
Windows(r) por exemplo) para inclusao num ficheiro do Microsoft Word(r).
Admita-se (por razoes cientificas) que um modelo ``dose-resposta''
(logistico modificado) \(P_{\left\{i\right\}}=\frac{1}{3}+\frac{\exp\left(B\left(T-\log\left(x\right)\right)\right)}{\left(1+\exp\left(T-\log\left(x\right)\right)\right)}\) em que \emph{Pi} e a proporcao
de respostas positivas do provador \emph{i}, \emph{log}(\emph{x}) e o
logaritmo do valor do estimulo \emph{x} , \emph{B} e o ``declive'' e
\emph{T} e o limiar para o provador \emph{i} (em \emph{log}(\emph{x})),
e adequado para descrever os dados. Para ajustar o modelo basta fazer

\begin{verbatim}
> ajuste<-nls(Prop~1/3+exp(B(T-log10(CO2)))/(1+exp(B(T-log10(CO2)))),data=data.frame(CO2=CO2,Prop=Prop),start=list(B=-10,T=2.5))
\end{verbatim} 

em que o objecto ajuste incluira os resultados duma regressao
\textgreater{} nao-linear (atraves da funcao nls) - outras funcoes
(muito) usadas sao lm e aov para regressao linear (i.e.~modelos
lineares) e analise de variancia, respectivamente - do modelo - a
definicao dos modelos em S esta minuciosamente descrita em
\hyperref[csl:9]{(Chambers, Hastie and Pregibon, 1990)}
Prop\textasciitilde{}(1/3+exp(B*(T-log10(CO2))))/(1+exp(B*(T-log10(CO2)))
considerando os dados (indicados para o parametro data sob a forma de
uma data.frame - neste caso, considerou-se que o utilizador introduziu
directamente no sistema os dados ao inves de ``carregar'' o ficheiro dos
dados (sendo que bastaria apenas indicar data=dados, no comando) - e as
estimativas iniciais dos parametros do modelo descritas em start
(atraves duma list). Os resultados do ajuste (Figura 2) podem ser
consultados fazendo

\begin{verbatim}
> summary(ajuste)
\end{verbatim} \selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/SeqAjuste-1/SeqAjuste-1}
\caption{\selectlanguage{ngerman}{Diagramas de dispersão da proporção de respostas vs.~concentração de
CO2: (a) dados originais; (b) modelo ``dose-resposta''~(logístico
modificado); (c) modelo ``dose-resposta'' com intervalos de 95\%~de
confiança; (d) e modelo logístico (ver texto principal).
{\label{273537}}%
}}
\end{center}
\end{figure}\selectlanguage{ngerman}

É possível ilustrar o ajuste, obtendo primeiro as estimativas da
variável Prop (através da função predict) e ``desenhando-as'', em
seguida, sobre o gráfico entretanto obtido (Figura 2) ou seja

\begin{verbatim}
> PropEsp<-predict(ajuste,newdata=list(CO2=seq(0,1000,length=100)),se.fit=T)
> lines(PropEsp~seq(0,1000,length=100),lwd=2,col=6)
\end{verbatim} 

A informação contida no objecto ajuste permite obter as estimativas para
100 valores de CO2 entre 0 e 1000 (daí o parâmetro
seq(1,1000,length=100) no comando acima) assim como os respectivos
erros-padrão (se.fit=T) que serão guardadas no objecto designado
PropEsp. A adição duma linha espessa e magenta (lwd=2 e col=6) à Figura
a é relativamente fácil (Figura b).\selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/image022/image022}
\caption{\selectlanguage{ngerman}{Aspeto da execução de comandos e respectivos resultados na janela
\emph{R Console}.
{\label{562974}}%
}}
\end{center}
\end{figure}\selectlanguage{ngerman}

Podem, ainda, obter-se e ``desenhar-se'' os intervalos de confiança
(upIC e loIC) que se calculam através de \selectlanguage{english}\emph{y}
\selectlanguage{ngerman}±\emph{t}\selectlanguage{english}[?]\emph{se}(\emph{Y}), recorrendo as funcoes qt (para obter os
valores ``teoricos'' de t-Student e cujos parametros sao
\(1\selectlanguage{english}-\frac{\alpha}{2}\), neste caso 0.975, e os graus de liberdade do erro,
que se obtem de summary(ajuste)\$df{[}2{]}), summary(ajuste)\$sigma para
obter o erro-padrao das estimativas e lines, respectivamente (Figura

\begin{verbatim}
> upIC<-PropEsp+qt(.975,summary(ajuste)\$df[2])\*summary(ajuste)\$sigma
> loIC<-PropEsp-qt(.975,summary(ajuste)\$df[2])\*summary(ajuste)\$sigma
> lines(upIC\~seq(0,1000,length=100),col=4)
> lines(loIC\~seq(0,1000,length=100),col=4)
\end{verbatim} 

O modo mais simples de ``testar'' a bondade do ajuste e representar
graficamente os dados e o modelo ajustado (bem como os respetivos
intervalos de confianca), de modo a verificar (visualmente) se os
parametros obtidos numericamente descrevem, de facto, a relacao entre
variaveis (Figura c). Por outro lado, a analise grafica dos residuos,
e.g.~residuos \emph{vs.} valores observados de \emph{X}, permite
``verificar'' se o modelo e adequado (os residuos representam apenas o
erro experimental se nao apresentam tendencias ou padroes). Sendo assim,
obter os residuos atraves de

\begin{verbatim}
> residuos
> summary(ajuste)\$resid
\end{verbatim} 

e, em seguida, representar esse grafico em conjunto com o \emph{normal
probability plot} dos residuos (Figura )

\begin{verbatim}
> par(mfrow=c(2,1),pty=\selectlanguage{english}"s\selectlanguage{english}",las=1)
> plot(residuos\~predict(ajuste),pch=16,col=3,xlab="E{Proporcao de respostas corretas}\selectlanguage{english}",ylab=\selectlanguage{english}"Residuos")
> abline(h=0)
> qqnorm(residuos,pch=16,col=2,xlab= \selectlanguage{english}"Quantis da Distribuicao Normal\selectlanguage{english}",
> ylab=\selectlanguage{english}"Quantis Amostrais\selectlanguage{english}",main=\selectlanguage{english}"\selectlanguage{english}")
> qqline(residuos)
> par(op)
\end{verbatim} 

\textgreater{} \textgreater{} O comando par permite estabelecer o
``esquema'' da figura, neste caso, \textgreater{} os graficos ficam
``arranjados'' em 2 linhas por 1 coluna -- mfrow=c(2,1) \textgreater{}
--, assim como definir a respectiva forma (quadrada, atraves de
pty=``s'' \textgreater{} - ``s'' de ``square''). Ao grafico dos residuos
\emph{vs.} valores esperados de \textgreater{} Prop (atraves de plot)
acrescentamos uma linha horizontal ao nivel de \textgreater{} zero
(atraves de abline) e, por fim, desenhamos o \emph{normal probability
\textgreater{} plot} dos residuos (com qqnorm e qqline).\selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/SeqAjuste-/SeqAjuste-}
\caption{\selectlanguage{english}{Figure 2 Diagramas de dispersão da proporção de respostas vs.
concentração de CO2: dados originais (a); modelo ``dose-resposta''
(logístico modificado) (b); modelo ``dose-resposta'' com intervalos de
95\% de confiança (c); e modelo logístico (ver texto principal) (d).
{\label{352856}}%
}\selectlanguage{ngerman}}
\end{center}
\end{figure}\selectlanguage{ngerman}

É possível ilustrar o ajuste, obtendo primeiro as estimativas da
variável Prop (através da função predict) e ``desenhando-as'', em
seguida, sobre o gráfico entretanto obtido (Figura 2) ou seja

\textgreater{} \textgreater{}
PropEsp\textless{}-predict(ajuste,newdata=list(CO2=seq(0,1000,length=100)),se.fit=T)
\textgreater{} \textgreater{}
lines(PropEsp\textasciitilde{}seq(0,1000,length=100),lwd=2,col=6)

A informação contida no objecto ajuste permite obter as estimativas para
100 valores de CO2 entre 0 e 1000 (daí o parâmetro
seq(1,1000,length=100) no comando acima) assim como os respectivos
erros-padrão (se.fit=T) que serão guardadas no objecto designado
PropEsp. A adição duma linha espessa e magenta (lwd=2 e col=6) à Figura
a é relativamente fácil (Figura b).

Figure 3\selectlanguage{english} Aspecto da execucao de comandos e respectivos resultados na
janela \emph{R Console}.

Podem, ainda, obter-se e ``desenhar-se'' os intervalos de confianca
(upIC e loIC) que se calculam atraves de \selectlanguage{english}\emph{y}
\selectlanguage{ngerman}±\emph{t}\selectlanguage{english}[?]\emph{se}(\emph{Y}), recorrendo as funcoes qt (para obter os
valores ``teoricos'' de t-Student e cujos parametros sao
1\selectlanguage{english}[?]\selectlanguage{english}-\selectlanguage{english}[?]\selectlanguage{greek}\emph{α}\selectlanguage{english}[?]\selectlanguage{english}/\selectlanguage{english}[?]\selectlanguage{english}2, neste caso 0.975, e os graus de liberdade do erro, que
se obt\selectlanguage{ngerman}êm de summary(ajuste)\$df{\[]{}2[\]}),
summary(ajuste)\$sigma para obter o erro-padrão das estimativas e lines,
respectivamente (Figura

\textgreater{} \textgreater{} \textgreater{}
upIC\textless{}-PropEsp+qt(.975,summary(ajuste)\$df{\[]{}2[\]})*summary(ajuste)\$sigma
\textgreater{} \textgreater{} \textgreater{} \textgreater{}
loIC\textless{}-PropEsp-qt(.975,summary(ajuste)\$df{\[]{}2[\]})*summary(ajuste)\$sigma
\textgreater{} \textgreater{} \textgreater{}
lines(upIC\textasciitilde{}seq(0,1000,length=100),col=4) \textgreater{}
\textgreater{} \textgreater{}
lines(loIC\textasciitilde{}seq(0,1000,length=100),col=4) \textgreater{}
\textgreater{} O modo mais simples de ``testar'' a bondade do ajuste é
representar \textgreater{} graficamente os dados e o modelo ajustado
(bem como os respectivos \textgreater{} intervalos de confiança), de
modo a verificar (visualmente) se os \textgreater{} parâmetros obtidos
numericamente descrevem, de facto, a relação entre \textgreater{}
variáveis (Figura c). Por outro lado, a análise gráfica dos resíduos,
\textgreater{} e.g.~resíduos \emph{vs.} valores observados de \emph{X},
permite ``verificar'' se \textgreater{} o modelo é adequado (os resíduos
representam apenas o erro \textgreater{} experimental se não apresentam
tendências ou padrões). Sendo assim, \textgreater{} obter os resíduos
através de \textgreater{} \textgreater{} \textgreater{}
residuos\textless{}-summary(ajuste)\$resid \textgreater{} \textgreater{}
e, em seguida, representar esse gráfico em conjunto com o \emph{normal
\textgreater{} probability plot} dos resíduos (Figura ) \textgreater{}
\textgreater{} \textgreater{}
op\textless{}-par(mfrow=c(2,1),pty=``s'',las=1) \textgreater{}
\textgreater{} \textgreater{}
plot(residuos\textasciitilde{}predict(ajuste),pch=16,col=3,xlab=``E\{Proporção
de \textgreater{} respostas \textgreater{} \textgreater{}
correctas\}``,ylab=''Resíduos'') \textgreater{} \textgreater{}
\textgreater{} abline(h=0) \textgreater{} \textgreater{} \textgreater{}
qqnorm(residuos,pch=16,col=2,xlab= ``Quantis da Distribuição
\textgreater{} Normal'', \textgreater{} \textgreater{} ylab=``Quantis
Amostrais'',main=``'') \textgreater{} \textgreater{} \textgreater{}
qqline(residuos) \textgreater{} \textgreater{} \textgreater{} par(op)
\textgreater{} \textgreater{} O comando par permite estabelecer o
``esquema'' da figura, neste caso, \textgreater{} os gráficos ficam
``arranjados'' em 2 linhas por 1 coluna -- mfrow=c(2,1) \textgreater{}
--, assim como definir a respectiva forma (quadrada, através de
pty=``s'' \textgreater{} - ``s'' de ``square''). Ao gráfico dos resíduos
\emph{vs.} valores esperados de \textgreater{} Prop (através de plot)
acrescentámos uma linha horizontal ao nível de \textgreater{} zero
(através de abline) e, por fim, desenhamos o \emph{normal probability
\textgreater{} plot} dos resíduos (com qqnorm e qqline).\selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/Residual-/Residuals}
\caption{\selectlanguage{ngerman}{Análise gráfica de resíduos: resíduos~\emph{vs}. valores esperados
(esq.); e \emph{normal probability plot} dos resíduos (dir.)
{\label{366152}}%
}}
\end{center}
\end{figure}\selectlanguage{ngerman}

É possível testar se os resíduos se distribuem normalmente através, por
exemplo, de

\begin{quote}
\textgreater{} shapiro.test(residuos)

O resultado deste comando é

Shapiro-Wilk normality test

data: residuos

W = 0.936, p-value = 0.5719

O teste de sequências (ou ``runs test'' nos manuais anglófonos) permite
testar, de forma simples e robusta, se os pontos (dados) diferem
sistematicamente da curva ajustada (modelo) complementando a informação
do diagrama dos resíduos \emph{vs} valores observados de \emph{X}.\selectlanguage{ngerman}
{\[]{} alerta para a reduzia potência estatística do testes baseados
> em sequências. No R, será necessário carregar alguns pacotes, tseries,
> quadprog e zoo (previamente instalados, através da barra de
> ferramentas, a partir dos ficheiros \*.zip disponíveis para o Windows®
> em http://cran.at.r-project.org/bin/windows/contrib/) fazendo e.g.
>
> &gt; library(tseries)
>
> Depois basta fazer
>
> &gt; runs.test(factor(sign(residuos)))
>
> para se obter o seguinte resultado
>
> Runs Test
>
> data: factor(sign(residuos))
>
> Standard Normal = 0.5774, p-value = 0.5637
>
> alternative hypothesis: two.sided
>
> Pode comparar-se o ajuste de dois modelos distintos a um dado conjunto
> de dados confrontando as SQE dos modelos ajustados através do teste de
> F. Sendo assim, depois de ajustar um modelo logístico,
> *y*[?]=[?]*C*[?]/[?][\[]{}1[?]+[?]*Aexp*([?]-[?]*Bx*)[\]} (Figura
d) {\[]{}F[\]}  {\[]{}F[\]} Esta figura foi obtida
atrav\selectlanguage{ngerman}és de

\textgreater{} plot(Prop\textasciitilde{}CO2,las=1,xlim=c(0,1000),
ylim=c(0,1),pch=16,cex=1.5, xlab=``CO2 (ppm)'',ylab=``Propor

ção de respostas correctas``)

\textgreater{} PropEsper\textless{}-predict(ajustes,newdata=
list(CO2=seq(0,1000,length=100)),se.fit=T)

\textgreater{} lines(PropEsper\textasciitilde{}seq(0,1000,length=
100),lwd=2,col=6)

\textgreater{} uppIC\textless{}-PropEsper+qt(.975,summary(
ajustes)\$df{\[]{}2[\]})*summary(ajustes)\$sigm

\textgreater{} lowIC\textless{}-PropEsper-qt(.975,summary(
ajustes)\$df{\[]{}2[\]})*summary(ajustes)\$sigm

\textgreater{} lines(uppIC\textasciitilde{}seq(0,1000,length=100),
col=4)

\textgreater{} lines(lowIC\textasciitilde{}seq(0,1000,length=100),
col=4)

, de formulação mais generalizada do que o modelo ``dose-resposta''
anterior, através de

\textgreater{}
ajustes\textless{}-nls(Prop\textasciitilde{}C/(1+A*exp(-B*CO2
)),data=data.frame(CO2=CO2,Prop=Prop),

start=list(A=10,B=.0025,C=1))

\textgreater{} summary(ajustes)

os resultados do teste de F obtêm-se facilmente através de

\textgreater{} anova(ajuste,ajustes)

Os passos descritos anteriormente, i.e.~uma sessão de trabalho (Figura
), podem (e, na minha opinião, devem) ser ``guardados''. Para isso,
criar um ficheiro de \emph{script} (através de File\textgreater{}New
script), de facto um ficheiro texto, onde são ``guardados'' os comandos.
Este ficheiro pode ser carregado noutra sessão de trabalho (através de
File\textgreater{}Open script\ldots{}) e as análises e gráficos podem
ser repetidos n-vezes (janela \emph{R Editor}). O \emph{script} do
exemplo descrito aqui pode ser obtido no sítio electrónico do autor.
\end{quote}

Para terminar uma sessão de trabalho, primeiro ``limpar'' da memória os
objectos criados (com a função rm) e, depois, encerrar o programa
(geralmente não guardo uma ``imagem'' do ambiente de trabalho):

\begin{quote}
\textgreater{} rm(list=ls()) ; q()
\end{quote}

Figure 5\selectlanguage{english} Aspecto duma sessao de trabalho no R.

\begin{quote}
Consideracoes finais

As ``dificuldades estatisticas'' relacionadas com a utilizacao do Excel(r)
da Microsoft (e da respectiva ferramenta Solver(r)) para analise de
regressao nao-linear\selectlanguage{english} {\[]{} limitam a sua utilizacao aos casos "mais
> simples" ou para efeitos pedagogicos. Em situacoes "profissionais"
> deve usar-se software dedicado, por exemplo SPSS(r) ou R.

Embora as caracteristicas do R tornem (mais) dificil a aprendizagem, o
seu caracter gratuito, o facto de ser uma ferramenta bastante poderosa
com boas capacidades ao nivel da programacao e um conjunto bastante
vasto (e em constante crescimento) de *packages* que acrescentam
bastantes potencialidades estatisticas e graficas, o crescente interesse
de utilizadores das mais variadas formacoes (que se reunem anualmente
desde 2004 nas conferencias useR! -- em 2011 a useR!2011 decorrera no
Reino-Unido, *cf*. <http://www.warwick.ac.uk/statsdept/useR-2011/>) e a
disponibilidade dos promotores (R Development Core Team) e da
"comunidade" de utilizadores, mais ou menos avancados, ajudam (e muito)
esse processo. Os varios manuais
(<http://cran.r-project.org/manuals.html>), a pagina wiki
(<http://wiki.r-project.org/>) e a *mailing list* de ajuda
(<http://stat.ethz.ch/mailman/listinfo/r-help>) permitem ultrapassar a
(esmagadora) maioria das dificuldades surgidas durante a utilizacao do
R.

> Agradecimentos
>
> Este artigo muito beneficiou dos comentarios, correccoes e sugestoes
> dos colegas e leitores.
>
> References
>
> [\[]{}1[\]} A. M. Brown: ``A step-by-step
guide to non-linear regression analysis of experimental data using a
Microsoft Excel spreadsheet'', \emph{Computer methods and Programs in
Biomedicine}, pp.~191-200, 2001.

{\[]{}2[\]} John M. Chambers, Trevor J. Hastie:
\emph{Statistical models in S}. Chapman \& Hall, 1992.

{\[]{}3[\]} W.J. Conover: \emph{Practical nonparametric
statistics}. John Wiley \& Sons. Inc., 1999.

{\[]{}4[\]} M.J. Crawley: \emph{The R book}. Wiley, 2007. URL
\url{http://www.google.com/books?id=8D4HVx0apZQC}.

{\[]{}5[\]} Peter Dalgaard: \emph{Introductory statistics with
R}. Springer-Verlag New York Inc., 2002.

{\[]{}6[\]} E. Esteves: \emph{Regressao nao-linear utilizando
a ferramenta Solver(r) do Microsoft Excel(r)}. 2010. URL
\url{http://w3.ualg.pt/~eesteves.}.

{\[]{}7[\]} R Development Core Team: \emph{R: A Language and
Environment for Statistical Computing}. 2007. URL
\href{http://www.R-project.org/}{http://www.R-project.org}. ISBN
3-900051-07-0.

{\[]{}8[\]} L. Torgo: \emph{Introducao a programacao em R.}.
2006.

{\[]{}9[\]} W. N. Venables, D. M. Smith, R Development Core
Team: \emph{An Introduction to R (Notes on R: A Programming Environment
for Data Analysis and Graphics)}. The R Foundation for Statistical
Computing, 2006. URL
\url{http://cran.r-project.org/doc/manuals/R-intro.pdf}.

{\[]{}10[\]} W.P. Bowen, J.C. Jerman: ``Nonlinear regression
using spreadsheets'', \emph{Trends in Pharmacological Sciences},
pp.~413-417, 1995.
\end{quote}\selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/image012/image012}
\caption{{This is a caption
{\label{629492}}%
}}
\end{center}
\end{figure}\selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/image1/image1}
\caption{{This is a caption
{\label{308974}}%
}}
\end{center}
\end{figure}\selectlanguage{portuguese}
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.70\columnwidth]{figures/image0111/image0111}
\caption{{This is a caption
{\label{796648}}%
}}
\end{center}
\end{figure}



Figure 1\selectlanguage{english} Aspecto da janela \emph{R Console}.

Na consola do R escrever (fazendo Enter no fim),

\begin{quote}
\textgreater{}
dados\textless{}-read.table(file=``G:/MyArticles/ArtigosRegressaoNaoLinearExcel/Regre

ssaoNaoLinear.txt``,header=T,sep=''\textbackslash{}t``)

para ``carregar'' a informa\selectlanguage{ngerman}ção contida no ficheiro
RegressaoNaoLinear.txt para o objecto dados. (atente-se na notação
\textless{}-). Os parâmetros header e sep permitem considerar os rótulos
dos dados e o tipo de ficheiro de texto (neste caso separado por
tabulações), respectivamente. Por sinal, a quantidade de dados envolvida
poderia muito bem ser introduzida directamente no R através de

\textgreater{} CO2\textless{}-c(141,172,181,227,309,414,641, 936)

\textgreater{}
Prop\textless{}-c(0.25,0.34,0.34,0.68,0.85,0.99,0.98,0.99)

em que c(\ldots{}) permite concatenar um conjunto de dados num objecto
(neste caso, CO2 e Prop) . Podemos visualizar a informação usando a
função plot

\textgreater{} plot(Prop\textasciitilde{}CO2,
las=1,xlim=c(0,1000),ylim=c(0,1),pch=16,cex=

1.5, xlab=``CO2 (ppm)'', ylab=``Proporção de respostas correctas'')

em que Prop\textasciitilde{}CO2 descreve o ``modelo'' que se pretende
representar (neste caso Prop em função de CO2) e cujos restantes
parâmetros especificam as várias características do gráfico (las para
orientação dos rótulos do eixo dos \emph{yy}, xlim e ylim para
determinar os limites dos eixos, pch para definir o símbolo usado, cex
para aumentar o tamanho relativo dos caracteres, e xlab e ylab para
``legendar'' os eixos) (Figura a). Para mais informações acerca desta
(ou qualquer outra) função pode fazer-se

\textgreater{} ?plot

(ou então procurar com \textgreater{}help.search(``termo'') ou, ainda,
usar a opção Help\textgreater{}\\
Apropos\ldots{}). Usando o bot\selectlanguage{ngerman}ão direito do rato sobre o gráfico, é
possível copiar a figura (como metaficheiro Windows® por exemplo) para
inclusão num ficheiro do Microsoft Word®.
\end{quote}

Admita-se (por razões científicas) que um modelo ``dose-resposta''
(logístico modificado)

\emph{P}
\selectlanguage{english}[?]=\selectlanguage{english}[?]((1)/(3)\selectlanguage{english}[?]+\selectlanguage{english}[?]\emph{exp}(\emph{B}(\emph{T}\selectlanguage{english}[?]\selectlanguage{english}-\selectlanguage{english}[?]\emph{log}(\emph{x})))/(1\selectlanguage{english}[?]+\selectlanguage{english}[?]\emph{exp}(\emph{T}\selectlanguage{english}[?]\selectlanguage{english}-\selectlanguage{english}[?]\emph{log}(\emph{x})))

em que \emph{Pi} e a proporcao de respostas positivas do provador
\emph{i} , \emph{log}(\emph{x}) e o logaritmo do valor do estimulo
\emph{x} , \emph{B} e o ``declive'' e \emph{T} e o limiar para o
provador \emph{i} (em \emph{log}(\emph{x})), e adequado para descrever
os dados. Para ajustar o modelo basta fazer

\begin{quote}
\textgreater{}
ajuste\textless{}-nls(Prop\textasciitilde{}(1/3+exp(B*(T-log10(CO2))))/(1+exp(B*(T-log10(CO2)))),

data=data.frame(CO2=CO2,Prop=Prop),start=list(B=-10,T=2.5))

em que o objecto ajuste incluira os resultados duma regressao nao-linear
(atraves da funcao
nls)\selectlanguage{english} {\[]{}C[\]}\selectlanguage{english} \selectlanguage{english} {\[]{}C[\]}\selectlanguage{english} Outras funcoes (muito)
usadas sao lm e aov para regressao linear (i.e.~modelos lineares) e
analise de variancia, respectivamente. do
modelo\selectlanguage{english} {\[]{}D[\]}\selectlanguage{english} \selectlanguage{english} {\[]{}D[\]}\selectlanguage{english} A definicao dos
modelos em S esta minuciosamente descrita em\selectlanguage{english}
{\[]{}.
> Prop\~(1/3+exp(B\*(T-log10(CO2))))/(1+exp(B\*(T-log10(CO2)))
> considerando os dados (indicados para o parametro data sob a forma de
> uma data.frame [\[]{}E[\]}\selectlanguage{english} \selectlanguage{english} {\[]{}E[\]}\selectlanguage{english} Neste caso, considerou-se que
o utilizador introduziu directamente no sistema os dados ao inves de
``carregar'' o ficheiro dos dados (sendo que bastaria apenas indicar
data=dados, no comando). ) e as estimativas iniciais dos parametros do
modelo descritas em start (atraves duma list). Os resultados do ajuste
(Figura ) podem ser consultados fazendo

\textgreater{} summary(ajuste)
\end{quote}

Figure 2\selectlanguage{english} Diagramas de dispersao da proporcao de respostas
vs.~concentracao de CO2: dados originais (a); modelo ``dose-resposta''
(logistico modificado) (b); modelo ``dose-resposta'' com intervalos de
95\% de confianca (c); e modelo logistico (ver texto principal) (d).

E possivel ilustrar o ajuste, obtendo primeiro as estimativas da
variavel Prop (atraves da funcao predict) e ``desenhando-as'', em
seguida, sobre o grafico entretanto obtido (Figura ou seja

\begin{quote}
\textgreater{}
PropEsp\textless{}-predict(ajuste,newdata=list(CO2=seq(0,1000,length=100)),se.fit=T)

\textgreater{}
lines(PropEsp\textasciitilde{}seq(0,1000,length=100),lwd=2,col=6)

A informacao contida no objecto ajuste permite obter as estimativas para
100 valores de CO2 entre 0 e 1000 (dai o parametro
seq(1,1000,length=100) no comando acima) assim como os respectivos
erros-padrao (se.fit=T) que serao guardadas no objecto designado
PropEsp. A adicao duma linha espessa e magenta (lwd=2 e col=6) a Figura
a e relativamente facil (Figura b).
\end{quote}

Figure 3\selectlanguage{english} Aspecto da execucao de comandos e respectivos resultados na
janela \emph{R Console}.

Podem, ainda, obter-se e ``desenhar-se'' os intervalos de confianca
(upIC e loIC) que se calculam atraves de \selectlanguage{english}\emph{y}
\selectlanguage{ngerman}±\emph{t}\selectlanguage{english}[?]\emph{se}(\emph{Y}), recorrendo as funcoes qt (para obter os
valores ``teoricos'' de t-Student e cujos parametros sao
1\selectlanguage{english}[?]\selectlanguage{english}-\selectlanguage{english}[?]\selectlanguage{greek}\emph{α}\selectlanguage{english}[?]\selectlanguage{english}/\selectlanguage{english}[?]\selectlanguage{english}2, neste caso 0.975, e os graus de liberdade do erro, que
se obt\selectlanguage{ngerman}êm de summary(ajuste)\$df{\[]{}2[\]}),
summary(ajuste)\$sigma para obter o erro-padrão das estimativas e lines,
respectivamente (Figura

\begin{quote}
\textgreater{}
upIC\textless{}-PropEsp+qt(.975,summary(ajuste)\$df{\[]{}2[\]})*summary(ajuste)\$sigma

\textgreater{}
loIC\textless{}-PropEsp-qt(.975,summary(ajuste)\$df{\[]{}2[\]})*summary(ajuste)\$sigma

\textgreater{} lines(upIC\textasciitilde{}seq(0,1000,length=100),col=4)

\textgreater{} lines(loIC\textasciitilde{}seq(0,1000,length=100),col=4)

O modo mais simples de ``testar'' a bondade do ajuste é representar
graficamente os dados e o modelo ajustado (bem como os respectivos
intervalos de confiança), de modo a verificar (visualmente) se os
parâmetros obtidos numericamente descrevem, de facto, a relação entre
variáveis (Figura c). Por outro lado, a análise gráfica dos resíduos,
e.g.~resíduos \emph{vs.} valores observados de \emph{X}, permite
``verificar'' se o modelo é adequado (os resíduos representam apenas o
erro experimental se não apresentam tendências ou padrões). Sendo assim,
obter os resíduos através de

\textgreater{} residuos\textless{}-summary(ajuste)\$resid

e, em seguida, representar esse gráfico em conjunto com o \emph{normal
probability plot} dos resíduos (Figura )

\textgreater{} op\textless{}-par(mfrow=c(2,1),pty=``s'',las=1)

\textgreater{}
plot(residuos\textasciitilde{}predict(ajuste),pch=16,col=3,xlab=``E\{Proporção
de respostas

correctas\}``,ylab=''Resíduos``)

\textgreater{} abline(h=0)

\textgreater{} qqnorm(residuos,pch=16,col=2,xlab= ``Quantis da
Distribuição Normal'',

ylab=``Quantis Amostrais'',main=``'')

\textgreater{} qqline(residuos)

\textgreater{} par(op)

O comando par permite estabelecer o ``esquema'' da figura, neste caso,
os gráficos ficam ``arranjados'' em 2 linhas por 1 coluna --
mfrow=c(2,1) --, assim como definir a respectiva forma (quadrada,
através de pty=``s'' - ``s'' de ``square''). Ao gráfico dos resíduos
\emph{vs.} valores esperados de Prop (através de plot) acrescentámos uma
linha horizontal ao nível de zero (através de abline) e, por fim,
desenhamos o \emph{normal probability plot} dos resíduos (com qqnorm e
qqline).
\end{quote}

Figure 4\selectlanguage{english} Analise grafica de residuos: residuos \emph{vs.} valores
esperados (esq.); e \emph{normal probability plot} dos residuos (dir.).

E possivel testar se os residuos se distribuem normalmente atraves, por
exemplo, de

\begin{quote}
\textgreater{} shapiro.test(residuos)

O resultado deste comando e

Shapiro-Wilk normality test

data: residuos

W = 0.936, p-value = 0.5719

O teste de sequencias (ou ``runs test'' nos manuais anglofonos) permite
testar, de forma simples e robusta, se os pontos (dados) diferem
sistematicamente da curva ajustada (modelo) complementando a informacao
do diagrama dos residuos \emph{vs} valores observados de \emph{X}.\selectlanguage{ngerman}
{\[]{} alerta para a reduzia potencia estatistica do testes baseados
> em sequencias. No R, sera necessario carregar alguns pacotes, tseries,
> quadprog e zoo (previamente instalados, atraves da barra de
> ferramentas, a partir dos ficheiros \*.zip disponiveis para o Windows(r)
> em http://cran.at.r-project.org/bin/windows/contrib/) fazendo e.g.
>
> &gt; library(tseries)
>
> Depois basta fazer
>
> &gt; runs.test(factor(sign(residuos)))
>
> para se obter o seguinte resultado
>
> Runs Test
>
> data: factor(sign(residuos))
>
> Standard Normal = 0.5774, p-value = 0.5637
>
> alternative hypothesis: two.sided
>
> Pode comparar-se o ajuste de dois modelos distintos a um dado conjunto
> de dados confrontando as SQE dos modelos ajustados através do teste de
> F. Sendo assim, depois de ajustar um modelo logístico,
> *y*[?]=[?]*C*[?]/[?][\[]{}1[?]+[?]*Aexp*([?]-[?]*Bx*)[\]} (Figura
d) {\[]{}F[\]}  {\[]{}F[\]} Esta figura foi obtida
atrav\selectlanguage{ngerman}és de

\textgreater{} plot(Prop\textasciitilde{}CO2,las=1,xlim=c(0,1000),
ylim=c(0,1),pch=16,cex=1.5, xlab=``CO2 (ppm)'',ylab=``Propor

ção de respostas correctas``)

\textgreater{} PropEsper\textless{}-predict(ajustes,newdata=
list(CO2=seq(0,1000,length=100)),se.fit=T)

\textgreater{} lines(PropEsper\textasciitilde{}seq(0,1000,length=
100),lwd=2,col=6)

\textgreater{} uppIC\textless{}-PropEsper+qt(.975,summary(
ajustes)\$df{\[]{}2[\]})*summary(ajustes)\$sigm

\textgreater{} lowIC\textless{}-PropEsper-qt(.975,summary(
ajustes)\$df{\[]{}2[\]})*summary(ajustes)\$sigm

\textgreater{} lines(uppIC\textasciitilde{}seq(0,1000,length=100),
col=4)

\textgreater{} lines(lowIC\textasciitilde{}seq(0,1000,length=100),
col=4)

, de formulação mais generalizada do que o modelo ``dose-resposta''
anterior, através de

\textgreater{}
ajustes\textless{}-nls(Prop\textasciitilde{}C/(1+A*exp(-B*CO2
)),data=data.frame(CO2=CO2,Prop=Prop),

start=list(A=10,B=.0025,C=1))

\textgreater{} summary(ajustes)

os resultados do teste de F obtêm-se facilmente através de

\textgreater{} anova(ajuste,ajustes)

Os passos descritos anteriormente, i.e.~uma sessão de trabalho (Figura
), podem (e, na minha opinião, devem) ser ``guardados''. Para isso,
criar um ficheiro de \emph{script} (através de File\textgreater{}New
script), de facto um ficheiro texto, onde são ``guardados'' os comandos.
Este ficheiro pode ser carregado noutra sessão de trabalho (através de
File\textgreater{}Open script\ldots{}) e as análises e gráficos podem
ser repetidos n-vezes (janela \emph{R Editor}). O \emph{script} do
exemplo descrito aqui pode ser obtido no sítio electrónico do autor.
\end{quote}

Para terminar uma sessão de trabalho, primeiro ``limpar'' da memória os
objectos criados (com a função rm) e, depois, encerrar o programa
(geralmente não guardo uma ``imagem'' do ambiente de trabalho):

\begin{quote}
\textgreater{} rm(list=ls()) ; q()
\end{quote}

Figure 5\selectlanguage{english} Aspecto duma sessao de trabalho no R.

\begin{quote}
Consideracoes finais

As ``dificuldades estatisticas'' relacionadas com a utilizacao do Excel(r)
da Microsoft (e da respectiva ferramenta Solver(r)) para analise de
regressao nao-linear\selectlanguage{english} {\[]{} limitam a sua utilizacao aos casos "mais
> simples" ou para efeitos pedagogicos. Em situacoes "profissionais"
> deve usar-se software dedicado, por exemplo SPSS(r) ou R.

Embora as caracteristicas do R tornem (mais) dificil a aprendizagem, o
seu caracter gratuito, o facto de ser uma ferramenta bastante poderosa
com boas capacidades ao nivel da programacao e um conjunto bastante
vasto (e em constante crescimento) de *packages* que acrescentam
bastantes potencialidades estatisticas e graficas, o crescente interesse
de utilizadores das mais variadas formacoes (que se reunem anualmente
desde 2004 nas conferencias useR! -- em 2011 a useR!2011 decorrera no
Reino-Unido, *cf*. <http://www.warwick.ac.uk/statsdept/useR-2011/>) e a
disponibilidade dos promotores (R Development Core Team) e da
"comunidade" de utilizadores, mais ou menos avancados, ajudam (e muito)
esse processo. Os varios manuais
(<http://cran.r-project.org/manuals.html>), a pagina wiki
(<http://wiki.r-project.org/>) e a *mailing list* de ajuda
(<http://stat.ethz.ch/mailman/listinfo/r-help>) permitem ultrapassar a
(esmagadora) maioria das dificuldades surgidas durante a utilizacao do
R.

> Agradecimentos
>
> Este artigo muito beneficiou dos comentarios, correccoes e sugestoes
> dos colegas e leitores.
>
> References
>
> [\[]{}1[\]} A. M. Brown: ``A step-by-step
guide to non-linear regression analysis of experimental data using a
Microsoft Excel spreadsheet'', \emph{Computer methods and Programs in
Biomedicine}, pp.~191-200, 2001.

{\[]{}2[\]} John M. Chambers, Trevor J. Hastie:
\emph{Statistical models in S}. Chapman \& Hall, 1992.

{\[]{}3[\]} W.J. Conover: \emph{Practical nonparametric
statistics}. John Wiley \& Sons. Inc., 1999.

{\[]{}4[\]} M.J. Crawley: \emph{The R book}. Wiley, 2007. URL
\url{http://www.google.com/books?id=8D4HVx0apZQC}.

{\[]{}5[\]} Peter Dalgaard: \emph{Introductory statistics with
R}. Springer-Verlag New York Inc., 2002.

{\[]{}6[\]} E. Esteves: \emph{Regressao nao-linear utilizando
a ferramenta Solver(r) do Microsoft Excel(r)}. 2010. URL
\url{http://w3.ualg.pt/~eesteves.}.

{\[]{}7[\]} R Development Core Team: \emph{R: A Language and
Environment for Statistical Computing}. 2007. URL
\href{http://www.R-project.org/}{http://www.R-project.org}. ISBN
3-900051-07-0.

{\[]{}8[\]} L. Torgo: \emph{Introducao a programacao em R.}.
2006.

{\[]{}9[\]} W. N. Venables, D. M. Smith, R Development Core
Team: \emph{An Introduction to R (Notes on R: A Programming Environment
for Data Analysis and Graphics)}. The R Foundation for Statistical
Computing, 2006. URL
\url{http://cran.r-project.org/doc/manuals/R-intro.pdf}.

{\[]{}10[\]} W.P. Bowen, J.C. Jerman: ``Nonlinear regression
using spreadsheets'', \emph{Trends in Pharmacological Sciences},
pp.~413-417, 1995.
\end{quote}

Figure 1\selectlanguage{english} Aspecto da janela \emph{R Console}.

Na consola do R escrever (fazendo Enter no fim),

\begin{quote}
\textgreater{}
dados\textless{}-read.table(file=``G:/MyArticles/ArtigosRegressaoNaoLinearExcel/Regre

ssaoNaoLinear.txt``,header=T,sep=''\textbackslash{}t``)

para ``carregar'' a informacao contida no ficheiro
RegressaoNaoLinear.txt para o objecto dados. (atente-se na notacao
\textless{}-). Os parametros header e sep permitem considerar os rotulos
dos dados e o tipo de ficheiro de texto (neste caso separado por
tabulacoes), respectivamente. Por sinal, a quantidade de dados envolvida
poderia muito bem ser introduzida directamente no R atraves de

\textgreater{} CO2\textless{}-c(141,172,181,227,309,414,641, 936)

\textgreater{}
Prop\textless{}-c(0.25,0.34,0.34,0.68,0.85,0.99,0.98,0.99)

em que c(\ldots{}) permite concatenar um conjunto de dados num objecto
(neste caso, CO2 e Prop) . Podemos visualizar a informacao usando a
funcao plot

\textgreater{} plot(Prop\textasciitilde{}CO2,
las=1,xlim=c(0,1000),ylim=c(0,1),pch=16,cex=

1.5, xlab=``CO2 (ppm)'', ylab=``Proporcao de respostas correctas'')

em que Prop\textasciitilde{}CO2 descreve o ``modelo'' que se pretende
representar (neste caso Prop em funcao de CO2) e cujos restantes
parametros especificam as varias caracteristicas do grafico (las para
orientacao dos rotulos do eixo dos \emph{yy}, xlim e ylim para
determinar os limites dos eixos, pch para definir o simbolo usado, cex
para aumentar o tamanho relativo dos caracteres, e xlab e ylab para
``legendar'' os eixos) (Figura a). Para mais informacoes acerca desta
(ou qualquer outra) funcao pode fazer-se

\textgreater{} ?plot

(ou entao procurar com \textgreater{}help.search(``termo'') ou, ainda,
usar a opcao Help\textgreater{}\\
Apropos\ldots{}). Usando o bot\selectlanguage{ngerman}ão direito do rato sobre o gráfico, é
possível copiar a figura (como metaficheiro Windows® por exemplo) para
inclusão num ficheiro do Microsoft Word®.
\end{quote}

Admita-se (por razões científicas) que um modelo ``dose-resposta''
(logístico modificado)

\emph{P}
\selectlanguage{english}[?]=\selectlanguage{english}[?]((1)/(3)\selectlanguage{english}[?]+\selectlanguage{english}[?]\emph{exp}(\emph{B}(\emph{T}\selectlanguage{english}[?]\selectlanguage{english}-\selectlanguage{english}[?]\emph{log}(\emph{x})))/(1\selectlanguage{english}[?]+\selectlanguage{english}[?]\emph{exp}(\emph{T}\selectlanguage{english}[?]\selectlanguage{english}-\selectlanguage{english}[?]\emph{log}(\emph{x})))

em que \emph{Pi} e a proporcao de respostas positivas do provador
\emph{i} , \emph{log}(\emph{x}) e o logaritmo do valor do estimulo
\emph{x} , \emph{B} e o ``declive'' e \emph{T} e o limiar para o
provador \emph{i} (em \emph{log}(\emph{x})), e adequado para descrever
os dados. Para ajustar o modelo basta fazer

\begin{quote}
\textgreater{}
ajuste\textless{}-nls(Prop\textasciitilde{}(1/3+exp(B*(T-log10(CO2))))/(1+exp(B*(T-log10(CO2)))),

data=data.frame(CO2=CO2,Prop=Prop),start=list(B=-10,T=2.5))

em que o objecto ajuste incluira os resultados duma regressao nao-linear
(atraves da funcao
nls)\selectlanguage{english} {\[]{}C[\]}\selectlanguage{english} \selectlanguage{english} {\[]{}C[\]}\selectlanguage{english} Outras funcoes (muito)
usadas sao lm e aov para regressao linear (i.e.~modelos lineares) e
analise de variancia, respectivamente. do
modelo\selectlanguage{english} {\[]{}D[\]}\selectlanguage{english} \selectlanguage{english} {\[]{}D[\]}\selectlanguage{english} A definicao dos
modelos em S esta minuciosamente descrita em\selectlanguage{english}
{\[]{}.
> Prop\~(1/3+exp(B\*(T-log10(CO2))))/(1+exp(B\*(T-log10(CO2)))
> considerando os dados (indicados para o parametro data sob a forma de
> uma data.frame [\[]{}E[\]}\selectlanguage{english} \selectlanguage{english} {\[]{}E[\]}\selectlanguage{english} Neste caso, considerou-se que
o utilizador introduziu directamente no sistema os dados ao inves de
``carregar'' o ficheiro dos dados (sendo que bastaria apenas indicar
data=dados, no comando). ) e as estimativas iniciais dos parametros do
modelo descritas em start (atraves duma list). Os resultados do ajuste
(Figura ) podem ser consultados fazendo

\textgreater{} summary(ajuste)
\end{quote}

Figure 2\selectlanguage{english} Diagramas de dispersao da proporcao de respostas
vs.~concentracao de CO2: dados originais (a); modelo ``dose-resposta''
(logistico modificado) (b); modelo ``dose-resposta'' com intervalos de
95\% de confianca (c); e modelo logistico (ver texto principal) (d).

E possivel ilustrar o ajuste, obtendo primeiro as estimativas da
variavel Prop (atraves da funcao predict) e ``desenhando-as'', em
seguida, sobre o grafico entretanto obtido (Figura ou seja

\begin{quote}
\textgreater{}
PropEsp\textless{}-predict(ajuste,newdata=list(CO2=seq(0,1000,length=100)),se.fit=T)

\textgreater{}
lines(PropEsp\textasciitilde{}seq(0,1000,length=100),lwd=2,col=6)

A informacao contida no objecto ajuste permite obter as estimativas para
100 valores de CO2 entre 0 e 1000 (dai o parametro
seq(1,1000,length=100) no comando acima) assim como os respectivos
erros-padrao (se.fit=T) que serao guardadas no objecto designado
PropEsp. A adicao duma linha espessa e magenta (lwd=2 e col=6) a Figura
a e relativamente facil (Figura b).
\end{quote}

Figure 3\selectlanguage{english} Aspecto da execucao de comandos e respectivos resultados na
janela \emph{R Console}.

Podem, ainda, obter-se e ``desenhar-se'' os intervalos de confianca
(upIC e loIC) que se calculam atraves de \selectlanguage{english}\emph{y}
\selectlanguage{ngerman}±\emph{t}\selectlanguage{english}[?]\emph{se}(\emph{Y}), recorrendo as funcoes qt (para obter os
valores ``teoricos'' de t-Student e cujos parametros sao
1\selectlanguage{english}[?]\selectlanguage{english}-\selectlanguage{english}[?]\selectlanguage{greek}\emph{α}\selectlanguage{english}[?]\selectlanguage{english}/\selectlanguage{english}[?]\selectlanguage{english}2, neste caso 0.975, e os graus de liberdade do erro, que
se obt\selectlanguage{ngerman}êm de summary(ajuste)\$df{\[]{}2[\]}),
summary(ajuste)\$sigma para obter o erro-padrão das estimativas e lines,
respectivamente (Figura

\begin{quote}
\textgreater{}
upIC\textless{}-PropEsp+qt(.975,summary(ajuste)\$df{\[]{}2[\]})*summary(ajuste)\$sigma

\textgreater{}
loIC\textless{}-PropEsp-qt(.975,summary(ajuste)\$df{\[]{}2[\]})*summary(ajuste)\$sigma

\textgreater{} lines(upIC\textasciitilde{}seq(0,1000,length=100),col=4)

\textgreater{} lines(loIC\textasciitilde{}seq(0,1000,length=100),col=4)

O modo mais simples de ``testar'' a bondade do ajuste é representar
graficamente os dados e o modelo ajustado (bem como os respectivos
intervalos de confiança), de modo a verificar (visualmente) se os
parâmetros obtidos numericamente descrevem, de facto, a relação entre
variáveis (Figura c). Por outro lado, a análise gráfica dos resíduos,
e.g.~resíduos \emph{vs.} valores observados de \emph{X}, permite
``verificar'' se o modelo é adequado (os resíduos representam apenas o
erro experimental se não apresentam tendências ou padrões). Sendo assim,
obter os resíduos através de

\textgreater{} residuos\textless{}-summary(ajuste)\$resid

e, em seguida, representar esse gráfico em conjunto com o \emph{normal
probability plot} dos resíduos (Figura )

\textgreater{} op\textless{}-par(mfrow=c(2,1),pty=``s'',las=1)

\textgreater{}
plot(residuos\textasciitilde{}predict(ajuste),pch=16,col=3,xlab=``E\{Proporção
de respostas

correctas\}``,ylab=''Resíduos``)

\textgreater{} abline(h=0)

\textgreater{} qqnorm(residuos,pch=16,col=2,xlab= ``Quantis da
Distribuição Normal'',

ylab=``Quantis Amostrais'',main=``'')

\textgreater{} qqline(residuos)

\textgreater{} par(op)

O comando par permite estabelecer o ``esquema'' da figura, neste caso,
os gráficos ficam ``arranjados'' em 2 linhas por 1 coluna --
mfrow=c(2,1) --, assim como definir a respectiva forma (quadrada,
através de pty=``s'' - ``s'' de ``square''). Ao gráfico dos resíduos
\emph{vs.} valores esperados de Prop (através de plot) acrescentámos uma
linha horizontal ao nível de zero (através de abline) e, por fim,
desenhamos o \emph{normal probability plot} dos resíduos (com qqnorm e
qqline).
\end{quote}

Figure 4\selectlanguage{english} Analise grafica de residuos: residuos \emph{vs.} valores
esperados (esq.); e \emph{normal probability plot} dos residuos (dir.).

E possivel testar se os residuos se distribuem normalmente atraves, por
exemplo, de

\begin{quote}
\textgreater{} shapiro.test(residuos)

O resultado deste comando e

Shapiro-Wilk normality test

data: residuos

W = 0.936, p-value = 0.5719

O teste de sequencias (ou ``runs test'' nos manuais anglofonos) permite
testar, de forma simples e robusta, se os pontos (dados) diferem
sistematicamente da curva ajustada (modelo) complementando a informacao
do diagrama dos residuos \emph{vs} valores observados de \emph{X}.\selectlanguage{ngerman}
{\[]{} alerta para a reduzia potencia estatistica do testes baseados
> em sequencias. No R, sera necessario carregar alguns pacotes, tseries,
> quadprog e zoo (previamente instalados, atraves da barra de
> ferramentas, a partir dos ficheiros \*.zip disponiveis para o Windows(r)
> em http://cran.at.r-project.org/bin/windows/contrib/) fazendo e.g.
>
> &gt; library(tseries)
>
> Depois basta fazer
>
> &gt; runs.test(factor(sign(residuos)))
>
> para se obter o seguinte resultado
>
> Runs Test
>
> data: factor(sign(residuos))
>
> Standard Normal = 0.5774, p-value = 0.5637
>
> alternative hypothesis: two.sided
>
> Pode comparar-se o ajuste de dois modelos distintos a um dado conjunto
> de dados confrontando as SQE dos modelos ajustados através do teste de
> F. Sendo assim, depois de ajustar um modelo logístico,
> *y*[?]=[?]*C*[?]/[?][\[]{}1[?]+[?]*Aexp*([?]-[?]*Bx*)[\]} (Figura
d) {\[]{}F[\]}  {\[]{}F[\]} Esta figura foi obtida
atrav\selectlanguage{ngerman}és de

\textgreater{} plot(Prop\textasciitilde{}CO2,las=1,xlim=c(0,1000),
ylim=c(0,1),pch=16,cex=1.5, xlab=``CO2 (ppm)'',ylab=``Propor

ção de respostas correctas``)

\textgreater{} PropEsper\textless{}-predict(ajustes,newdata=
list(CO2=seq(0,1000,length=100)),se.fit=T)

\textgreater{} lines(PropEsper\textasciitilde{}seq(0,1000,length=
100),lwd=2,col=6)

\textgreater{} uppIC\textless{}-PropEsper+qt(.975,summary(
ajustes)\$df{\[]{}2[\]})*summary(ajustes)\$sigm

\textgreater{} lowIC\textless{}-PropEsper-qt(.975,summary(
ajustes)\$df{\[]{}2[\]})*summary(ajustes)\$sigm

\textgreater{} lines(uppIC\textasciitilde{}seq(0,1000,length=100),
col=4)

\textgreater{} lines(lowIC\textasciitilde{}seq(0,1000,length=100),
col=4)

, de formulação mais generalizada do que o modelo ``dose-resposta''
anterior, através de

\textgreater{}
ajustes\textless{}-nls(Prop\textasciitilde{}C/(1+A*exp(-B*CO2
)),data=data.frame(CO2=CO2,Prop=Prop),

start=list(A=10,B=.0025,C=1))

\textgreater{} summary(ajustes)

os resultados do teste de F obtêm-se facilmente através de

\textgreater{} anova(ajuste,ajustes)

Os passos descritos anteriormente, i.e.~uma sessão de trabalho (Figura
), podem (e, na minha opinião, devem) ser ``guardados''. Para isso,
criar um ficheiro de \emph{script} (através de File\textgreater{}New
script), de facto um ficheiro texto, onde são ``guardados'' os comandos.
Este ficheiro pode ser carregado noutra sessão de trabalho (através de
File\textgreater{}Open script\ldots{}) e as análises e gráficos podem
ser repetidos n-vezes (janela \emph{R Editor}). O \emph{script} do
exemplo descrito aqui pode ser obtido no sítio electrónico do autor.
\end{quote}

Para terminar uma sessão de trabalho, primeiro ``limpar'' da memória os
objectos criados (com a função rm) e, depois, encerrar o programa
(geralmente não guardo uma ``imagem'' do ambiente de trabalho):

\begin{quote}
\textgreater{} rm(list=ls()) ; q()
\end{quote}

Figure 5\selectlanguage{english} Aspecto duma sessao de trabalho no R.

\begin{quote}
Consideracoes finais

As ``dificuldades estatisticas'' relacionadas com a utilizacao do Excel(r)
da Microsoft (e da respectiva ferramenta Solver(r)) para analise de
regressao nao-linear\selectlanguage{english} {\[]{} limitam a sua utilizacao aos casos "mais
> simples" ou para efeitos pedagogicos. Em situacoes "profissionais"
> deve usar-se software dedicado, por exemplo SPSS(r) ou R.

Embora as caracteristicas do R tornem (mais) dificil a aprendizagem, o
seu caracter gratuito, o facto de ser uma ferramenta bastante poderosa
com boas capacidades ao nivel da programacao e um conjunto bastante
vasto (e em constante crescimento) de *packages* que acrescentam
bastantes potencialidades estatisticas e graficas, o crescente interesse
de utilizadores das mais variadas formacoes (que se reunem anualmente
desde 2004 nas conferencias useR! -- em 2011 a useR!2011 decorrera no
Reino-Unido, *cf*. <http://www.warwick.ac.uk/statsdept/useR-2011/>) e a
disponibilidade dos promotores (R Development Core Team) e da
"comunidade" de utilizadores, mais ou menos avancados, ajudam (e muito)
esse processo. Os varios manuais
(<http://cran.r-project.org/manuals.html>), a pagina wiki
(<http://wiki.r-project.org/>) e a *mailing list* de ajuda
(<http://stat.ethz.ch/mailman/listinfo/r-help>) permitem ultrapassar a
(esmagadora) maioria das dificuldades surgidas durante a utilizacao do
R.

> Agradecimentos
>
> Este artigo muito beneficiou dos comentarios, correccoes e sugestoes
> dos colegas e leitores.
>
> References
>
> [\[]{}1[\]} A. M. Brown: ``A step-by-step
guide to non-linear regression analysis of experimental data using a
Microsoft Excel spreadsheet'', \emph{Computer methods and Programs in
Biomedicine}, pp.~191-200, 2001.

{\[]{}2[\]} John M. Chambers, Trevor J. Hastie:
\emph{Statistical models in S}. Chapman \& Hall, 1992.

{\[]{}3[\]} W.J. Conover: \emph{Practical nonparametric
statistics}. John Wiley \& Sons. Inc., 1999.

{\[]{}4[\]} M.J. Crawley: \emph{The R book}. Wiley, 2007. URL
\url{http://www.google.com/books?id=8D4HVx0apZQC}.

{\[]{}5[\]} Peter Dalgaard: \emph{Introductory statistics with
R}. Springer-Verlag New York Inc., 2002.

{\[]{}6[\]} E. Esteves: \emph{Regressao nao-linear utilizando
a ferramenta Solver(r) do Microsoft Excel(r)}. 2010. URL
\url{http://w3.ualg.pt/~eesteves.}.

{\[]{}7[\]} R Development Core Team: \emph{R: A Language and
Environment for Statistical Computing}. 2007. URL
\href{http://www.R-project.org/}{http://www.R-project.org}. ISBN
3-900051-07-0.

{\[]{}8[\]} L. Torgo: \emph{Introducao a programacao em R.}.
2006.

{\[]{}9[\]} W. N. Venables, D. M. Smith, R Development Core
Team: \emph{An Introduction to R (Notes on R: A Programming Environment
for Data Analysis and Graphics)}. The R Foundation for Statistical
Computing, 2006. URL
\url{http://cran.r-project.org/doc/manuals/R-intro.pdf}.

{\[]{}10[\]} W.P. Bowen, J.C. Jerman: ``Nonlinear regression
using spreadsheets'', \emph{Trends in Pharmacological Sciences},
pp.~413-417, 1995.
\end{quote}

\selectlanguage{portuguese}
\FloatBarrier
\section*{\refname}\sloppy
\phantomsection
\label{csl:8}Bowen, W. P. and Jerman, J. C. (1995) ``{Nonlinear regression using spreadsheets}'', \textit{Trends in Pharmacological Sciences}, 16, pp. 413–417.

\phantomsection
\label{csl:7}Brown, A. M. (2001) ``{A step-by-step guide to non-linear regression analysis of experimental data using a Microsoft Excel spreadsheet}'', \textit{Computer methods and Programs in Biomedicine}, 65, pp. 191–200.

\phantomsection
\label{csl:9}Chambers, J., Hastie, T. and Pregibon, D. (1990) ``{Statistical Models in S}'', in \textit{Compstat}. Physica-Verlag {HD}, pp. 317–321. doi: 10.1007/978-3-642-50096-1_48.

\phantomsection
\label{csl:5}Crawley, M. J. (2007) \textit{{The R book}}. NY: Wiley. Available at: \url{http://www.google.com/books?id=8D4HVx0apZQC.}

\phantomsection
\label{csl:4}Dalgaard, P. (2002) \textit{{Introductory statistics with R}}. New York: Springer-Verlag New York Inc.

\phantomsection
\label{csl:6}Esteves, E. (2011) ``{Regressão não-linear utilizando a ferramenta Solver® do Microsoft Excel®}''. Instituto Superior de Engenharia, Universidade do Algarve, Faro Portugal [disponível em \url{http://w3.ualg.pt/~eesteves.].} Available at: \url{http://w3.ualg.pt/~eesteves.}

\phantomsection
\label{csl:2}Torgo, L. (2006) \textit{{Introdução à programação em R.}}. Porto: Faculdade de Economia da Universidade do Porto.

\phantomsection
\label{csl:3}Venables, W. N., Smith, D. M. and Team, R. D. C. (2006) \textit{{An Introduction to R (Notes on R: A Programming Environment for Data Analysis and Graphics)}}. Vienna, Austria: The R Foundation for Statistical Computing. Available at: \url{http://cran.r-project.org/doc/manuals/R-intro.pdf.}

\phantomsection
\label{csl:1}{R Core Team} and {R Development Core Team} (2017) \textit{{R: A language and environment for statistical computing.}}. Vienna, Austria: R Foundation for Statistical Computing. Available at: \url{http://www.r-project.org.}

\end{document}

