我想可视化装有薄板回归样条的三阶交互
I would like to visualize the third order interaction fitted with thin-plate regression splines
我是R的初学者,所以这可能是一个简单的问题。
我现在正在尝试使用薄板回归样条拟合 4 维点。一个变量为目标变量,三个变量为解释变量。
我制作了一个具有三阶交互作用的模型并将数据拟合到此。
library(mgcv)
dat <- read.csv('../data//data.csv')
model <- gam(Y ~ s(x1, x2, x3), data=dat)
给定x3,我想可视化一个样条曲线或估计等高线图的三维图形,但是我该怎么做呢?
如果你能回答的话会很有帮助。
谢谢
这是示例数据。
n = 100
x1 <- runif(n, min = 0, max = 100)
x2 <- runif(n, min = 0, max = 100)
x3 <- runif(n, min = 0, max = 100)
Y = numeric(n)
for(i in 1:n){
Y[i] <- x1[i]**0.5*x2[i]**2*x3[i]/10000
}
dat = data.frame(Y=Y, x1=x1, x2=x2, x3=x3)
我用这个数据做薄平面回归样条。
model <- gam(Y ~ s(x1, x2, x3, k= 50), data=dat)
然后,我想得到一个三维薄平面回归样条的拟合曲线,或者x3 = 25时回归样条估计的等高线图,例如
要绘制等高线图,可以使用 contour(x, y, z, ...)。 z 是您的数据矩阵(在您的情况下,Y[x1,x2, ]、x 和 y 是从 0 到 1 的索引向量,长度为 nrow(Y[x1,x2, ]) 和 ncol(Y[x1,x2 , ]).
您应该能够像这样使用它:
contour( x = seq(0, 1, length.out = length(x1)), y = seq(0, 1, length.out = length(x2)), z = Y[x1,x2, ] )
参考d0d0的回答找到了解决方法
n=100
const=25
x = y = seq(0, n, 1)
f = function(x,y){
dtmp <- data.frame(x1=(x), x2=(y), x3=(const))
pred <- predict.gam(model, dtmp)
}
z = outer(x, y, f)
contour(x,y,z)
我是R的初学者,所以这可能是一个简单的问题。
我现在正在尝试使用薄板回归样条拟合 4 维点。一个变量为目标变量,三个变量为解释变量。
我制作了一个具有三阶交互作用的模型并将数据拟合到此。
library(mgcv)
dat <- read.csv('../data//data.csv')
model <- gam(Y ~ s(x1, x2, x3), data=dat)
给定x3,我想可视化一个样条曲线或估计等高线图的三维图形,但是我该怎么做呢?
如果你能回答的话会很有帮助。 谢谢
这是示例数据。
n = 100
x1 <- runif(n, min = 0, max = 100)
x2 <- runif(n, min = 0, max = 100)
x3 <- runif(n, min = 0, max = 100)
Y = numeric(n)
for(i in 1:n){
Y[i] <- x1[i]**0.5*x2[i]**2*x3[i]/10000
}
dat = data.frame(Y=Y, x1=x1, x2=x2, x3=x3)
我用这个数据做薄平面回归样条。
model <- gam(Y ~ s(x1, x2, x3, k= 50), data=dat)
然后,我想得到一个三维薄平面回归样条的拟合曲线,或者x3 = 25时回归样条估计的等高线图,例如
要绘制等高线图,可以使用 contour(x, y, z, ...)。 z 是您的数据矩阵(在您的情况下,Y[x1,x2, ]、x 和 y 是从 0 到 1 的索引向量,长度为 nrow(Y[x1,x2, ]) 和 ncol(Y[x1,x2 , ]).
您应该能够像这样使用它:
contour( x = seq(0, 1, length.out = length(x1)), y = seq(0, 1, length.out = length(x2)), z = Y[x1,x2, ] )
参考d0d0的回答找到了解决方法
n=100
const=25
x = y = seq(0, n, 1)
f = function(x,y){
dtmp <- data.frame(x1=(x), x2=(y), x3=(const))
pred <- predict.gam(model, dtmp)
}
z = outer(x, y, f)
contour(x,y,z)