【发布时间】:2016-02-19 02:14:28
【问题描述】:
样条线对我来说还是相当新的。
我正在尝试弄清楚如何创建薄板样条曲线的三维图,类似于出现在《统计学习简介》(http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Sixth%20Printing.pdf) 第 24-25 页上的可视化。我在 scatterplot3d 中工作,为了便于重现数据,让我们使用“树”数据集代替我的实际数据。
设置初始情节很简单:
data(trees)
attach(trees)
s3d <- scatterplot3d(Girth, Height, Volume,
type = "n", grid = FALSE, angle = 70,
zlab = 'volume',
xlab = 'girth',
ylab = 'height',
main = "TREES") # blank 3d plot
我使用字段库中的 Tps 函数来创建样条:
my.spline <- Tps(cbind(Girth, Height), Volume)
我可以开始直观地表示样条线了:
for(i in nrow(my.spline$x):1) # for every girth . . .
s3d$points3d(my.spline$x[,1], rep(my.spline$x[i,2], times=nrow(my.spline$x)), # repeat every height . . .
my.spline$y, type='l') # and match these values to a predicted volume
但是当我尝试通过沿高度访问的交叉阴影线来完成样条时,结果变得有问题:
for(i in nrow(my.spline$x):1) # for every height . . .
s3d$points3d(rep(my.spline$x[i,1], times=nrow(my.spline$x)), my.spline$x[,2], # repeat every girth . . .
my.spline$y, type='l') # and match these values to a predicted volume
我越看得到的图,就越不确定我是否使用了来自 my.spline 的正确数据。
请注意,这个项目使用 scatterplot3d 进行其他可视化,所以我喜欢这个包作为预先存在的团队选择的结果。任何帮助将不胜感激。
【问题讨论】:
-
一般你应该避免
attach()。它出现在许多较旧的教程中,但除了简单的示例之外,它经常会导致问题并使事情难以跟踪。 -
这是一个简单的例子,所以 attach() 不会引起任何问题,实际上使代码更容易阅读。
-
是的 - 在一个简单的例子中没有问题。此外,
data(trees)是不必要的行。几年来,延迟加载数据已成为常态,因此几乎总是不需要调用data()。