每当我尝试在gam
函数中使用caret.train
作为方法时,我都会遇到错误。
fit<- train(P~log(DR)+log(L2M)+s(TSM)+s(TH)+s(II),data=training,method="gam")
Error: $ operator is invalid for atomic vectors
以下是警告之一:
In eval(expr, envir, enclos) :
model fit failed for Resample16: select=FALSE, method=GCV.Cp
为什么会这样?当我只使用gam
时,一切都很好,这只适用于caret
包。
dput(head(training))
输出:
structure(list(TT = c(1.810376, 0.089206, 0.623906, 0.676775,
0.206524, 1.014849), P = c(682L, 674L, 681L, 679L, 655L, 682L
), II = c(846000000L, 4790000L, 38600000L, 40600000L, 1379632L,
7526080L), WSM = c(5272L, 144L, 576L, 576L, 2336L, 18696L), TSM = c(168704L,
4608L, 18432L, 18432L, 74752L, 598272L), L2M = c(1.49e+09, 12600000,
85700000, 1.24e+08, 4214560, 33560200), DR = c(2.52e+09, 18400000,
1.3e+08, 1.8e+08, 5559030, 44681000), DW = c(11600000L, 5440000L,
39600000L, 46400000L, 4920550L, 36812430L), TH = c(32.032843125,
0.1880727305, 0.2003506939, 0.1983195715, 0.558498625, 0.495952125
)), .Names = c("TT", "P", "II", "WSM", "TSM", "L2M", "DR", "DW",
"TH"), row.names = c(3L, 5L, 7L, 8L, 9L, 10L), class = "data.frame")
答案 0 :(得分:1)
据我了解,caret
使用新的mgcv
包来gam
个功能;我附上了#34; gam&#34; - gam
库。当我分离gam
库并仅使用mgcv.gam
时,此问题已得到解决。