Hello.
I am trying to plot a 3d surface given its equation. The R code is written
in blue.
So, let's say that I have the points x,y,z and I plot them. Also, I compute
its regression surface doing polynomical regression (fit)
library('rgl')
x <- c(-32.09652, -28.79491, -25.48977, -23.18746,-20.88934, -18.58220,
-17.27919)
y <- c(-32.096, -28.794, -25.489, -23.187,-20.889, -18.582, -17.279)
z <- c(12.16344, 28.84962, 22.36605, 20.13733, 79.50248, 65.46150,44.52274)
plot3d(x,y,z, type="s", col="red", size=1)
fit <- lm(z ~ poly(x,2) + poly(y,2))
In this way, I obtain the coefficients of the surface
coef(fit)
? (Intercept)?? poly(x, 2)1?? poly(x, 2)2
?3.900045e+01? 1.763363e+06? 6.683531e+05
? poly(y, 2)1?? poly(y, 2)2
-1.763303e+06 -6.683944e+05
So I want to repressent the surface
3.900045e+01 +1.763363e+06*x + 6.683531e+05*x*x
-1.763303e+06*y-6.683944e+05*y*y
How could I do it? Any idea??
Thank you very much!
------
Aurora Gonz?lez Vidal
Secci?n Apoyo Estad?stico.
Servicio de Apoyo a la Investigaci?n (SAI).
Vicerrectorado de Investigaci?n.
Universidad de Murcia
Edif. SACE . Campus de Espinardo.
30100 Murcia
@. aurora.gonzalez2 at um.es
T. 868 88 7315
F. 868 88 7302
www.um.es/sai
www.um.es/ae
[[alternative HTML version deleted]]
On 15/07/2015 7:16 AM, AURORA GONZALEZ VIDAL wrote:> Hello. > > I am trying to plot a 3d surface given its equation. The R code is written > in blue. > So, let's say that I have the points x,y,z and I plot them. Also, I compute > its regression surface doing polynomical regression (fit) > > library('rgl') > x <- c(-32.09652, -28.79491, -25.48977, -23.18746,-20.88934, -18.58220, > -17.27919) > y <- c(-32.096, -28.794, -25.489, -23.187,-20.889, -18.582, -17.279) > z <- c(12.16344, 28.84962, 22.36605, 20.13733, 79.50248, 65.46150,44.52274) > plot3d(x,y,z, type="s", col="red", size=1) > > fit <- lm(z ~ poly(x,2) + poly(y,2)) > > In this way, I obtain the coefficients of the surface > > coef(fit) > > (Intercept) poly(x, 2)1 poly(x, 2)2 > 3.900045e+01 1.763363e+06 6.683531e+05 > poly(y, 2)1 poly(y, 2)2 > -1.763303e+06 -6.683944e+05 > > So I want to repressent the surface > 3.900045e+01 +1.763363e+06*x + 6.683531e+05*x*x > -1.763303e+06*y-6.683944e+05*y*y > > How could I do it? Any idea?? > > Thank you very much!You need to write a function f of x and y that produces the fitted values. I haven't checked, but I'd assume it needs to take vector inputs and produce a vector of responses. Then persp3d(f) will draw the surface. See ?persp3d.function for details on setting the x and y ranges, etc. Duncan Murdoch
> -----Original Message----- > > I compute its regression surface doing polynomical regression (fit) > > ... > > fit <- lm(z ~ poly(x,2) + poly(y,2)) > >.....> > So I want to repressent the surface....> > How could I do it? Any idea?? > > You need to write a function f of x and y that produces the fitted values. I > haven't checked, but I'd assume it needs to take vector inputs and produce a > vector of responses.Perhaps worth noting that since the fit was produced by lm(), predict() will generate the surface values without a separate function. For example, if we said something like [sorry, not yet checked] xvals <- seq(-35, -15, 0.5) yvals <- seq(-35, -15, 0.5) new.data <- data.frame(x=rep(xvals, each=length(yvals)), y=rep(yvals, length(xvals) ) new.data$z <- predict(fit, newdata=new.data) #This should generate the predicted surface #Then: with(new.data, persp3d(x, y, z)) #ought to do the job.> Then > > > persp3d(f) > > will draw the surface. See ?persp3d.function for details on setting the x and y > ranges, etc. > > Duncan Murdoch > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.******************************************************************* This email and any attachments are confidential. Any use...{{dropped:8}}