Mostrando postagens com marcador Software R. Mostrar todas as postagens
Mostrando postagens com marcador Software R. Mostrar todas as postagens

20/12/2024

Histograma no R

Para fazer gráfico de histograma, retomarei uma postagem anterior, na qual utilizo um exemplo do Fundamentos de Química Analítica (Skoog de analítica) para a calibração de uma pipeta de 10 mL. Abaixo segue o script, e para mais explicações assista o vídeo no fim da postagem.


O gráfico final fica conforme mostrado abaixo:

30/05/2022

Instalar R no linux mint

 Para instalar a versão 4.2.0 do R no linux Mint 20.2, segui os seguintes comandos no terminal:

1. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

2. sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' 

3. sudo apt-get update 

4. sudo apt-get install r-base

23/07/2020

Classificação condicional no R

Imaginemos a seguinte situação: eu tenho uma lista de alunos e suas respectivas notas, e gostaria de classificá-los se estão aprovados ou reprovados.

Essa classificação, será com base na nota e feita para cada aluno da lista, pensando numa lista pequena é fácil ver quem está abaixo ou acima da média, mas se pensarmos em 50, 100 ou 200 alunos já começa a se tornar complicado. Nessa hora o R ajuda muito a criar uma tabela com essas informações e facilita o trabalho futuro com esses dados. 

Para começar, criaremos a lista:

> alunos <- c("Aline","João","Alonso","Josias", "Camila", "Katia","Pedro", "José", "Ricardo", "Luis", "Luiza", "Gabriela")
> notas <- c(9.2,5.6,7.7,7.0,6.3,6.5,6.0,6.1,8.2,7.0,8.8,5.9)

Vale lembrar que a lista poderia estar em um arquivo csv criado no Excel (ou LibreOffice), ou mesmo em um arquivo txt. Daí bastaria importar o arquivo.

> dados <- data.frame(alunos,notas) #criar a tabela

Para começar, é preciso quantos alunos está na lista, para isso:

> length(alunos)

Nesse caso foi 12, então agora é classificar quem tem nota abaixo de 6.0 como reprovado e maior que 6.0 como aprovado. Para isso será criado um vetor status, que depois será incluído no data frame.

> status <- 0
> for (i in 1:12) {
  if(notas[i] < 7.0){status[i] = "Reprovado"}
  else{status[i] = "Aprovado"}
}

O vetor status agora contém a classificação de cada aluno, então basta inserir-lo na tabela

> tabela <- cbind(dados,status)
> tabela #exibe o resultado

Agora vamos pensar em outra classificação. Supondo que a média seja 7, e que os alunos com nota acima de 6 tem a possibilidade de fazer um exame para serem reavaliados. Podemos classificá-los em aprovados, de exame e reprovados.

Os dados serão os mesmo, o que mudará será as condições do comando for:

> status <- 0
> for (i in 1:12) {
  if(notas[i] < 6.0){status[i] = "Reprovado"}
  else if(notas[i] < 7.0){status[i] = "Exame"}
  else{status[i] = "Aprovado"}
}

> tabela <- cbind(dados,status)
> tabela #exibe o resultado

Vídeo tutorial:

15/02/2019

Mudar ponto por vírgula nos gráficos do R

Para mudar a exibição decimal nos gráficos, de 1.0 para 1,0; podemos usar o comando :

 > options(OutDec = ",")

Esse comando pode ser inserido no script, se for o caso, pois funciona somente no ambiente aberto. Não interfere nas configurações gerais do software.

30/09/2018

Sorteio aleatório de códigos ou nomes

Para randomizar amostras ou mesmo fazer um sorteio, pode se interesse não usar números e sim códigos ou nomes. O primeiro passo é criar um vetor (ou lista) com os nomes que deseja sortear.

Como exemplo, criarei um código para amostras onde T corresponde ao tratamento que receberão e G é o grupo. O código ficará assim: T1G1, que será o tratamento 1 do grupo 1. Irei considerar 3 tipos de tratamento e 4 grupos, totalizando 12 códigos.

