Hi All, Does anyone know of a function to plot a regression surface for two predictors? RSiteSearch()s and findFn()s have not turned up what I was looking for. I was thinking something along the lines of: http://mallit.fr.umn.edu/fr5218/reg_refresh/images/fig9.gif
I like the rgl package because showing it from different angles is nice for demonstrations. I started to write my own, but it has some issues (non functioning code start below), and I figured before I tried to work out the kinks, I would ask for the list's feedback. Any comments or suggestions (about functions or preferred idioms for what I tried below, or...) are greatly appreciated. Josh RegSurfaceDemo <- function(formula, data, xlim, ylim, zlim, resolution = 100) { require(rgl) ## This cannot be the proper way to extract variable names from formula vars <- rownames(attr(terms(formula), "factors")) ## if no limits set, make them nearest integer to ## .75 the lowest value and 1.25 the highest ranger <- function(x) { as.integer(range(x) * c(.75, 1.25)) } if(is.null(xlim)) {xlim <- ranger(data[, vars[2]])} if(is.null(ylim)) {ylim <- ranger(data[, vars[3]])} if(is.null(zlim)) {zlim <- ranger(data[, vars[1]])} ## This does not actually work because the data frame ## does not get named properly (actually it throws an error) ##f <- function (x, y) { ## predict(my.model, newdata = data.frame(vars[2] = x, vars[3] = y)) ##} ## Fit model my.model <- lm(formula = formula, data = data) ## Create X, Y, and Z grids X <- seq(from = xlim[1], to = xlim[2], length.out = resolution) Y <- seq(from = ylim[1], to = ylim[2], length.out = resolution) Z <- outer(X, Y, f) ## Create 3d scatter plot and add the regression surface open3d() with(data = data, plot3d(x = vars[2], y = vars[3], z = vars[1], xlim = xlim, ylim = ylim, zlim = zlim)) par3d(ignoreExtent = TRUE) surface3d(X, Y, Z, col = "blue", alpha = .6) par3d(ignoreExtent = FALSE) return(summary(my.model)) } -- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.