Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

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 anterior Revisão anterior
Próxima revisão
Revisão anterior
pessoais:jcfaria [2012/08/01 09:11]
jcfaria [section 5]
pessoais: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 591: Linha 598:
 </​code>​ </​code>​
  
-=== Tabelas e histogramas ​=== +==== Funções úteis ​====
-== 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 1208: Linha 796:
 </​code>​ </​code>​
  
-== Testar ​função plotlm3d ==+== 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 1228: 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 1244: 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 1257: 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 1274: 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)