Как изменить регрессию плоской поверхности в криволинейную поверхность в r? - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь изменить плоскую поверхность на изогнутую, но это сложно.

Глядя на график рассеяния, поверхность должна быть изогнутой, а не плоской. Как я могу изменить свой код?

Код и картинка ниже.

Мне очень жаль, что я не могу присоединиться из-за большого количества файлов данных. Я думаю, что функция lm, вероятно, создает эту плоскость. Есть идея?

Спасибо!

library(scatterplot3d)
library(plot3D)
library(readxl)

RoomA <- read_excel("Data_without_outlier_RoomA.xlsx")


# x, y, z variables
x <- RoomA$Ammonia
y <- RoomA$Ventilation
z <- RoomA$Emissions

# Compute the linear regression (z = ax + by + d)
fit <- lm(z ~ x + y)
# predict values on regular xy grid
grid.lines = 25
x.pred <- seq(min(x), max(x), length.out = grid.lines)
y.pred <- seq(min(y), max(y), length.out = grid.lines)
xy <- expand.grid( x = x.pred, y = y.pred)
z.pred <- matrix(predict(fit, newdata = xy), 
                 nrow = grid.lines, ncol = grid.lines)
# fitted points for droplines to surface
fitpoints <- predict(fit)
# scatter plot with regression plane
scatter3D(x, y, z, pch = 20, cex = 1.5,
          theta = 320, phi = 25, ticktype = "detailed",
          xlab = "", ylab = "", zlab = "",  
          surf = list(x = x.pred, y = y.pred, z = z.pred,  
                      facets = NA), main = "Room A")

enter image description here

...