O mais trabalhoso é escrever todos os códigos, pois como será um vetor de caracteres cada códio deve aparecer entre aspas. Nessas horas alguma ferramenta ou comando para automatizar seria bom, mas até o momento desconheço.

> # criando a lista de códigos
> amostras <- c("T1G1","T1G2","T1G3","T1G4",
"T2G1","T2G2","T2G3","T2G4",
"T3G1","T3G2","T3G3","T3G4")

Para sortear basta entrar com o comando sample.

> # sorteio
> sample(amostras, 12, replace = FALSE, prob = NULL)

13/08/2018

Referenciar ou citar o R e pacotes

Ao utilizar o R em trabalhos acadêmicos e científicos precisamos citá-lo nas referências. Também é interessante citar os pacotes utilizados. Para facilitar basta usar o comando citation()

> citation () # referencia software R

> citation(package = "nome_do_pacote") # referencia de um pacote

E tem a vantagem de além de mostrar como referenciar nas publicações, também traz a entrada em LaTeX.

21/03/2018

Gerar códigos para Análise Sensorial no R

Para gerar os códigos para as amostras da minha análise sensorial estabeleci que o intervalo vai de 100 a 999, pois todos terão três dígitos, em seguida só fiz um sorteio com o comando sample() e depois usei a compara para ver se algum número repetia entre uma amostra e outra. Tudo seguindo o script abaixo.

Não se esqueçam de anotar os códigos gerados em outro documento (documento de texto) pois a cada vez que se roda o script são gerados números diferentes pois é sorteio aleatório. Por isso deve ficar salvo os grupos de códigos para identificar qual é cada amostra depois. Segue os comando abaixo:

### Amostras Analise Sensorial ###

amostra1 <- sample(100:999, 50, replace = FALSE)
amostra2 <- sample(100:999, 50, replace = FALSE)
amostra3 <- sample(100:999, 50, replace = FALSE)

# verificar se sao iguais
all(amostra1 != amostra2) # se TRUE nao tem numeros iguais
all(amostra1 != amostra3) # se TRUE nao tem numeros iguai
all(amostra3 != amostra2) # se TRUE nao tem numeros iguai

# mostra os codigos
amostra1
amostra2
amostra3


07/02/2017

ANOVA e Teste de Tukey

Para fazer esses teste de comparação, utilizaremos o seguinte exemplo que foi retirado do SKOOG.

Cinco analistas obtiveram os resultados (mmol de Ca), mostrados na tabela que se segue, para determinação de cálcio por um método volumétrico. As médias diferem significativamente em um nível de confiança de 95%?


Para saber se as médias diferem precisamos fazer a Análise de Variância (ANOVA). Pois temos que a hipótese nula H0 assume a forma:
H0 = μ1 = μ2 = μ3 = ... = μj

A hipótese alternativa Ha é que pelo menos dois dos μj são diferentes.

Assim a primeira coisa é inserir o dados no R.

> analista1 <- c(10.3,9.8,11.4)
> analista2 <- c(9.5,8.6,8.9)
> analista3 <- c(12.1,13.0,12.4)
> analista4 <- c(9.6,8.3,8.2)
> analista5 <- c(11.6,12.5,11.4)

> dados <- data.frame(analista1, analista2, analista3, analista4, analista5) # cria conjunto de dados
> dat <- stack(dados) # cria vector no formato pilha

> anova = aov(dat$values~dat$ind) # faz a anova
> summary(anova) # chama o resultado da anova

            Df Sum Sq Mean Sq F value   Pr(>F)    
dat$ind      4  33.80   8.451   20.68 7.97e-05 ***
Residuals   10   4.09   0.409                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Como o resultado assim nos mostra, temos que o valor de F é igual a 20,68. Agora precisamos saber valor de F crítico (tabelado).

> qf(0.95, df1 = 4, df2 = 10) # f critico

Como resultado, o valor crítico de >F em um nível de confiança de 95% para 4 e 10 graus de liberdade é 3,48.

