2016-08-16 2 views
0

J'ai deux tracés 3D, dont un a été réalisé en utilisant des valeurs ajustées en utilisant la bibliothèque p3d (côté gauche). Dans la seconde j'ai utilisé predict puis interp commande du paquet akima et tracé en utilisant persp (côté droit). Les images ne montrent pas le même angle, mais c'est la meilleure façon de montrer que l'une est plate et l'autre courbe.Différence entre les tracés 3D utilisant les valeurs ajustées et prédites

enter image description here

Je voudrais savoir pourquoi le graphique montrant les valeurs ajustées a une courbe et l'autre avec des valeurs prédites ne l'ont pas.

premier code graphique:

library(p3d) 
Init3d(family="serif", cex = 1) 
Plot3d(TCL ~ reLDM+yr, nest6) 
Axes3d() 
fit = lm(TCL ~ reLDM+yr+I(yr^2)+I(reLDM*yr)+I(reLDM*yr^2), nest6) 
Fit3d(fit) 

Deuxième code graphique:

library(akima)  
x <- nest6$reLDM 
y <- nest6$yr 
y2 <- y^2 
z <- nest6$TCL 
m <- lm(z ~ x*y+y2+x:y2) 

i <- 25 
xtemp <- seq(min(x),max(x),length.out=i) 
xrange <- rep(xtemp,times=i) 
ytemp <- seq(min(y),max(y),length.out=i) 
yrange <- rep(ytemp,each=i) 
y2temp <- seq(min(y2),max(y2),length.out=i) 
y2range <- rep(y2temp,each=i) 
newdata <- data.frame(x=xrange,y=yrange,y2=y2range) 
zhat <- predict(m,newdata=newdata) 
xyz <- interp(xrange,yrange,zhat) 
jet.colors <- colorRampPalette(c("yellow", "red", "blue")) 
nbcol <- 500 
color <- jet.colors(nbcol) 
nrz <- length(xyz[[1]]) 
ncz <- length(xyz[[2]]) 
z<-xyz[[3]] 
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz] 
facetcol <- cut(zfacet, nbcol) 
quartz() 
persp(xyz,xlab="x",ylab="y",zlab="z", cex.lab = 1,cex.axis = 1, 
     theta = 35, phi = 50,col=color[facetcol], border="grey40", ticktype = "detailed", zlim=c(1,7)) 

Vous trouverez l'ensemble de données dans ce lien, le gros donc il n'a pas été possible de le poster ici: https://www.dropbox.com/s/czdascoq02alm46/TCL16_26.csv?dl=0

Mon modèle a été fait en utilisant lm(), j'ai lu dans un article qu'il n'y a pas de différence entre les fonctions ajustées et prédites dans un modèle de régression linéaire simple. Cependant, en akima j'utilise la commande interp dont je comprends qu'elle estime les valeurs entre deux points de données connus (remplit essentiellement les lacunes de données manquantes).

Une autre différence que j'ai trouvée est que le graphique des valeurs prédites utilise de nouvelles données de la plage de valeurs maximale et minimale dans l'ensemble de données d'origine. Pour les valeurs ajustées, il y a une valeur par observation.

J'ai des problèmes à expliquer cela à mon superviseur, il pense que ce n'est pas une raison suffisante. Quelle serait une meilleure explication pourquoi la courbe manque dans le second graphique?

Répondre

1

Remplacer

y2temp <- seq(min(y2),max(y2),length.out=i) 

avec

y2temp <- ytemp^2 

Vous obtiendrez une courbe similaire.

En utilisant les données simulées:

enter image description here