Skip to content

Latest commit

 

History

History
296 lines (260 loc) · 42.1 KB

index.md

File metadata and controls

296 lines (260 loc) · 42.1 KB
<title>Cálculo de índices Balanceados de Kenworthy (B) utlizando o R</title> <style type="text/css">code{white-space: pre;}</style> <style type="text/css"> div.sourceCode { overflow-x: auto; } table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode { margin: 0; padding: 0; vertical-align: baseline; border: none; } table.sourceCode { width: 100%; line-height: 100%; } td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; } td.sourceCode { padding-left: 5px; } code > span.kw { color: #0000ff; } /* Keyword */ code > span.ch { color: #008080; } /* Char */ code > span.st { color: #008080; } /* String */ code > span.co { color: #008000; } /* Comment */ code > span.ot { color: #ff4000; } /* Other */ code > span.al { color: #ff0000; } /* Alert */ code > span.er { color: #ff0000; font-weight: bold; } /* Error */ code > span.wa { color: #008000; font-weight: bold; } /* Warning */ code > span.cn { } /* Constant */ code > span.sc { color: #008080; } /* SpecialChar */ code > span.vs { color: #008080; } /* VerbatimString */ code > span.ss { color: #008080; } /* SpecialString */ code > span.im { } /* Import */ code > span.va { } /* Variable */ code > span.cf { color: #0000ff; } /* ControlFlow */ code > span.op { } /* Operator */ code > span.bu { } /* BuiltIn */ code > span.ex { } /* Extension */ code > span.pp { color: #ff4000; } /* Preprocessor */ code > span.do { color: #008000; } /* Documentation */ code > span.an { color: #008000; } /* Annotation */ code > span.cv { color: #008000; } /* CommentVar */ code > span.at { } /* Attribute */ code > span.in { color: #008000; } /* Information */ </style> <style type="text/css"> pre:not([class]) { background-color: white; } </style> <style type="text/css"> h1 { font-size: 34px; } h1.title { font-size: 38px; } h2 { font-size: 30px; } h3 { font-size: 24px; } h4 { font-size: 18px; } h5 { font-size: 16px; } h6 { font-size: 12px; } .table th:not([align]) { text-align: left; } </style> <style type="text/css"> .main-container { max-width: 940px; margin-left: auto; margin-right: auto; } code { color: inherit; background-color: rgba(0, 0, 0, 0.04); } img { max-width:100%; height: auto; } .tabbed-pane { padding-top: 12px; } button.code-folding-btn:focus { outline: none; } </style>
<script> $(document).ready(function () { window.buildTabsets("TOC"); }); </script>

Cálculo de índices Balanceados de Kenworthy (B)

Webert Saturnino Pinto

24 de junho de 2017

<style> body { text-align: justify} </style>

Introdução

De acordo com MARTINEZ et al. (1999), os ídices balanceados de Kenworthy, propostos por KENWORTHY(1961), permitem avaliar o estado nutricinal como percentagem da concentração de determinado nutriente em relação à norma. A vantagem deste método em relação à outros é o fato deste considerar o coeficiente de variação para cada nutriente na população de onde se obteve a norma. Para o cálculo dos coeficientes, procede-se destintamente quando a concentração do nutriente na população teste for menor ou maior que a norma:

  1. Y_am > Y_ref

    I = (P-100)CV/100

    B = P-I

  2. Y_am < Y_ref

    I = (100-P)CV/100

    B = P+I

A interpretação dos resultados é feita de acordo com a colocação dos valores em relação às faixas:

  1. Faixa de deficiência: 17 a 50 %
  2. Faixa marginal (abaixo do normal): 50 a 83 %
  3. Faixa adequada (normal): 83 a 117 %
  4. Faixa elevada (acima do normal): 117 a 150 %
  5. Faixa de excesso: 150 a 183 %

Bibliotecas adicionais utilizadas

library(data.table)
library(dplyr)
library(matrixStats)
library(ggplot2)

Lendo a base de dados

#Arquivo com os dados de referência, para cálculo da norma:

d.ref <- data.frame(read.csv2("dados_ref_cafe.csv"))

print(d.ref)

##    amostra    N    P    K    S   Ca   Mg Cu  Mn  Fe Zn  B
## 1     am_1 3.00 0.20 2.30 0.18 2.25 0.35 15 180 130 13 75
## 2     am_2 2.85 0.15 2.00 0.16 2.20 0.35 14 113 127  9 60
## 3     am_3 2.37 0.14 2.10 0.20 2.50 0.40 10 127 155  5 63
## 4     am_4 2.56 0.16 2.50 0.22 2.40 0.20 12 190 140  8 80
## 5     am_5 2.70 0.15 2.80 0.28 2.10 0.30 15 205 100 14 77
## 6     am_6 3.50 0.14 2.50 0.19 2.20 0.25  9 137 125 16 58
## 7     am_7 2.89 0.13 2.20 0.16 3.00 0.30 16 113 130 13 75
## 8     am_8 3.01 0.27 2.33 0.30 2.35 0.35 20 148 135 15 80
## 9     am_9 3.60 0.25 2.50 0.15 2.40 0.25 12 136 130 10 66
## 10   am_10 2.30 0.10 3.00 0.20 2.85 0.20 15 144 150 12 60
#Arquivo com os teores foliares da amostra sob avaliação:

d.amostra <- data.frame(read.csv2("dados_am_cafe.csv")) print(d.amostra)

##         nut    N    P    K   S   Ca   Mg    Cu     Mn     Fe    Zn  B
## 1 t_amostra 2.41 0.23 1.42 0.2 1.18 0.22 11.49 207.03 141.15 13.23 60

Calculando os valores das médias e variâncias da população de referência

d.ref.media <-data.frame(y_ref = sapply(d.ref[2:10,2:12], mean))
d.ref.variancia <-data.frame(variancia = sapply(d.ref[2:10,2:12], sd))
d.ref.media.var <- cbind.data.frame(d.ref.media, d.ref.variancia)

Calculando o coeficiente percentual de variação (CV) da população de referência (norma)

d.ref.media.var$cv <- (d.ref.media.var$variancia/d.ref.media.var$y_ref)*100

Criando um data frame com os valores referência e de amostra

d.kw <- data.frame(d.ref.media.var)
y <- as.data.frame(t(d.amostra))
Y<- data.frame(v = y[2:12,])
d.kw$y_am <- as.numeric(as.character(Y$v))
d.kw$y_ref <-  as.numeric(as.character(d.kw$y_ref))

Calculando os parâmetros I e P

d.kw$P <- (d.kw$y_am/d.kw$y_ref)*100

d.kw$I <- ifelse(d.kw$y_am > d.kw$y_ref, (d.kw$P-100)(d.kw$cv/100), (100-d.kw$P)(d.kw$cv/100) )

Calculando os índices balanceados de Kenworthy

d.kw$B <- ifelse(d.kw$y_am > d.kw$y_ref, d.kw$P- d.kw$I, d.kw$P + d.kw$I)

Interpretando os valores obtidos para os índices

d.kw$interpretacao <- ifelse(d.kw$B >= 17 & d.kw$B < 50, "Deficiência",
                             ifelse(d.kw$B >= 50 & d.kw$B < 83, "Abaixo do normal",
                                    ifelse(d.kw$B >= 83 & d.kw$B < 117,"Normal", 
                                           ifelse(d.kw$B >= 117 & d.kw$B < 150,"Acima do normal", "Excesso"))))

Reordenando os índices dos nutrintes em funcão do coeficiente B

d.ikw <- data.table(nutriente = row.names(d.kw), B = d.kw$B, Interpretacao = d.kw$interpretacao) %>% transform(nutriente = reorder(nutriente, -B))
print(d.ikw)
##     nutriente         B    Interpretacao
##  1:         N  86.65019           Normal
##  2:         P 125.67179  Acima do normal
##  3:         K  63.80107 Abaixo do normal
##  4:         S  97.59643           Normal
##  5:        Ca  54.65283 Abaixo do normal
##  6:        Mg  81.90898 Abaixo do normal
##  7:        Cu  87.98197           Normal
##  8:        Mn 132.74323  Acima do normal
##  9:        Fe 105.78239           Normal
## 10:        Zn 111.41118           Normal
## 11:         B  88.93508           Normal

Plotando os índices balanceados para cada nutriente

graf_ikw <- ggplot(d.ikw, aes(nutriente,B))
graf_ikw + geom_col()+ 
  ylab("B(%)") + 
  geom_hline(yintercept = 17)+
    annotate(geom="text", label= "Deficiente", x=1, y=32.5, vjust=0, hjust = -4)+
  geom_hline(yintercept = 50)+
    annotate(geom="text", label= "Abaixo do normal", x=1, y=66.5, vjust=0, hjust = -2)+
  geom_hline(yintercept = 83)+
    annotate(geom="text", label= "Normal", x=1, y=100, vjust=0, hjust = -5.25)+
  geom_hline(yintercept = 117)+
    annotate(geom="text", label= "Acima do normal", x=1, y=133.5, vjust=0, hjust = -2)+
  geom_hline(yintercept = 150)+
    annotate(geom="text", label= "Excesso", x=1, y=150, vjust=-0.5, hjust = -4.3)

Fontes consultadas e referenciadas

KENWORTHY, A. L. Interpreting the balance of nutrient-elements in leaves of fruit trees. In: Reuther W. Plant analysis and fertilizers problems. Washington: American Institute of Biological Science, 1961. p.28-23.

MARTINEZ, H. E. P.; CARVALHO, J. G.; SOUZA, R. B. Diagnose Foliar. In: RIBEIRO, A. C.; GUIMARÃES, P. T. G.; ALVAREZ V., V. H. (Org.). . Recomendações para o uso de corretivos e fertilizantes em Minas Gerais - 5° Aproximação. Viçosa: [s.n.], 1999. p. 359.

ggplot2 barplots : Quick start guide - R software and data visualization. Disponível em: http://www.sthda.com/english/wiki/ggplot2-barplots-quick-start-guide-r-software-and-data-visualization. Último acesso: 26/06/2017.

Find the Standard deviation for a vector, matrix, or data.frame - do not return error if there are no cases. Disponível em:https://www.personality-project.org/r/html/SD.html. Último acesso: 26/06/2017.

Disponível em:http://www.statmethods.net/management/subset.html. Último acesso: 26/06/2017.

Disponível em:https://s3.amazonaws.com/content.udacity-data.com/courses/gt-cse6242/recommended+reading/ggplot2-book.pdf. Último acesso: 26/06/2017.

Disponível em:https://stackoverflow.com/questions/39178740/ggplot2-reorder-bars-in-barplot-from-highest-to-lowest. Último acesso: 26/06/2017.

<script> // add bootstrap table styles to pandoc tables function bootstrapStylePandocTables() { $('tr.header').parent('thead').parent('table').addClass('table table-condensed'); } $(document).ready(function () { bootstrapStylePandocTables(); }); </script> <script> (function () { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"; document.getElementsByTagName("head")[0].appendChild(script); })(); </script>