Uma vez que F é maior que 3,48, rejeitamos H0 em um nível de confiança de 95% e concluímos que existe diferença significativa entre os analistas.Lembrando que se F > Fcrítico rejeitamos H0 e passamos a aceitar a hipótese alternativa Ha, e se F < Fcrítico não podemos rejeitar H0.

Mas e agora, quem difere de quem? Para isso precisamos realizar a comparação entre as médias, pra isso realizaremos o Teste de Tukey.

> tk_teste <- TukeyHSD(anova)
> tk_teste

  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = dat$values ~ dat$ind)

$`dat$ind`
                          diff        lwr         upr     p adj
analista2-analista1 -1.5000000 -3.2178202  0.21782021 0.0951550
analista3-analista1  2.0000000  0.2821798  3.71782021 0.0216352
analista4-analista1 -1.8000000 -3.5178202 -0.08217979 0.0391543
analista5-analista1  1.3333333 -0.3844869  3.05115354 0.1536633
analista3-analista2  3.5000000  1.7821798  5.21782021 0.0003966
analista4-analista2 -0.3000000 -2.0178202  1.41782021 0.9759180
analista5-analista2  2.8333333  1.1155131  4.55115354 0.0020822
analista4-analista3 -3.8000000 -5.5178202 -2.08217979 0.0002002
analista5-analista3 -0.6666667 -2.3844869  1.05115354 0.7098933
analista5-analista4  3.1333333  1.4155131  4.85115354 0.0009635

Pelo resultado do Teste de Tukey temos a comparação entre os analistas onde temos a diferença entre as médias e o valor de p. Para os valor de p < α podemos afirmar que as médias diferem ao nível de significância de 5% (α = 0,05). Quando p > α não é possível afirmar que as médias diferem.

O mesmo resultado pode ser expresso pelo gráfico do teste.

> plot(tk_teste)

 Por fim podemos fazer um boxplot para representar melhor os dados

> boxplot(dados)


Vídeo demonstrativo:


Referências:
SKOOG, WEST, HOLLER, CROUCH. Fundamentos de Química Analítica. 8ed. 2006.

10/10/2016

Título de eixo no R

Para colocar título nos eixo de um gráfico, basta usar o argumento abaixo dentro do comando plot:

> plot(x, y, xlab = "texto", ylab = "texto")

Esse argumento xlab e ylab refere-se ao título (labels) dos eixos. Que normalmente colocamos ao que corresponde o eixo e a unidade.

Quando utiliza-se apenas letras no título do eixo é simples, basta apenas digitar. Mas quando é necessário representar símbolos de unidades, como por exemplo graus Celsius ou gramas por litro, deve-se utilizar xlab = expression(). Veja no exemplo abaixo:




07/08/2016

Erros em análises químicas

Abordaremos alguns erros em análises químicas, claro que utilizando o R (pelo RStudio), esses cálculos estatísticos são bem simples e estão presentes em nossa rotina. Como referencial teórico, utilizaremos o livro Fundamentos de Química Analítica (Skoog de analítica). Todo conteúdo teórico está explicado de maneira bem claro nesse livro texto. Aqui mostraremos apenas a resolução de alguns exemplos utilizando o R.

Comandos:
> dados <- c(19.4,19.5,19.6,19.8,20.1,20.3) # cria o conjunto de dados
> mean(dados) # calcula a média
> median(dados) # calcula a mediana

Comandos:
> dados <- c(9.988,9.973,9.986,9.980,9.975,9.982,9.986,9.982,9.981,9.990,9.980,9.989,9.978,9.971,9.982,9.983,9.988,9.975,9.980,9.994,9.992,9.984,9.981,9.987,9.978,9.983,9.982,9.991,9.981,9.969,9.985,9.977,9.976,9.983,9.976,9.990,9.988,9.971,9.986,9.978,9.986,9.982,9.977,9.977,9.986,9.978,9.983,9.980,9.984,9.979)
> mean(dados) # calcula a media
> median(dados) # calcula a mediana
> sd(dados) # calcula o desvio padrao
> maximo <- max(dados) # identifica maior valor
> maximo # mostra o resultado
> minimo <- min(dados) # identifica menor valor
> minimo # mostra o resultado
> faixa <- (maximo - minimo) # equacacao para calcular
> faixa # mostra o resultado

