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 [2007/02/28 12:00]
jcfaria
pessoais:jcfaria [2012/08/01 19:25] (atual)
jcfaria
Linha 1: Linha 1:
-====== ​Página WIKI de José Cláudio Faria ======+====== José Cláudio Faria ======
  
-{{pessoais:​i_in_the_beach_2007.png|125X210}}+{{  pessoais:​i_in_the_beach_2007.png}}
  
-Na Praia do Sul de Ilhéus/Bahia (janeiro de 2007refletindo profundamente sobre o R!!!+Eu na Praia do Sul de Ilhéus/BA, em janeiro de 2007refletindo profundamente sobre estatística computacional e o R!!! 
 + 
 +Brincadeiras a parte... 
 + 
 +**1. Quem sou** 
 + 
 +- Engenheiro Agrônomo 
 +- 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) 
 + 
 + 
 +**2. O que tenho feito profissionalmente** 
 + 
 +- Professor de estatística e pesquisador da Universidade Estadual de Santa Cruz - UESC/BA; 
 + 
 +- 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** 
 + 
 +- Gostaria de tê-lo encontrado desde o início de minha carreira na área de estatística computacional! 
 + 
 + 
 +**4. Sobre o futuro** 
 + 
 +- Desejo aprofundar os conhecimentos em análise multivariada de dados no ambiente R; 
 + 
 +- Trocar experiências com pessoas e equipes envolvidas nestas áreas.
  
 ===== Tinn-R ===== ===== Tinn-R =====
Linha 18: Linha 54:
     * {{pessoais:​tinn-r_figure_06.png|}}     * {{pessoais:​tinn-r_figure_06.png|}}
  
-===== Materiais ​didáticos ​sobre o R =====+===== Materiais sobre o R =====
  
 ==== Scripts ==== ==== Scripts ====
 +Todos os usuários estão automaticamente convidados a darem sugestões e alterarem contrutivamente todas as funções e scripts desta página. Solicito a gentileza de me enviar um [[joseclaudio.faria@terra.com.br | email]] comunicando as alterações.
 +
 === Introdução ao R === === Introdução ao R ===
  
