Я пытаюсь изменить плоскую поверхность на изогнутую, но это сложно.
Глядя на график рассеяния, поверхность должна быть изогнутой, а не плоской. Как я могу изменить свой код?
Код и картинка ниже.
Мне очень жаль, что я не могу присоединиться из-за большого количества файлов данных. Я думаю, что функция 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")