Aqui você vê as diferenças entre duas revisões dessa página.
01_curso_atual:aularelampago [2020/08/12 06:04] 127.0.0.1 edição externa |
01_curso_atual:aularelampago [2020/09/23 17:10] (atual) adalardo code |
||
---|---|---|---|
Linha 93: | Linha 93: | ||
Apesar das diferenças de interface devido a o sistema operacional, ao iniciar o R você deverá obter uma janela muito parecida com a seguinte janela: | Apesar das diferenças de interface devido a o sistema operacional, ao iniciar o R você deverá obter uma janela muito parecida com a seguinte janela: | ||
- | <code> | + | <code rsplus> |
R version 2.7.0 (2008-04-22) | R version 2.7.0 (2008-04-22) | ||
Copyright (C) 2008 The R Foundation for Statistical Computing | Copyright (C) 2008 The R Foundation for Statistical Computing | ||
Linha 123: | Linha 123: | ||
Os outros dois estados da linha de comando são o de execução e o de espera para a conlusão do comando. No modo de execução não é exibido nenhum sinal e não é possível digitar outro comando. Você só perceberá isso se der um comando que tenha um tempo de execução muito longo. Experimente o seguinte comando: | Os outros dois estados da linha de comando são o de execução e o de espera para a conlusão do comando. No modo de execução não é exibido nenhum sinal e não é possível digitar outro comando. Você só perceberá isso se der um comando que tenha um tempo de execução muito longo. Experimente o seguinte comando: | ||
- | <code> | + | <code rsplus> |
> for(i in 1:10000) prod(1:i) | > for(i in 1:10000) prod(1:i) | ||
> | > | ||
Linha 129: | Linha 129: | ||
O estado de espera ocorre quando o usuário envia um comando incompleto, o que é indicado por um sinal de "''+''": | O estado de espera ocorre quando o usuário envia um comando incompleto, o que é indicado por um sinal de "''+''": | ||
- | <code> | + | <code rsplus> |
> log(1 | > log(1 | ||
+ ) | + ) | ||
Linha 162: | Linha 162: | ||
Use e abuse da função __''help''__. Para obter ajuda da própria função utilize o comando: | Use e abuse da função __''help''__. Para obter ajuda da própria função utilize o comando: | ||
- | <code> | + | <code rsplus> |
> help( help ) | > help( help ) | ||
</code> | </code> | ||
Outros exemplos: | Outros exemplos: | ||
- | <code> | + | <code rsplus> |
> help( "*" ) # auxílio sobre o símbolo "*" | > help( "*" ) # auxílio sobre o símbolo "*" | ||
> help( sin ) # auxílio sobre a função "sin" = seno | > help( sin ) # auxílio sobre a função "sin" = seno | ||
Linha 180: | Linha 180: | ||
Para ver um objeto no R, basta digitar o seu **NOME**. O nome de uma função é o comando sem os parênteses: | Para ver um objeto no R, basta digitar o seu **NOME**. O nome de uma função é o comando sem os parênteses: | ||
- | <code> | + | <code rsplus> |
> help | > help | ||
> q | > q | ||
Linha 188: | Linha 188: | ||
No R é fácil criar objetos numéricos((Nota: a maioria dos comandos nesse curso são mostrados **SEM** os resultados apresentados pelo R)): | No R é fácil criar objetos numéricos((Nota: a maioria dos comandos nesse curso são mostrados **SEM** os resultados apresentados pelo R)): | ||
- | <code> | + | <code rsplus> |
> x = 2 | > x = 2 | ||
> x | > x | ||
Linha 200: | Linha 200: | ||
Vejamos alguns exemplos com objetos vetoriais: | Vejamos alguns exemplos com objetos vetoriais: | ||
- | <code> | + | <code rsplus> |
> k = c(1.3, -5, 6.7, 4.8) | > k = c(1.3, -5, 6.7, 4.8) | ||
> k | > k | ||
Linha 216: | Linha 216: | ||
Para saber quais objetos você criou no seu workspace use a função: | Para saber quais objetos você criou no seu workspace use a função: | ||
- | <code> | + | <code rsplus> |
> ls() | > ls() | ||
</code> | </code> | ||
Linha 222: | Linha 222: | ||
Para apagar os objetos indesejados, utilize a função __''rm''__, fornecendo os objetos que você deseja apagar: | Para apagar os objetos indesejados, utilize a função __''rm''__, fornecendo os objetos que você deseja apagar: | ||
- | <code> | + | <code rsplus> |
> rm(x, y, z, w) | > rm(x, y, z, w) | ||
> ls() | > ls() | ||
Linha 229: | Linha 229: | ||
É importante lembrar que ao criar os objetos, o R não grava automaticamente o workspace no seu disco. Fica tudo na memória do computador. Basta uma interrupção momentânea de energia e você perde tudo. Por isso, é importante lembrar de periodicamente gravar o seu workspace, principalmente nas sessões mais longas: | É importante lembrar que ao criar os objetos, o R não grava automaticamente o workspace no seu disco. Fica tudo na memória do computador. Basta uma interrupção momentânea de energia e você perde tudo. Por isso, é importante lembrar de periodicamente gravar o seu workspace, principalmente nas sessões mais longas: | ||
- | <code> | + | <code rsplus> |
> save.image() # grava o seu workspace com o nome genérico: ".RData" | > save.image() # grava o seu workspace com o nome genérico: ".RData" | ||
> save.image(file="minha_sessao_inicial_de_R.RData") # grava o seu workspace com o nome indicado | > save.image(file="minha_sessao_inicial_de_R.RData") # grava o seu workspace com o nome indicado | ||
Linha 285: | Linha 285: | ||
Esse arquivo pode ser visualizado em qualquer editor de textos, pois o formato CSV é um formato texto: | Esse arquivo pode ser visualizado em qualquer editor de textos, pois o formato CSV é um formato texto: | ||
- | <code> | + | <code rsplus> |
"local","parcela","arvore","fuste","cap","h","especie" | "local","parcela","arvore","fuste","cap","h","especie" | ||
"chauas",1,1,1,210,80,"Myrcia sulfiflora" | "chauas",1,1,1,210,80,"Myrcia sulfiflora" | ||
Linha 305: | Linha 305: | ||
Cuidado!! Se você digitar simplesmente: | Cuidado!! Se você digitar simplesmente: | ||
- | <code> | + | <code rsplus> |
> read.csv(file="exemplo-caixeta.csv") | > read.csv(file="exemplo-caixeta.csv") | ||
</code> | </code> | ||
Linha 311: | Linha 311: | ||
É necessário gravar a leitura do arquivo num **objeto**: | É necessário gravar a leitura do arquivo num **objeto**: | ||
- | <code> | + | <code rsplus> |
> cax = read.csv(file="exemplo-caixeta.csv") | > cax = read.csv(file="exemplo-caixeta.csv") | ||
</code> | </code> | ||
Agora se você digitar o nome do objeto: | Agora se você digitar o nome do objeto: | ||
- | <code> | + | <code rsplus> |
> cax | > cax | ||
</code> | </code> | ||
Linha 322: | Linha 322: | ||
Para visualizar apenas as primeiras linhas do dataframe (objeto de dados) use o comando __''head''__: | Para visualizar apenas as primeiras linhas do dataframe (objeto de dados) use o comando __''head''__: | ||
- | <code> | + | <code rsplus> |
> head(cax) | > head(cax) | ||
local parcela arvore fuste cap h especie | local parcela arvore fuste cap h especie | ||
Linha 346: | Linha 346: | ||
O arquivo {{:publico:tutoriais:r-relampago:exemplo-caixeta-2.csv|exemplo-caixeta-2.csv}} é um exemplo de arquivo CSV com ponto-e-vírgula como separação de valores. No R, esse arquivo deverá ser lidos com o argumento __''sep''__ definindo o símbolo usado na separação de valores: | O arquivo {{:publico:tutoriais:r-relampago:exemplo-caixeta-2.csv|exemplo-caixeta-2.csv}} é um exemplo de arquivo CSV com ponto-e-vírgula como separação de valores. No R, esse arquivo deverá ser lidos com o argumento __''sep''__ definindo o símbolo usado na separação de valores: | ||
- | <code> | + | <code rsplus> |
> cax2 = read.csv(file="exemplo-caixeta-2.csv",sep=";") | > cax2 = read.csv(file="exemplo-caixeta-2.csv",sep=";") | ||
> head( cax2 ) | > head( cax2 ) | ||
Linha 365: | Linha 365: | ||
Se quisermos apenas uma variável (coluna) desse data frame, basta unir o nome do data frame (__''cax''__) ao nome da coluna desejada com o símbolo especial **"$"**: | Se quisermos apenas uma variável (coluna) desse data frame, basta unir o nome do data frame (__''cax''__) ao nome da coluna desejada com o símbolo especial **"$"**: | ||
- | <code> | + | <code rsplus> |
> cax$local | > cax$local | ||
> cax$cap | > cax$cap | ||
Linha 375: | Linha 375: | ||
Novas variáveis (colunas) podem ser criadas também utilizando o símbolo "$". Por exemplo: | Novas variáveis (colunas) podem ser criadas também utilizando o símbolo "$". Por exemplo: | ||
- | <code> | + | <code rsplus> |
> pi # constante universal PI | > pi # constante universal PI | ||
[1] 3.141593 | [1] 3.141593 | ||
Linha 410: | Linha 410: | ||
No R a forma mais direta de obter contagens (frequências) é através da função __''table''__. Tomando como exemplo o dataframe __''cax''__, podemos nos perguntar quantas árvores foram observadas em cada caixetal (variável __''local''__): | No R a forma mais direta de obter contagens (frequências) é através da função __''table''__. Tomando como exemplo o dataframe __''cax''__, podemos nos perguntar quantas árvores foram observadas em cada caixetal (variável __''local''__): | ||
- | <code> | + | <code rsplus> |
> table(cax$local) | > table(cax$local) | ||
</code> | </code> | ||
Também é interessante saber o número de árvores por __''local''__ e __''parcela''__: | Também é interessante saber o número de árvores por __''local''__ e __''parcela''__: | ||
- | <code> | + | <code rsplus> |
> table(cax$local, cax$parcela) | > table(cax$local, cax$parcela) | ||
</code> | </code> | ||
Linha 424: | Linha 424: | ||
Podemos verificar a abundância de cada espécie (__''especie''__) em cada caixetal (__''local''__): | Podemos verificar a abundância de cada espécie (__''especie''__) em cada caixetal (__''local''__): | ||
- | <code> | + | <code rsplus> |
> table( cax$especie, cax$local ) | > table( cax$especie, cax$local ) | ||
</code> | </code> | ||
Linha 433: | Linha 433: | ||
Dados de contagem também podem ser apresentado na forma de **gráficos de barra**: | Dados de contagem também podem ser apresentado na forma de **gráficos de barra**: | ||
- | <code> | + | <code rsplus> |
> barplot( table(cax$local) ) | > barplot( table(cax$local) ) | ||
</code> | </code> | ||
Linha 442: | Linha 442: | ||
Formas alternativas de construir esses gráficos são: | Formas alternativas de construir esses gráficos são: | ||
- | <code> | + | <code rsplus> |
> barplot( table(cax$fuste) ) | > barplot( table(cax$fuste) ) | ||
> plot( table(cax$fuste) ) | > plot( table(cax$fuste) ) | ||
Linha 449: | Linha 449: | ||
Um gráfico de abundância das espécies presentes nos três caixetais: | Um gráfico de abundância das espécies presentes nos três caixetais: | ||
- | <code> | + | <code rsplus> |
> par( mar=c(5,10,4,2) ) # Define margens do gráfico, aumentando a esquerda | > par( mar=c(5,10,4,2) ) # Define margens do gráfico, aumentando a esquerda | ||
> barplot(sort(table(cax$especie)), horiz=T, las=1, xlab="Abundância") # Gráfico horizontal c/ nomes horizontais | > barplot(sort(table(cax$especie)), horiz=T, las=1, xlab="Abundância") # Gráfico horizontal c/ nomes horizontais | ||
Linha 461: | Linha 461: | ||
Embora seja convencional apresentar o gráfico de abundância com barras, um gráfico na forma de pontos é de construção mais simples, sendo mais informativo: | Embora seja convencional apresentar o gráfico de abundância com barras, um gráfico na forma de pontos é de construção mais simples, sendo mais informativo: | ||
- | <code> | + | <code rsplus> |
> dotchart( sort(table(cax$especie)), xlab="Abundância" ) | > dotchart( sort(table(cax$especie)), xlab="Abundância" ) | ||
</code> | </code> | ||
Linha 471: | Linha 471: | ||
A função __''summary''__ retorna uma conjunto de estatísticas descritivas (**sumário**) de todas as variáveis de um data frame de acordo com o seu tipo: | A função __''summary''__ retorna uma conjunto de estatísticas descritivas (**sumário**) de todas as variáveis de um data frame de acordo com o seu tipo: | ||
- | <code> | + | <code rsplus> |
> summary(cax) | > summary(cax) | ||
</code> | </code> | ||
Linha 478: | Linha 478: | ||
Mas o sumário também pode ser obtida para cada variável individualmente: | Mas o sumário também pode ser obtida para cada variável individualmente: | ||
- | <code> | + | <code rsplus> |
> summary(cax$dap) | > summary(cax$dap) | ||
> summary(cax$h) | > summary(cax$h) | ||
Linha 501: | Linha 501: | ||
| Desvio abosluto mediano (//Mean Absolut Deviation//) | ''mad'' | | | Desvio abosluto mediano (//Mean Absolut Deviation//) | ''mad'' | | ||
- | <code> | + | <code rsplus> |
> mean(cax$dap) | > mean(cax$dap) | ||
> mdap = mean(cax$dap) | > mdap = mean(cax$dap) | ||
Linha 531: | Linha 531: | ||
Histogramas são gráficos tradicionais na análise exploratória de dados, pois nos apresentam um gráfico da distribuição de probabilidade da variável analisada. | Histogramas são gráficos tradicionais na análise exploratória de dados, pois nos apresentam um gráfico da distribuição de probabilidade da variável analisada. | ||
- | <code> | + | <code rsplus> |
> hist( cax$dap ) | > hist( cax$dap ) | ||
> hist( cax$h, col="red" ) | > hist( cax$h, col="red" ) | ||
Linha 538: | Linha 538: | ||
Uma possibilidade de gráfico que o R permite é adicionar uma curva de **densidade probabilística** ao histograma, para melhor estudar o comportamento da variável. | Uma possibilidade de gráfico que o R permite é adicionar uma curva de **densidade probabilística** ao histograma, para melhor estudar o comportamento da variável. | ||
- | <code> | + | <code rsplus> |
> hist( cax$dap, probability=T , col="blue") | > hist( cax$dap, probability=T , col="blue") | ||
> lines( density(cax$dap) , col="red") | > lines( density(cax$dap) , col="red") | ||
Linha 544: | Linha 544: | ||
Um **gráfico tipo texto** análogo ao histograma é o tradicional **gráfico de ramo-folha** da análise exploratória de dados: | Um **gráfico tipo texto** análogo ao histograma é o tradicional **gráfico de ramo-folha** da análise exploratória de dados: | ||
- | <code> | + | <code rsplus> |
> stem(cax$dap) | > stem(cax$dap) | ||
> stem(cax$h) | > stem(cax$h) | ||
Linha 553: | Linha 553: | ||
Os boxplots são gráficos de uso frequente para se estudar o comportamento das variáveis. Sua construção no R é direta e simples: | Os boxplots são gráficos de uso frequente para se estudar o comportamento das variáveis. Sua construção no R é direta e simples: | ||
- | <code> | + | <code rsplus> |
> boxplot( cax$dap ) | > boxplot( cax$dap ) | ||
> boxplot( dap ~ local, data=cax ) | > boxplot( dap ~ local, data=cax ) | ||
Linha 559: | Linha 559: | ||
Transformar um gráfico de análise em um gráfico de apresentação demanda o conhecimento sobre as ferramentas gráficas presentes no R: | Transformar um gráfico de análise em um gráfico de apresentação demanda o conhecimento sobre as ferramentas gráficas presentes no R: | ||
- | <code> | + | <code rsplus> |
> par( mar=c(5,10,4,2) ) # Altera as margens da janela gráfica | > par( mar=c(5,10,4,2) ) # Altera as margens da janela gráfica | ||
> boxplot( dap ~ especie, data=cax , horizontal=T, las=1) # Boxplot | > boxplot( dap ~ especie, data=cax , horizontal=T, las=1) # Boxplot | ||
Linha 569: | Linha 569: | ||
A função __''plot''__ é a função básica para construção de gráficos de dispersão para duas variáveis quantitativas: | A função __''plot''__ é a função básica para construção de gráficos de dispersão para duas variáveis quantitativas: | ||
- | <code> | + | <code rsplus> |
> plot( cax$dap, cax$h ) | > plot( cax$dap, cax$h ) | ||
> scatter.smooth( cax$dap, cax$h ) | > scatter.smooth( cax$dap, cax$h ) | ||
Linha 587: | Linha 587: | ||
A função __''lm''__ (//linear model//) é a função utilizada para **construir** um modelo linear. O primeiro passo é construir um modelo linear gravando-o num objeto na área de trabalho. | A função __''lm''__ (//linear model//) é a função utilizada para **construir** um modelo linear. O primeiro passo é construir um modelo linear gravando-o num objeto na área de trabalho. | ||
- | <code> | + | <code rsplus> |
> hipso1 = lm( formula = h ~ dap, data=cax ) | > hipso1 = lm( formula = h ~ dap, data=cax ) | ||
> hipso1 = lm( h ~ dap, data=cax ) | > hipso1 = lm( h ~ dap, data=cax ) | ||
Linha 597: | Linha 597: | ||
Vejamos o objeto __''hipso1''__: | Vejamos o objeto __''hipso1''__: | ||
- | <code> | + | <code rsplus> |
> hipso1 | > hipso1 | ||
</code> | </code> | ||
Linha 609: | Linha 609: | ||
O primeiro interesse é analisar o comportamento dos resíduos do modelo linear, para verificar se o modelo é apropriado aos dados. Para isso basta utilizar a função __''plot''__ com o objeto __''hipso1''__. | O primeiro interesse é analisar o comportamento dos resíduos do modelo linear, para verificar se o modelo é apropriado aos dados. Para isso basta utilizar a função __''plot''__ com o objeto __''hipso1''__. | ||
- | <code> | + | <code rsplus> |
> plot( hipso1 ) | > plot( hipso1 ) | ||
</code> | </code> | ||
Linha 615: | Linha 615: | ||
E para se fazer inferência sobre as estimativas dos coeficientes de regressão e sobre a qualidade do ajuste do modelo? Se utiliza as funções __''summary''__ e __''anova''__: | E para se fazer inferência sobre as estimativas dos coeficientes de regressão e sobre a qualidade do ajuste do modelo? Se utiliza as funções __''summary''__ e __''anova''__: | ||
- | <code> | + | <code rsplus> |
> summary( hipso1 ) | > summary( hipso1 ) | ||
> anova( hipso1 ) | > anova( hipso1 ) | ||
Linha 625: | Linha 625: | ||
Podemos considerar que a relação entre DAP e altura é linear na escala logarítmica, assim um modelo apropriado seria: | Podemos considerar que a relação entre DAP e altura é linear na escala logarítmica, assim um modelo apropriado seria: | ||
- | <code> | + | <code rsplus> |
> hipso2 = lm( log(h) ~ log(dap) , data=cax) | > hipso2 = lm( log(h) ~ log(dap) , data=cax) | ||
> plot(hipso2) | > plot(hipso2) | ||
Linha 632: | Linha 632: | ||
Ou então podemos verificar o modelo conhecido na Mensuração Florestal como //Modelo Schumacher//: | Ou então podemos verificar o modelo conhecido na Mensuração Florestal como //Modelo Schumacher//: | ||
- | <code> | + | <code rsplus> |
> hipso3 = lm( log(h) ~ I(1/dap) , data=cax) | > hipso3 = lm( log(h) ~ I(1/dap) , data=cax) | ||
> plot(hipso3) | > plot(hipso3) | ||
Linha 639: | Linha 639: | ||
Alguém aprecia parábolas ? | Alguém aprecia parábolas ? | ||
- | <code> | + | <code rsplus> |
> hipso4 = lm( h ~ dap + I(dap^2) , data=cax) | > hipso4 = lm( h ~ dap + I(dap^2) , data=cax) | ||
> plot(hipso4) | > plot(hipso4) | ||
Linha 646: | Linha 646: | ||
Como podemos visualizar todos esses modelos junto com a relação DAP - altura ? | Como podemos visualizar todos esses modelos junto com a relação DAP - altura ? | ||
- | <code> | + | <code rsplus> |
> scatter.smooth( cax$dap, cax$h) | > scatter.smooth( cax$dap, cax$h) | ||
> hipso1 | > hipso1 | ||
Linha 663: | Linha 663: | ||
A abordagem mais apropriada é consideramos que cada caxetal talvez tenha uma relação altura-DAP diferente: | A abordagem mais apropriada é consideramos que cada caxetal talvez tenha uma relação altura-DAP diferente: | ||
- | <code> | + | <code rsplus> |
> hipso.plus = lm( h ~ dap * local, data=cax) | > hipso.plus = lm( h ~ dap * local, data=cax) | ||
> plot( hipso.plus ) | > plot( hipso.plus ) |