library(earth)
y <- cumsum(sample(c(-1, 1),100, TRUE))
p1 <- cumsum(sample(c(-1, 1),100, TRUE))
p2 <- cumsum(sample(c(-1, 1),100, TRUE))
p3 <- cumsum(sample(c(-1, 1),100, TRUE))
n1 <- cumsum(sample(c(-1, 1),100, TRUE))
n2 <- cumsum(sample(c(-1, 1),100, TRUE))
df1 <- data.frame(y,p1,p2,p3,n1,n2)
df1
我使用地球进行非线性回归。我有一些限制 第一个变量中的最大样条数为2,第二个变量为3,第三个变量为4个等。此外,p变量必须为正斜率,n个变量为负斜率。
我可以为样条线数设置全局最大值:
fit <- earth(y ~ ., data = df1,nprune=50,trace=5)
但我在设置每个变量的最大样条数和斜率符号时遇到问题。我试过了:
fit <- earth(y ~ ., data = df1,nprune=c(2,3,4,5,6))
plotmo(fit)
summary(fit, digits = 2, style = "pmax")
但是我收到了错误。
如何控制每个变量的最大样条数和斜率符号,以避免虚假回归?
我在想,可能有一种方法可以在模型选择过程之前设置条件。可能通过对地球功能进行一些微小的改动,但我还没有能够做到这一点。此功能已隐藏,但可以按以下方式查看:
要查看隐藏的S3功能:
methods(earth)
getAnywhere(earth.default)
getAnywhere(earth.formula)
以下是查看hiddden S3功能的链接: How can I view the source code for a function?
要查看所有代码(R,C,Fortran等),请从CRAN下载.tar.gz源代码包,将其解压缩,并在&#34; R&#34;中提供R源代码。子目录。
也: cerebralmastication.com/2009/02/finding-the-source-in-r
查看S4功能使用:
showMethods()
getMethod()
感谢您的帮助。