Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
pessoais:jcfaria [2007/03/02 18:35] jcfariapessoais:jcfaria [2012/08/01 19:25] (atual) jcfaria
Linha 9: Linha 9:
 **1. Quem sou** **1. Quem sou**
  
-- Engenheiro Agrônomo+- Engenheiro Agrônomo 
- +- Mestrado e Doutorado em Produção Vegetal pela Universidade Federal de Viçosa - UFV/MG 
-- Mestrado e Doutorado em Produção Vegetal pela Universidade Federal de Viçosa - UFV/MG.+- Pós-doc em estatística e experimentação agronômica (ESALQ)
  
  
Linha 18: Linha 18:
 - Professor de estatística e pesquisador da Universidade Estadual de Santa Cruz - UESC/BA; - Professor de estatística e pesquisador da Universidade Estadual de Santa Cruz - UESC/BA;
  
-Coordenador e desenvolvedor do projeto Tinn-R (GUI/editor para o ambiente R).+Tenho estado desenvolvendo algumas soluções computacionais voltadas para o ambiente R: 
 +  - Editores: 
 +    - Tinn-R ([[http://sourceforge.net/projects/tinn-r/]]) 
 +    - Vim-R-plugin ([[http://www.vim.org/scripts/script.php?script_id=2628]]) 
 +  - Pacotes: 
 +    - bpca ([[http://cran.r-project.org/web/packages/bpca/index.html]]) 
 +    - TinnR ([[http://cran.r-project.org/web/packages/TinnR/index.html]]) 
 +    - fdth ([[http://cran.r-project.org/web/packages/fdth/index.html]]) 
 +    - ScottKnott ([[http://cran.r-project.org/web/packages/ScottKnott/index.html]]) 
 +    - TukeyC ([[http://cran.r-project.org/web/packages/TukeyC/index.html]])
  
  
 **3. Sobre o R** **3. Sobre o R**
  
-- Gostaria de tê-lo encontrado desde o início de minha carreira na área de estatística computacional.+- Gostaria de tê-lo encontrado desde o início de minha carreira na área de estatística computacional!
  
  
Linha 29: Linha 38:
  
 - Desejo aprofundar os conhecimentos em análise multivariada de dados no ambiente R; - Desejo aprofundar os conhecimentos em análise multivariada de dados no ambiente R;
- 
-- Aprimorar o Tinn-R e disponibilizá-lo também para a plataforma Linux; 
  
 - Trocar experiências com pessoas e equipes envolvidas nestas áreas. - Trocar experiências com pessoas e equipes envolvidas nestas áreas.
Linha 592: Linha 599:
  
 ==== Funções úteis ==== ==== Funções úteis ====
-=== Tabelas e histogramas === 
-== Função tb.table == 
- 
-Função simples, flexível mas poderosa para descrever, via tabela de distribuição de freqüências e histogramas, vetores e data.frames. 
- 
-<code> 
-#=============================================================================== 
-# Name           : tb.table 
-# Original author: José Cláudio Faria, Gabor Gothendievisk and Enio Jelihovschi 
-# Date (dd/mm/yy): 1/3/07 11:06:02 
-# Version        : v24 
-# Aim            : To make tables of frequency distribution and associated 
-#                  histogram 
-#=============================================================================== 
-# Arguments: 
-# breaks         : Method to determine number of classes= c('Sturges', 'Scott', 'FD') 
-# by             : Variable to group 
-# end            : Last class (high value) 
-# h              : Classes extent 
-# k              : Class number 
-# right          : Intervals right open (default = FALSE) 
-# start          : First class (small value) 
-# x              : A R object (vector or data.frame) 
-# histogram      : Plot histogram (default = TRUE) 
-# title.histogram: Title of histogram c('auto', 'none') 
-#=============================================================================== 
- 
-# Common functions 
-tb.make.table.I <- function(x, 
-                            start, 
-                            end, 
-                            h, 
-                            right, 
-                            histogram, 
-                            titleH) 
-{ 
-  f    <- table(cut(x, br=seq(start, end, h), right=right)) # Absolut freq 
-  fr   <- f/length(x)                                       # Relative freq 
-  frP  <- 100*(f/length(x))                                 # Relative freq, % 
-  fac  <- cumsum(f)                                         # Cumulative freq 
-  facP <- 100*(cumsum(f/length(x)))                         # Cumulative freq, % 
-  fi   <- round(f, 2) 
-  fr   <- round(as.numeric(fr), 2) 
-  frP  <- round(as.numeric(frP), 2) 
-  fac  <- round(as.numeric(fac), 2) 
-  facP <- round(as.numeric(facP),2) 
-  res  <- data.frame(fi, fr, frP, fac, facP)                # Make final table 
-  names(res) <- c('Class limits', 'fi', 'fr', 'fr(%)', 'fac', 'fac(%)') 
- 
-  # Making the histogram: With Benilton suggestions 
-  if (histogram) { 
-    hist(x, 
-         breaks = seq(start, end, h), 
-         freq   = T, 
-         right  = right, 
-         xlab   = 'Class limits', ylab='Frequency', 
-         col    = 'LightYellow', 
-         main   = titleH, 
-         xlim   = c(start, end), ylim=c(0, max(fi)), 
-         las    = 1, 
-         xaxt   = 'n') 
-    axis(1, at=round(seq(start, end, h), 2)) 
-  } 
-  return(res) 
-} 
- 
-tb.make.table.II <- function (x, 
-                              k, 
-                              breaks=c('Sturges', 'Scott', 'FD'), 
-                              right=FALSE, 
-                              histogram, 
-                              titleH) 
-{ 
-  x <- na.omit(x) 
- 
-  # User defines only x and/or 'breaks' 
-  # (x, {k,}[breaks, right]) 
-  if (missing(k)) { 
-    brk   <- match.arg(breaks) 
-    switch(brk, 
-           Sturges = k <- nclass.Sturges(x), 
-           Scott   = k <- nclass.scott(x), 
-           FD      = k <- nclass.FD(x)) 
-    tmp   <- range(x) 
-    start <- tmp[1] - abs(tmp[2])/100 
-    end   <- tmp[2] + abs(tmp[2])/100 
-    R     <- end-start 
-    h     <- R/k 
-  } 
- 
-  # User defines 'x' and 'k' 
-  # (x, k,[breaks, right]) 
-  else { 
-    tmp   <- range(x) 
-    start <- tmp[1] - abs(tmp[2])/100 
-    end   <- tmp[2] + abs(tmp[2])/100 
-    R     <- end-start 
-    h     <- R/abs(k) 
-  } 
-  tbl     <- tb.make.table.I(x, start, end, h, right, histogram, titleH) 
-  return(tbl) 
-} 
- 
-# With Gabor Grotendieck suggestions (thanks Gabor, very much!) 
-tb.table <- function(x, ...) UseMethod("tb.table") 
- 
-# Table form vectors 
-tb.table.default <- function(x, 
-                             k, 
-                             start, 
-                             end, 
-                             h, 
-                             breaks=c('Sturges', 'Scott', 'FD'), 
-                             right=FALSE, 
-                             histogram=TRUE, 
-                             title.histogram=c('auto', 'none')) 
-{ 
-  # User defines nothing or not 'x' isn't numeric -> stop 
-  stopifnot(is.numeric(x)) 
-  x <- na.omit(x) 
- 
-  # User defines only 'x' 
-  # (x, {k, start, end, h}, [breaks, right]) 
-  if (missing(k) && missing(start) && missing(end) && missing(h) ) { 
-    brk   <- match.arg(breaks) 
-    switch(brk, 
-           Sturges = k <- nclass.Sturges(x), 
-           Scott   = k <- nclass.scott(x), 
-           FD      = k <- nclass.FD(x)) 
-    tmp   <- range(x) 
-    start <- tmp[1] - abs(tmp[2])/100 
-    end   <- tmp[2] + abs(tmp[2])/100 
-    R     <- end-start 
-    h     <- R/k 
-  } 
- 
-  # User defines 'x' and 'k' 
-  # (x, k, {start, end, h}, [breaks, right]) 
-  else if (missing(start) && missing(end) && missing(h)) { 
-    stopifnot(length(k) >= 1) 
-    tmp   <- range(x) 
-    start <- tmp[1] - abs(tmp[2])/100 
-    end   <- tmp[2] + abs(tmp[2])/100 
-    R     <- end-start 
-    h     <- R/abs(k) 
-  } 
- 
-  # User defines 'x', 'start' and 'end' 
-  # (x, {k,} start, end, {h,} [breaks, right]) 
-  else if (missing(k) && missing(h)) { 
-    stopifnot(length(start) >= 1, length(end) >=1) 
-    tmp <- range(x) 
-    R   <- end-start 
-    k   <- sqrt(abs(R)) 
-    if (k < 5)  k <- 5 # min value of k 
-    h   <- R/k 
-  } 
- 
-  # User defines 'x', 'start', 'end' and 'h' 
-  # (x, {k,} start, end, h, [breaks, right]) 
-  else if (missing(k)) { 
-    stopifnot(length(start) >= 1, length(end) >= 1, length(h) >= 1) 
-  } 
- 
-  else stop('Please, see the function sintax!') 
- 
-  if (histogram) { 
-    x11() 
-    par(mfrow=c(1, 1)) 
-    title.histogram <- match.arg(title.histogram) 
-    switch(title.histogram, 
-           auto = titleH <- 'x', 
-           none = titleH <- '') 
-  } 
-  tbl <- tb.make.table.I(x, start, end, h, right, histogram, titleH) 
-  return(tbl) 
-} 
- 
-# Table form data.frames 
-tb.table.data.frame <- function(df, 
-                                k, 
-                                by, 
-                                breaks=c('Sturges', 'Scott', 'FD'), 
-                                right=FALSE, 
-                                histogram=TRUE, 
-                                title.histogram=c('auto', 'none')) 
-{ 
-  stopifnot(is.data.frame(df)) 
-  tmpList <- list() 
-  nameF   <- character() 
-  nameY   <- character() 
- 
-  # User didn't defines a factor 
-  if (missing(by)) { 
-    logCol <-  sapply(df, is.numeric) 
-    nHist  <- length(logCol[logCol]) 
-    if (histogram) { 
-      count = 0 
-      if (nHist > 1) { 
-        x11() 
-        par(mfrow=c(4, 1)) 
-      } 
-    } 
-    for (i in 1:ncol(df)) { 
-      if (logCol[i]) { 
-        count  <- (count + 1) 
-        if (count == 5) { 
-          x11() 
-          par(mfrow=c(4, 1)) 
-          count <- 1 
-        } 
-        title.histogram <- match.arg(title.histogram) 
-        switch(title.histogram, 
-               auto = titleH <- names(logCol[i]), 
-               none = titleH <- '') 
-        x       <- as.matrix(df[ ,i]) 
-        tbl     <- tb.make.table.II(x, k, breaks, right, histogram, titleH) 
-        tmpList <- c(tmpList, list(tbl)) 
-      } 
-    } 
-    valCol <- logCol[logCol] 
-    names(tmpList) <- names(valCol) 
-    return(tmpList) 
-  } 
- 
-  # User defines one factor 
-  else { 
-    namesdf   <- names(df) 
-    pos       <- which(namesdf == by) 
-    stopifnot(is.factor((df[[pos]]))) 
-    nF        <- table(df[[pos]]) 
-    logCol    <- sapply(df, is.numeric) 
-    nHist     <- length(logCol[logCol]) 
-    nDisGraph <- round((length(nF) * nHist) / 12)  # 12 is the maximum easily visible 
-    if (histogram) { 
-      count <- 0 
-      x11() 
-      par(mfrow=c(4, 3)) 
-    } 
-    for(i in 1:length(nF)) { 
-      tmpdf  <- subset(df, df[[pos]] == names(nF[i])) 
-      logCol <- sapply(tmpdf, is.numeric) 
-      for (j in 1:ncol(tmpdf)) { 
-        if (logCol[j]) { 
-          count  <- (count + 1) 
-          if (count == 13) { 
-            x11() 
-            par(mfrow=c(4, 3)) 
-            count <- 1 
-          } 
-          nameF  <- names(nF[i]) 
-          nameY  <- names(logCol[j]) 
-          nameFY <- paste(nameF,'.', nameY, sep="") 
-          title.histogram <- match.arg(title.histogram) 
-          switch(title.histogram, 
-                 auto = titleH <- nameFY, 
-                 none = titleH <- '') 
-          x            <- as.matrix(tmpdf[ ,j]) 
-          tbl          <- tb.make.table.II(x, k, breaks, right, histogram, titleH) 
-          newFY        <- list(tbl) 
-          names(newFY) <- sub(' +$', '', nameFY) 
-          tmpList      <- c(tmpList, newFY) 
-        } 
-      } 
-    } 
-  } 
-  return(tmpList) 
-} 
-</code> 
- 
-== Testar função tb.table == 
-O script abaixo possibilita testar e aprender a usar a função tb.table. 
- 
-<code> 
-#=============================================================================== 
-# Name           : tb.table_test 
-# Original author: Jose Cláudio Faria 
-# Date (dd/mm/yy): 1/3/07 11:06:02 
-# Version        : v24 
-# Aim            : To learn how to use the function tb.table 
-#=============================================================================== 
-# Observation    : Test it line by line 
-#=============================================================================== 
-# 1.Tables 
-# 1.1. Tables from vectors 
-#=============================================================================== 
- 
-## To debug 
-# mtrace.off() 
-# mtrace(tb.make.table.I) 
-# mtrace(tb.make.table.II) 
-# mtrace(tb.table.default) 
-# mtrace(tb.table.data.frame) 
- 
-# Make a vector 
-set.seed(1) 
-x=rnorm(150, 5, 1) 
- 
-tb.table(x, his=F) 
-tb.table(x) 
-tb.table(x, title.his='none') 
-tb.table(x, k=10, his=T) 
- 
-#Title 
-tb.table(x, title.his='teste') #error! 
-tb.table(x, title.his='none') 
-tb.table(x, title.his='auto') 
- 
-# Equal to above 
-tb.table(x, breaks='Sturges') 
- 
-# Equal to above 
-tb.table(x, breaks='St') 
- 
-tb.table(x, breaks='Scott') 
- 
-# Equal to above 
-tb.table(x, b='Sc') 
- 
-tb.table(x, breaks='FD') 
- 
-# Equal to above 
-tb.table(x, breaks='F') 
- 
-tb.table(x, breaks='F', right=T) 
- 
-# Will make a error! 
-tb.table(x, breaks='S') #('S'turges) and ('S'cott) 
- 
-tb.table(x, k=4) 
- 
-tb.table(x, k=20) 
- 
-# Partial 
-tb.table(x, start=4, end=6) # Will make error! 
-tb.table(x, start=4, end=6, his=F) 
- 
-# Equal to above 
-tb.table(x, s=4, e=6, his=F) 
- 
-# Partial 
-tb.table(x, start=4.5, end=5.5, his=F) 
- 
-# Partial 
-tb.table(x, start=5, end=6, h=.5, his=F) 
- 
-# Nonsense 
-tb.table(x, start=0, end=10, h=.5) 
- 
-# First and last class forced (fi=0) 
-tb.table(x, start=1, end=9, h=1) 
- 
-tb.table(x, start=1, end=10, h=2) 
- 
- 
-#=============================================================================== 
-# 1.2. Tables from data.frames 
-#=============================================================================== 
-# Make a data.frame 
-mdf=data.frame(X1 =rep(LETTERS[1:4], 25), 
-               X2 =as.factor(rep(1:10, 10)), 
-               Y1 =c(NA, NA, rnorm(96, 10, 1), NA, NA), 
-               Y2 =rnorm(100, 60, 4), 
-               Y3 =rnorm(100, 50, 4), 
-               Y4 =rnorm(100, 40, 4)) 
- 
-tb.table(mdf) 
- 
-tb.table(mdf, title.his='none') 
- 
-# Equal to above 
-tb.table(mdf, breaks='Sturges') 
- 
-# Equal to above 
-tb.table(mdf, breaks='St') 
- 
-tb.table(mdf, breaks='Scott') 
- 
-tb.table(mdf, breaks='FD') 
- 
-tb.table(mdf, k=4) 
- 
-tb.table(mdf, k=10) 
- 
-levels(mdf$X1) 
-tbl = tb.table(mdf, k=5, by='X1') 
-length(tbl) 
-names(tbl) 
-tbl 
- 
-tb.table(mdf, breaks='FD', by='X1') 
- 
-# A 'big' result: X2 is a factor with 10 levels! 
-tb.table(mdf, breaks='FD', by='X2') 
- 
-tb.table(mdf, breaks='FD', k=5, by='X2') 
- 
-tb.table(iris, k=5) 
- 
-tb.table(iris, k=10) 
- 
-levels(iris$Species) 
-tbl=tb.table(iris, k=5, by='Species') 
-length(tbl) 
-names(tbl) 
-tbl 
- 
-tb.table(iris, k=5, by='Species', right=T) 
- 
-tb.table(iris, breaks='FD', by='Species') 
- 
-library(MASS) 
-levels(Cars93$Origin) 
-tbl=tb.table(Cars93, k=5, by='Origin') 
-names(tbl) 
-tbl 
- 
-tb.table(Cars93, breaks='FD', by='Origin') 
-</code> 
- 
 === Superfície de resposta === === Superfície de resposta ===
 == Função plotlm3d == == Função plotlm3d ==
Linha 1209: Linha 796:
 </code> </code>
  
-== Testar função tb.table ==+== Usando a função plotlm3d ==
 <code> <code>
 #=============================================================================== #===============================================================================
 # Name           : Script to test plotlm3d # Name           : Script to test plotlm3d
 # Author         : Jose Claudio Faria and Duncan Murdoch # Author         : Jose Claudio Faria and Duncan Murdoch
-# Date (dd/mm/yy): 23/7/06 07:21:23 +# Date (dd/mm/yy): 2012/07/01 
-# Version        : v17+# Version        : v18
 # Aim            : To plot 3d scatter, an or, surfaces with rgl package # Aim            : To plot 3d scatter, an or, surfaces with rgl package
 #=============================================================================== #===============================================================================
Linha 1229: Linha 816:
                     groups        = Species,                     groups        = Species,
                     xlab          = 'SL',                     xlab          = 'SL',
-                    ylab          = 'PL', +                    ylab          = 'SW', 
-                    zlab          = 'SW',+                    zlab          = 'PL',
                     grid          = F,                     grid          = F,
                     sphere.factor = 1))                     sphere.factor = 1))
Linha 1245: Linha 832:
                     box           = T,                     box           = T,
                     xlab          = 'SL',                     xlab          = 'SL',
-                    ylab          = 'PL', +                    ylab          = 'SW', 
-                    zlab          = 'SW',+                    zlab          = 'PL',
                     grid          = F,                     grid          = F,
                     sphere.factor = 1))                     sphere.factor = 1))
Linha 1258: Linha 845:
                     surface       = T,                     surface       = T,
                     xlab          = 'SL',                     xlab          = 'SL',
-                    ylab          = 'PL', +                    ylab          = 'SW', 
-                    zlab          = 'SW',+                    zlab          = 'PL',
                     grid          = F,                     grid          = F,
                     sphere.factor = 1))                     sphere.factor = 1))
Linha 1275: Linha 862:
                      box            = F,                      box            = F,
                      xlab           = 'SL',                      xlab           = 'SL',
-                     ylab           = 'PL', +                     ylab           = 'SW', 
-                     zlab           = 'SW',+                     zlab           = 'PL',
                      grid           = F,                      grid           = F,
                      sphere.factor  = 1))                      sphere.factor  = 1))

QR Code
QR Code pessoais:jcfaria (generated for current page)