outros comando também podem ser utilizados:
> summary(dados) # mostra min, mediana, media e max
> range(dados) # mostra max e min
> length(dados) # tamanho da amostra

Ainda com relação aos dados da Tabela 6-2, podemos criar um histograma com os dados:
> hist(dados)
> hist(dados, col = "green", border = "blue") # histograma colorido



Referências:
SKOOG, WEST, HOLLER, CROUCH. Fundamentos de Química Analítica. 8ed. 2006.

04/08/2016

Diagrama de Causa e Efeito

Também conhecido como Diagrama de Ishikawa ou diagrama (gráfico) espinha de peixe. Como o próprio nome diz, ele é um infográfico que listas as causas ou possíveis causas para um dado efeito, representando as relações por meio de setas. O formato fica similar a uma espinha de peixe, daí vem o apelido espinha de peixe (fishbone diagram); talvez tenha essa forma por ter sido criado por um japonês, Kaoru Ishikawa, que era engenheiro químico que trabalhou e desenvolveu ferramentas relacionadas ao controle de qualidade.

A finalidade desse diagrama é organizar o raciocínio sobre informações que podem estar relacionada a um determinado efeito, seja ele positivo ou problemático. Esse gráfico é muito comum nas áreas industriais e seu uso abrange normalmente as metodologias de Garantia e Controle de Qualidade.

Tendo em mente as informações que se deseja abordar, o diagrama pode ser montado. Por exemplo, desejamos montar um diagrama de causa e efeito para um café que tomamos diariamente em nosso local de trabalho. Depois de um Brainstorming (como já dizia um professor da graduação: "toró de palpites" ou chuva de ideias), já sabemos o queremos no gráfico, nessa hora que o R entra, pois sua versatilidade é possível construir o diagrama de maneira fácil e em formato bem apresentável.

Há varias maneiras de fazer o gráfico, aqui apresentarei uma utilizando o pacote qcc e outra pelo pacote SixSigma.

Utilizando o pacote qcc, temos  o seguinte comando geral:

# Instale e/ou carregue o package qcc
> cause.and.effect(cause = list(Causa1=c("A","B", "C"), Causa2=c("A","B","C"), Causa3=c("A","B","C")), effect = "Efeito", title = "Titulo")

O script abaixo foi feito para o nosso exemplo do café.



Pelo pacote SixSigma também é possível fazer o gráfico, o resultado visual fica um pouco diferente e o código é um pouco  mais complicado, embora a lógica seja a mesma.



31/07/2016

Rodando script no RStudio

Primeiramente, o que seria um script?

Por definição, script, é um texto com uma série de instruções escritas para serem seguidas.

No caso do R, as instruções são os comandos. Lembrando que cada linha digitada no console corresponde a um comando. Por exemplo, podemos utilizar a função plot() para fazer o gráfico de x por y quando digitamos o comando:

> plot(x,y) # exemplo de comando

