UCLA Academic Technology Services HomeServicesClassesContactJobs
Search

Splus Textbook Examples
Visualizing Data: Chapter 5, Hypervariate Data


Figure 5.1
env <- environmental
env$ozone <- env$ozone ^ (1/3)
splom(~env,
  sub = list("Figure 5.1",cex=.8),
  varnames = c("Cube Root\nOzone\n(cube root ppb)",
    "Solar\nRadiation\n(langleys)",
    "Temperature\n(Degrees Fahrenheit)",
    "Wind Speed\n(mph)"))

Figure 5.2
attach(environmental)
Temperature <- equal.count(temperature, 4, 1/2)
Wind <- equal.count(wind, 4, 1/2)
ans <- xyplot((environmental$ozone^(1/3)) ~ radiation | Temperature * Wind,
  prepanel = function(x, y) 
    prepanel.loess(x, y, span = 1),
  panel = function(x, y){
    panel.grid(h = 2, v = 2)
    panel.xyplot(x, y, cex = 1)
    panel.loess(x, y, span = 1)
  },
  aspect = 2,
  sub = list("Figure 5.2",cex=.8),
  xlab = "Solar Radiation (langleys)",
  ylab = "Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.3
attach(environmental)
Temperature <- equal.count(temperature, 4, 1/2)
Wind <- equal.count(wind, 4, 1/2)
ans <- xyplot((environmental$ozone^(1/3)) ~ radiation | Temperature * Wind,
  prepanel = function(x, y) 
    prepanel.loess(x, y, span = 1),
  panel = function(x, y){
    panel.grid(h = 2, v = 2)
    panel.xyplot(x, y, cex = 1)
    panel.loess(x, y, span = 1)
  },
  aspect = 2,
  sub = list("Figure 5.3",cex=.8),
  xlab = "Solar Radiation (langleys)",
  ylab = "Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.4
attach(environmental)
Radiation <- equal.count(radiation, 4, 1/2)
Temperature <- equal.count(temperature, 4, 1/2)
ans <- xyplot((environmental$ozone^(1/3)) ~ wind | Radiation * Temperature,
  prepanel = function(x, y) 
    prepanel.loess(x, y, span = 1),
  panel = function(x, y){
    panel.grid(h = 2, v = 2)
    panel.xyplot(x, y, cex = 1)
    panel.loess(x, y, span = 1)
  },
  aspect = 2,
  sub = list("Figure 5.4",cex=.8),
  xlab = "Wind Speed (mph)",
  ylab = "Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.5
attach(environmental)
Radiation <- equal.count(radiation, 4, 1/2)
Wind <- equal.count(wind, 4, 1/2)
ans <- xyplot((environmental$ozone^(1/3)) ~ temperature | Radiation * Wind,
  prepanel = function(x, y)
    prepanel.loess(x, y, span = 1),
  panel = function(x, y) {
    panel.grid(h = 2, v = 2)
    panel.xyplot(x, y, cex = 1)
    panel.loess(x, y, span = 1)
  },
  aspect = 2,
  sub = list("Figure 5.5",cex=.8),
  xlab = "Temperature (degrees F)",
  ylab = "Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.6
attach(environmental)
env.tm <- loess((environmental$ozone^(1/3))~wind,span=2/3,degree=1,surface="d")
ws <- seq(min(wind),35,length=50)
env.wfit <- predict(env.tm, ws)
xlim <- range(ws)
ylim <- range(env.wfit, environmental$ozone^(1/3))
ans <- xyplot((environmental$ozone^(1/3)) ~ wind, 
  prepanel = substitute(function(x, y)
    list(dx = diff(ws), dy = diff(env.wfit))),
  panel = substitute(function(x,y){
    add.line <- trellis.par.get("add.line")
    panel.xyplot(x,y)
    lines(ws, env.wfit, lwd = add.line$lwd, 
      lty = add.line$lty, col = add.line$col)
  }),
  xlim = xlim, 
  ylim = ylim,
  aspect = 1,
  sub = list("Figure 5.6",cex=.8),
  xlab="Wind Speed (mph)",
  ylab="Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.7
left <- xyplot(environmental$r ~ environmental$t,
  aspect=1,
  panel=function(x,y){
    panel.xyplot(x,y)
    panel.abline(h=range(y))
  },
  sub = list("Figure 5.7",cex=.8),
  xlab = "Temperature (degrees F)",
  ylab = "Radiation (langleys)")
right <- xyplot(environmental$t ~ environmental$w,
  aspect=1,
  panel=function(x,y){
    panel.xyplot(x,y)
    panel.abline(v=c(4,16),h=c(61,92))
    panel.abline(112,-2)
    panel.abline(87,-2)
  },
  sub = list("Figure 5.7",cex=.8),
  xlab = "Wind Speed (mph)",
  ylab = "Temperature (degrees F)")
print(left, split = c(1,1,2,1), more = T)
print(right, split = c(2,1,2,1))
invisible()

Figure 5.8
attach(environmental)
ind <- (wind > 4)&
  (wind < 16)&
  (temperature < (-2 * wind + 112))&
  (temperature > (-2 * wind + 87))&
  (temperature > 61)&
  (temperature < 92)
splom(~environmental[ind, 2:4],
   sub = list("Figure 5.8",cex=.8),
  varnames = c("Solar\nRadiation\n(langleys)",
    "Temperature\n(Degrees Fahrenheit)",
    "Wind Speed\n(mph)"))

Figure 5.9
attach(environmental)
env.m <- loess((environmental$ozone^(1/3))~radiation*temperature*wind,
  parametric=c("radiation","wind"),
  span = 1,
  degree = 2)
r.marginal <- seq(min(radiation),max(radiation),length=50)
t.marginal <- seq(61,92,length=5)
w.marginal <- seq(4,16,length=5)
twr.marginal <- list(temperature=t.marginal,wind=w.marginal,radiation=r.marginal)
twr.grid <- expand.grid(twr.marginal)
env.fit <- predict(env.m,twr.grid)
ind <- (twr.grid$wind>=4)&
  (twr.grid$wind<=16)&
  (twr.grid$temperature<(-2*twr.grid$wind+112))&
  (twr.grid$temperature>(-2*twr.grid$wind+87))&
  (twr.grid$temperature>=61)&
  (twr.grid$temperature<=92)
env.fit[!ind] <- NA
Temp <- twr.grid$temperature
Wind <- twr.grid$wind
ans <- xyplot(env.fit ~ twr.grid$radiation | Temp * Wind,
  panel = function(x, y)
    if(!all(is.na(y))) {        panel.grid(h = 2, v = 2)
      panel.xyplot(x, y, type = "l")
    },
  aspect = 2,
  sub = list("Figure 5.9",cex=.8),
  xlab = "Solar Radiation (langleys)",
  ylab = "Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.10
attach(environmental)
env.m <- loess((environmental$ozone^(1/3))~radiation*temperature*wind,
  parametric=c("radiation","wind"),
  span = 1,
  degree = 2)
r.marginal <- seq(min(radiation),max(radiation),length=5)
t.marginal <- seq(61,92,length=5)
w.marginal <- seq(4,16,length=50)
twr.marginal <- list(temperature=t.marginal,wind=w.marginal,radiation=r.marginal)
twr.grid <- expand.grid(twr.marginal)
env.fit <- predict(env.m,twr.grid)
ind <- (twr.grid$wind>=4)&
  (twr.grid$wind<=16)&
  (twr.grid$temperature<(-2*twr.grid$wind+112))&
  (twr.grid$temperature>(-2*twr.grid$wind+87))&
  (twr.grid$temperature>=61)&
  (twr.grid$temperature<=92)
env.fit[!ind] <- NA
Radiation <- twr.grid$radiation
Temp <- twr.grid$temperature
ans <- xyplot(env.fit ~ twr.grid$wind | Radiation * Temp,
  panel=function(x, y) {
    panel.grid(h = 2, v = 2)
    panel.xyplot(x, y, type = "l")
  },
  aspect = 2,
  sub = list("Figure 5.10",cex=.8),
  xlab = "Wind Speed (mph)",
  ylab = "Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.11
attach(environmental)
env.m <- loess((environmental$ozone^(1/3))~wind*radiation*temperature,
  parametric=c("radiation","wind"),
  span = 1,
  degree = 2)
r.marginal <- seq(min(radiation),max(radiation),length=5)
t.marginal <- seq(61,92,length=50)
w.marginal <- seq(4,16,length=5)
#r.marginal <- seq(50,275,length=50)
twr.marginal <- list(temperature=t.marginal,wind=w.marginal,radiation=r.marginal)
twr.grid <- expand.grid(twr.marginal)
env.fit <- predict(env.m,twr.grid)
ind <- (twr.grid$wind>=4)&
  (twr.grid$wind<=16)&
  (twr.grid$temperature<(-2*twr.grid$wind+112))&
  (twr.grid$temperature>(-2*twr.grid$wind+87))&
  (twr.grid$temperature>=61)&
  (twr.grid$temperature<=92)
env.fit[!ind] <- NA
Radiation <- twr.grid$radiation
Wind <- twr.grid$wind
ans <- xyplot(env.fit ~ twr.grid$temperature | Radiation * Wind,
  panel = function(x, y) {
    panel.grid(h = 2, v = 2)
    panel.xyplot(x, y, type = "l")
  },
  aspect = 2,
  sub = list("Figure 5.11",cex=.8),
  xlab = "Temperature (Degrees Fahrenheit)",
  ylab = "Cube Root Ozone (cube root ppb)")
detach()
ans

Figure 5.12
attach(environmental)
env.m <- loess(environmental$ozone ~ radiation * temperature * wind,
  parametric = c("radiation", "wind"), span = 1, degree = 2)
ans <- xyplot(sqrt(abs(residuals(env.m))) ~ fitted.values(env.m),
  panel = function(x, y){
    panel.xyplot(x, y)
    panel.loess(x, y, span = 1, family = "g")
  },
  aspect = 1,
  las = 0, # tick labels parallel to axis
  sub = list("Figure 5.12",cex=.8),
  xlab = "Fitted Ozone (ppb)",
  ylab = "Square Root Absolute Residual Ozone (square root ppb)")
detach()
ans

Figure 5.13
attach(environmental)
env.m <- loess(logb(environmental$ozone,2) ~ radiation * temperature * wind,
  parametric = c("radiation", "wind"), span = 1, degree = 2)
ans <- xyplot(sqrt(abs(residuals(env.m))) ~ fitted.values(env.m),
  panel = function(x, y){
    panel.xyplot(x, y)
    panel.loess(x, y, span = 1, family = "g")
  },
  aspect = 1,
  las = 0, # tick labels parallel to axis
  sub = list("Figure 5.13",cex=.8),
  xlab = "Fitted Log Ozone (log 2 ppb)",
  ylab = "Square Root Absolute Residual\nLog Ozone (square root absolute log 2 ppb)")
detach()
ans

Figure 5.14
attach(environmental)
env.m <- loess((environmental$ozone^(1/3)) ~ radiation * temperature * wind,
  parametric = c("radiation", "wind"), span = 1, degree = 2, surface = "d")
ans <- xyplot(sqrt(abs(residuals(env.m))) ~ fitted.values(env.m),
  panel = function(x, y){
    panel.xyplot(x, y)
    panel.loess(x, y, span = 1, family = "g")
  },
  aspect = 1,
  las = 0, # tick labels parallel to axis
  ylim = c(0, 1.2),
  sub = list("Figure 5.14",cex=.8),
  xlab = "Fitted Cube Root Ozone (cube root ppb)",
  ylab = "Square Root Absolute Residual\nCube Root Ozone (sixth root ppb)")
detach()
ans

Figure 5.15
qqmath(~loess((ozone^(1/3))~radiation*temperature*wind,
    data=environmental, parametric=c("radiation","wind"), 
    span = 1, degree = 2)$residuals,
  prepanel = prepanel.qqmathline, 
  panel = function(x, y){
    panel.xyplot(x,y)
    panel.qqmathline(y, distribution = qnorm)
  },
  aspect=1,
  sub = list("Figure 5.15",cex=.8),
  xlab = "Unit Normal Quantile",
  ylab = "Cube Root Ozone (cube root ppb)")

Figure 5.16
rfs(loess((ozone^(1/3))~radiation*temperature*wind,
    data = environmental, parametric=c("radiation","wind"),
    span=1, degree=2),
  panel = function(x, y){
    panel.grid()
    panel.xyplot(x,y)
  },
  sub = list("Figure 5.16",cex=.8),
  aspect=1.5,
  ylab="Cube Root Ozone (cube root ppb)")

Figure 5.17
weight <- unlist(logb(hamster,2))
organ <- factor(unlist(col(hamster)),labels=names(hamster))
organ <- reorder.factor(organ,weight,median)
bwplot(organ ~ weight,
  aspect = 0.3,
  sub = list("Figure 5.17",cex=.8),
  xlab="Log Organ Weight (Log 2 grams)")

Figure 5.18
splom(~logb(hamster,2),
sub = list("Figure 5.18",cex=.8), varnames = names(hamster))

Figure 5.19
splom(~logb(hamster, 2), 
  varnames = names(hamster),
  sub = list("Figure 5.19",cex=.8),
  panel = function(x, y){
    plot.symbol <- trellis.par.get("plot.symbol")
    panel.xyplot(x[-38], y[-38])
    points(x[38], y[38], pch = "+", cex = 1.5,
      font = plot.symbol$font, col = plot.symbol$col)
  })

Figure 5.20
new.iris <- array(aperm(iris,c(1,3,2)),c(150,4))
set.seed(19)
for(i in 1:4)
  new.iris[,i] <- jitter(new.iris[,i])
variety <- factor(rep(dimnames(iris)[[3]],rep(50,3)))
n <- length(levels(variety))
splom(~new.iris,
  varnames = c("Sepal Length\n(cm)", "Sepal Width\n(cm)",
         "Petal Length\n(cm)", "Petal Width\n(cm)"),
  panel = panel.superpose,
  groups = variety,
  sub = list("Figure 5.20",cex=.8),
  key = list(points = Rows(trellis.par.get("superpose.symbol"), 1:n),
    text = list(paste("Iris", levels(variety))), 
    columns = n))
Image omitted
Figure 5.21
set.seed(19)
petal.length <- iris[,3,]
petal.width <- iris[,4,]
variety <- factor(rep(dimnames(iris)[[3]],rep(50,3)))
n <- length(levels(variety))
mea <- (logb(petal.length,2)+logb(petal.width,2))/2
dif <- jitter(logb(petal.length,2)-logb(petal.width,2), 2)
xyplot(dif ~ mea,
  panel = function(...){
    panel.superpose(...)
    panel.abline(v = c(0.4, 1.46))
  },
  groups = variety,
  aspect = 1,
  sub = list("Figure 5.21",cex=.8),
  xlab = "Size (log 2 cm)", 
  ylab = "Jittered Elongation (log 2 ratio)",
  key = list(points = Rows(trellis.par.get("superpose.symbol"), 1:n),
    text = list(paste("Iris", levels(variety))),
    columns = n))
Image omitted

How to cite this page

Report an error on this page

UCLA Researchers are invited to our Statistical Consulting Services
We recommend others to our list of Other Resources for Statistical Computing Help
These pages are Copyrighted (c) by UCLA Academic Technology Services


The content of this web site should not be construed as an endorsement of any particular web site, book, or software product by the University of California