Linha 559: Linha 597:
 } }
 </​code>​ </​code>​
 +
 +==== Funções úteis ====
 +=== Superfície de resposta ===
 +== Função plotlm3d ==
 +The simple, power and very flexible function **plotlm3d** enables you to plot 3d points and/or surfaces obtained from linear methods. It was adapted from scatter3d [[http://​socserv.socsci.mcmaster.ca/​jfox/​Misc/​Rcmdr/​index.html | Rcmdr package]] of John Fox and some [[ http://​www.stat.wisc.edu/​~deepayan | Deepayan Sarkar]] ideas.
 +
 +It requires the **rgl** package that you can download from [[http://​cran.r-project.org|CRAN]].
 +
 +<​code>​
 +#​===============================================================================
 +# Name           : plotlm3d
 +# Original author: John Fox (scatter3d from package Rcmdr)
 +# Changes ​       : Jose Claudio Faria and Duncan Murdoch
 +# Date (dd/mm/yy): 12/8/06 19:44:37
 +# Version ​       : v18
 +# Aim            : To plot 3d scatter, an or, surfaces with rgl package
 +#​===============================================================================
 + 
 +# Arguments:
 +# x                 ​variable for horizontal axis.
 +# y                 ​variable for out-of-screen axis.
 +# z                 ​variable for vertical axis (response).
 +# surface ​          plot surface(s) (TRUE or FALSE).
 +# model             one or more linear model to fit ('z ~ x + y' is the default).
 +# groups ​           if NULL (the default), no groups are defined; if a factor,
 +#                   a different surface or set of surfaces is plotted for each
 +#                   level of the factor; in this event, the colours in plane.col
 +#                   are used successively for the points and surfaces.
 +# model.by.group ​   if TRUE the function will adjust one model for each level
 +#                   of groups; the order of the models must be the same of the
 +#                   level of the.
 +# model.summary ​    print summary or summaries of the model(s) fit (TRUE or FALSE).
 +# simple.axes ​      ​whether to draw sinple axes (TRUE or FALSE).
 +# box               ​whether to draw a box (TRUE or FALSE).
 +# xlab,           
 +# ylab,           
 +# zlab              axis labels.
 +# surface.col ​      ​vector of colours for regression planes, used in the order
 +#                   ​specified by fit.
 +# point.col ​        ​colour of points.
 +# grid.col ​         colour of grid lines on the regression surface(s).
 +# grid             plot grid lines on the regression surface(s) (TRUE or FALSE).
 +# grid.lines ​       number of lines (default, 26) forming the grid, in each of
 +#                   the x and z directions.
 +# sphere.factor ​    ​relative size factor of spheres representing points; the
 +#                   ​default size is dependent on the scale of observations.
 +# threshold ​        if the actual size of the spheres is less than the threshold,
 +#                   ​points are plotted instead.
 +# speed             ​revolutions of the plot per second.
 +# revolutions ​      ​number of full revolutions of the display.
 + 
 +plotlm3d <- function (x, y, z,
 +                      surface ​       = T,
 +                      model          = 'z ~ x + y',
 +                      groups ​        = NULL,
 +                      model.by.group = F,
 +                      model.summary ​ = F,
 +                      simple.axes ​   = T,
 +                      box            = F,
 +                      xlab           = deparse(substitute(x)),​
 +                      ylab           = deparse(substitute(y)),​
 +                      zlab           = deparse(substitute(z)),​
 +                      surface.col ​   = c('​blue',​ '​orange',​ '​red',​ '​green',​
 +                                         '​magenta',​ '​cyan',​ '​yellow',​ '​gray',​ '​brown'​),​
 +                      point.col ​     = '​yellow',​
 +                      grid.col ​      = material3d("​color"​),​
 +                      grid           = T,
 +                      grid.lines ​    = 26,
 +                      sphere.factor ​ = 1,
 +                      threshold ​     = 0.01,
 +                      speed          = 0.5,
 +                      revolutions ​   = 0)
 +{
 +  require(rgl)
 +  require(mgcv)
 +  summaries <- list()
 + 
 +  if ((!is.null(groups)) && model.by.group)
 +    if (!nlevels(groups) == length(model))
 +      stop('​Model number is different of the number of groups'​)
 + 
 +  if ((!is.null(groups)) && (nlevels(groups) > length(surface.col)))
 +    stop('​Number of groups exceeds number of colors'​)
 + 
 +  if ((!is.null(groups)) && (!is.factor(groups)))
 +    stop('​groups variable must be a factor.'​)
 + 
 +  xlab; ylab; zlab
 +
 +  valid <- if (is.null(groups))
 +    complete.cases(x,​ y, z)
 +  else
 +    complete.cases(x,​ y, z, groups)
 + 
 +  x <- x[valid]
 +  y <- y[valid]
 +  z <- z[valid]
 +  ​
 +  if (!is.null(groups))
 +    groups <- groups[valid]
 + 
 +  levs <- levels(groups)
 +  size <- max(c(x,​y,​z))/​100 * sphere.factor
 + 
 +  if (is.null(groups)) {
 +    if (size > threshold)
 +      spheres3d(x,​ y, z, color = point.col, radius = size)
 +    else
 +      points3d(x, y, z, color = point.col)
 +  }
 +  else {
 +    if (size > threshold)
 +      spheres3d(x,​ y, z, color = surface.col[as.numeric(groups)],​ radius = size)
 +    else
 +      points3d(x, y, z, color = surface.col[as.numeric(groups)])
 +  }
 +
 +  aspect3d(c(1,​ 1, 1))
 +
 +  if (surface) {
 +    xvals <- seq(min(x), max(x), length = grid.lines)
 +    yvals <- seq(min(y), max(y), length = grid.lines)
 +    ​
 +    dat  <- expand.grid(x = xvals, y = yvals)
 + 
 +    for (i in 1:​length(model)) {
 +      if (is.null(groups)) {
 +        mod <- lm(formula(model[i]))
 + 
 +        if (model.summary)
 +          summaries[[model[i]]] <- summary(mod)
 +
 +        zhat <- matrix(predict(mod,​ newdata = dat), grid.lines, grid.lines)
 +        surface3d(xvals,​ yvals, zhat, color = surface.col[i],​ alpha = 0.5, lit = F)
 +
 +        if (grid)
 +          surface3d(xvals,​ yvals, zhat, color = grid.col, alpha = 0.5,
 +            lit = F, front = '​lines',​ back = '​lines'​)
 +      }
 +      else { # groups is not NULL
 +        if (!model.by.group) {
 +          for (j in 1:​length(levs)) {
 +            mod <- lm(formula(model[i]),​ subset = (groups == levs[j]))
 + 
 +            if (model.summary)
 +              summaries[[paste(model[i],​ '​.',​ levs[j], sep = ''​)]] <- summary(mod)
 + 
 +            zhat <- matrix(predict(mod,​ newdata = dat), grid.lines, grid.lines)
 +            surface3d(xvals,​ yvals, zhat, color = surface.col[j],​ alpha = 0.5, lit = F)
 + 
 +            if (grid)
 +             ​surface3d(xvals,​ yvals, zhat, color = grid.col, alpha = 0.5,
 +                lit = F, front = '​lines',​ back = '​lines'​)
 + 
 +            texts3d(min(x),​ min(y), predict(mod,​ newdata = data.frame(x = min(x), y = min(y),
 +              groups = levs[j])), paste(levs[j],​ ' '), adj = 1, color = surface.col[j])
 +          }
 +        }
 +        else { # model.by.group is TRUE
 +          mod <- lm(formula(model[i]),​ subset = (groups == levs[i]))
 + 
 +          if (model.summary)
 +            summaries[[paste(model[i],​ '​.',​ levs[i], sep = ''​)]] <- summary(mod)
 + 
 +          zhat <- matrix(predict(mod,​ newdata = dat), grid.lines, grid.lines)
 + 
 +          surface3d(xvals,​ yvals, zhat, color = surface.col[i],​ alpha = 0.5, lit = F)
 + 
 +          if (grid)
 +            surface3d(xvals,​ yvals, zhat, color = grid.col, alpha = 0.5,
 +              lit = F, front = '​lines',​ back = '​lines'​)
 + 
 +          texts3d(min(x),​ min(y), predict(mod,​ newdata = data.frame(x = min(x), y = min(y),
 +            groups = levs[i])), paste(levs[i],​ ' '), adj = 1, color = surface.col[i])
 +        }
 +      }
 +    }
 +  }
 +  if(simple.axes) {
 +    axes3d(c('​x',​ '​y',​ '​z'​))
 +    title3d(xlab = xlab, ylab = ylab, zlab = zlab)
 +  }
 +  else
 +    decorate3d(xlab = xlab, ylab = ylab, zlab = zlab, box = box)
 +
 +  if (revolutions > 0) {
 +    start <- proc.time()[3]
 +    startMatrix <- par3d("​userMatrix"​)
 +    while ((theta <- speed*(proc.time()[3] - start))/​2/​pi < revolutions) {
 +      rgl.viewpoint(userMatrix = rotate3d(startMatrix,​ theta, 0, 0, 1))
 +    }
 +  }
 +  if (model.summary)
 +    return(summaries)
 +  else
 +    return(invisible(NULL))
 +}
 +</​code>​
 +
 +== Usando a função plotlm3d ==
 +<​code>​
 +#​===============================================================================
 +# Name           : Script to test plotlm3d
 +# Author ​        : Jose Claudio Faria and Duncan Murdoch
 +# Date (dd/mm/yy): 2012/07/01
 +# Version ​       : v18
 +# Aim            : To plot 3d scatter, an or, surfaces with rgl package
 +#​===============================================================================
 +
 +# mtrace(plotlm3d)
 +# mtrace.off
 +
 +# Example 1
 +open3d()
 +rgl.bringtotop(stay = T)
 +with(iris, plotlm3d(Sepal.Length,​ Sepal.Width,​ Petal.Length,​
 +                    surface ​      = F,
 +                    groups ​       = Species,
 +                    xlab          = '​SL',​
 +                    ylab          = '​SW',​
 +                    zlab          = '​PL',​
 +                    grid          = F,
 +                    sphere.factor = 1))
 +
 +# Example 2
 +open3d()
 +rgl.bringtotop(stay = T)
 +with(iris, plotlm3d(Sepal.Length,​Sepal.Width,​ Petal.Length,​
 +                    model         = c('z ~ x + y',
 +                                      'z ~ x + y + I(x^2) + I(y^2) + I(x*y)'​),​
 +                    surface ​      = T,
 +                    groups ​       = Species,
 +                    simple.axes ​  = F,
 +                    box           = T,
 +                    xlab          = '​SL',​
 +                    ylab          = '​SW',​
 +                    zlab          = '​PL',​
 +                    grid          = F,
 +                    sphere.factor = 1))
 +
 +# Example 3
 +open3d()
 +rgl.bringtotop(stay = T)
 +with(iris, plotlm3d(Sepal.Length,​Sepal.Width,​ Petal.Length,​
 +                    model         = c('z ~ x + y',
 +                                      'z ~ x + y + I(x^2) + I(y^2) + I(x*y)'​),​
 +                    surface ​      = T,
 +                    xlab          = '​SL',​
 +                    ylab          = '​SW',​
 +                    zlab          = '​PL',​
 +                    grid          = F,
 +                    sphere.factor = 1))
 +
 + # Example 4
 + ​open3d()
 + ​rgl.bringtotop(stay = T)
 + ​with(iris,​ plotlm3d(Sepal.Length,​ Sepal.Width,​ Petal.Length,​
 +                     ​model ​         = c('z ~ x + y', ​                           # to setosa
 +                                        'z ~ x + y + I(x^2) + I(y^2) + I(x*y)',​ # to versicolor
 +                                        'z ~ I(x^3) + I(y^3)'​), ​                # to virginica
 +                     ​groups ​        = Species,
 +                     ​model.by.group = T,
 +                     ​simple.axes ​   = F,
 +                     ​box ​           = F,
 +                     ​xlab ​          = '​SL',​
 +                     ​ylab ​          = '​SW',​
 +                     ​zlab ​          = '​PL',​
 +                     ​grid ​          = F,
 +                     ​sphere.factor ​ = 1))
 +
 +# Example 5: Netter
 +x = c( 274,  180,  375,  205,   ​86, ​ 265,   ​98, ​ 330,  195,   53,
 +       ​430, ​ 372,  236,  157,  370)
 +y = c(2450, 3254, 3802, 2838, 2347, 3782, 3008, 2450, 2137, 2560,
 +      4020, 4427, 2660, 2088, 2605)
 +z = c( 162,  120,  223,  131,   ​67, ​ 169,   ​81, ​ 192,  116,   55,
 +       ​252, ​ 232,  144,  103,  212)
 +
 +mreg  = lm(z ~ x + y)
 +ndata = data.frame(x = c(150, 274, 220, 370), y = c(4000, 2800, 3500, 3100))
 +zpred = predict(mreg,​ newdata = ndata, se.fit = F)
 +
 +open3d()
 +rgl.bringtotop(stay = T)
 +plotlm3d(x, y, z,
 +         ​surface = T,
 +         ​model ​  = 'z ~ x + y',
 +         ​xlab ​   = '​x',​
 +         ​ylab ​   = '​y',​
 +         ​zlab ​   = '​z'​)
 +spheres3d(x = c(150, 274, 220, 370), y = c(4000, 2800, 3500, 3100), zpred,
 +          col = '​red',​ radius = 60)
 +</​code>​
 +

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