O símbolo de maior (>) nos informa que o comando em seguida deverá ser digitado no console e executado apertando a tecla enter do teclado. O símbolo cerquilha ou hashtag (#), também conhecido popularmente como jogo da velha, é utilizado para inserir comentários em um comando; ou seja, aquela parte não será executada pelo software na leitura da linha de comando.

No quadro abaixo, trago um exemplo de script montado com os comandos utilizados no postagem sobre Regressão Linear


Para rodar o script basta copiá-lo, clique no quadro e aperte Ctrl +A para selecionar tudo e Ctrl + C, e depois colá-lo,com Ctrl + V, na janela do R Script dentro do RStudio. Em seguida basta selecionar tudo (Ctrl + A) e clicar em Run. Para salvar o script é só clicar no desenho do disquete, o resultados exibidos no console podem ser copiados e colados em um arquivo de texto (documento do Writer ou Word) e o gráfico plotado pode exportado no formato desejado.

07/06/2016

Gráficos com datas no R


Fazer gráficos com datas sendo uma da variáveis de forma que o formato da data fique dia/mês/ano, igual ao utilizado no dia a dia aqui no Brasil.

 Primeiramente começo montando uma planilha feita no Office (LibreOffice ou Microsoft Office) dá seguinte forma:

data
valor
01/05/2014
52
02/05/2014
47
03/05/2014
89
04/05/2014
56
05/05/2014
87
06/05/2014
25
07/05/2014
34
08/05/2014
46
09/05/2014
55
10/05/2014
70

Depois basta exportar a planilha no formato CSV e importar os dados pelo RStudio usando o botão Import Dataset e em seguida o comando:

> attach(nome.do.arquivo)
 > datas <- as.date="" data="" format="%d/%m/%Y"> plot(datas,valor,xaxt="n") #faz o grafico sem as datas no formato ingles 
<- as.date="" data="" format="%d/%m/%Y">> axis.Date(side=1,datas,format="%d/%m/%Y")
<- as.date="" data="" format="%d/%m/%Y">

Para fazer o gráfico usando o ggplot2, basta carregar o pacote e usar os comandos:

> library(ggplot2)
> grafico <- data="" qplot="" valor=""> library(scales) 
<- data="" qplot="" valor="">> grafico + scale_x_date(labels=date_format("%d/%m/%Y"))

09/12/2015

Sorteio aleatório

Um recurso bastante interessante que o R nos permite, é fazer um sorteio randômico (aleatório) em um determinado conjunto numérico. Pode parecer um função não muito útil, mas com ela podemos simular sorteios de jogos do tipo loteria ou bingo, como farei abaixo.

Para exemplificar como funciona o sorteio, utilizarei um modelo similar a uma loteria. Temos que os números que pode ser sorteados vão de 1 a 60, então criaremos um conjunto com esses números que será chamado de a:

> a<-1:60

Em seguida basta utilizar o comando sample para sortear algum elemento que está contido no conjunto a. O argumento do comando sample também pede a quantidade de sorteios que irá fazer, no nosso caso irei realizar 6 sorteios, ou seja, irei sortear seis elementos que estão no conjunto a.

> sample(a,6)

Como resultado teremos 6 números aleatórios.

Pode ser interessante também simular um sorteio onde depois de sorteado um número ele seja recolado no conjunto para que depois seja sorteado o próximo, então basta acrescentar o argumento replace=TRUE. Na pratica, isso permitirá que o mesmo elemento possa ser sorteado outra vez.

> sample(a,6,replace=TRUE)

Caso queria repetir o sorteio varias vezes, devemos utilizar o comando replicate, que no começo deverá informar o número de replicatas serão feitas e em seguida o comando sample. No exemplo abaixo irei repetir 10 vezes.

> sorteios<-replicate(10, sample(a,6))

Para ver o resultado basta entrar com o nome dados ao conjunto de replicatas.

> sorteios

Uma forma melhor de visualizar melhor o resultado das replicatas como um todo é gerando um histograma dos sorteios mostrará a distribuição de frequências dos números sorteados.

> hist(sorteios)

04/08/2015

Primeiro contato com o RStudio

Ao abrirmos o RStudio pela primeira vez veremos o software de seguinte maneira:


Uma janela composta por uma barra de ferramentas na parte superior e três abas de workspace, onde o Console é a aba principal e as outras são ferramentas do RStudio que facilitam o trabalho.

Console: é onde iremos nos comunicar com o R através da entrada de comandos e saídas de resultados. Pra quem usa somente o R, sem a interface do RStudio, aparecerá somente a janela do console.

Enviroment: ambiente que exibe as variáveis e dados carregados pelo R.
History: mostra o histórico de todos comandos executados. O histórico pode ser limpo quando quiser, basta apenas clicar em clear (ícone de vassoura).

Plots: onde serão exibidos o resultados gráficos, e com as opções para exportar.
Packages: exibe a biblioteca de pacotes e a opção para carregar ou instalar/atualizar.

Caso esteja com algum script aberto aparecerá a aba do script acima do console.