-1
저는 r에 매우 익숙하며 함수를 작성하는 데 어려움이 있습니다. GAM에 적합한 것을 만들려고합니다. 선형 모델에 대한 예제를 발견했습니다. 완벽하게 작동합니다. 그러나 GAM에 동일한 구조를 사용하려고하면 오류가 발생합니다.is.data.frame (data)의 오류 : 'data =' 'object를 찾을 수 없습니다.
선형 모델 :
library(mgcv)
library(ggplot2)
theme_set(theme_bw())
set.seed(100)
dd <- data.frame(x=1:100,y=round(rnorm(100,mean=100),1), z=round(runif(100,1,4),1))
lm(y~x, weights=z, data=dd)$call
lm(formula = y ~ x, data = dd, weights = z)
f2 <- function(f,w,d){
do.call("lm", list(formula=as.formula(f), weights=as.name(w), data=as.name(d)))
}
f2("y~x", "z", "dd")$call
lm(formula = y ~ x, data = dd, weights = z)
와 GAM 버전
set.seed(100)
dd <- data.frame(x=1:100,y=round(rnorm(100,mean=100),1))
gam(y ~ s(x, k=64, bs='ad'), data = dd, method = 'REML', select = 'TRUE')$call
gam(formula = y ~ s(x, k=64, bs='ad'), data = dd, method = 'REML', select = 'TRUE')
f2 <- function(f,m,s,d){
do.call("gam", list(formula=as.formula(f),method=as.name(m),select=as.name(s),data=as.name(d)))
}
f2("y ~ s(x, k=64, bs='ad')", "method = 'REML'", "select = 'TRUE'", "data = dd")$call
# Error in is.data.frame(data) : object 'data = dd' not found occurs
gam(formula = y ~ s(x, k = 64, bs = "ad"), data = dd)
어 "gam"함수에서, 어떤 패키지입니까? – PoGibas
왜 do.call ("gam", list (formula = as.formula (f), method = m, select = s, data = d))와'f2 ("y ~ s (x, k = 64, bs = 'ad') ", 'REML', TRUE, dd)'? – r2evans
죄송합니다, 방금 패키지를 추가했습니다. GAM은 일반화 된 추가 모델입니다. 필자의 경우에는 산점도 (scatterplot)가 있으며 GAM은 y 값을 매끄럽게하기 때문에 x와 y의 관계는 비선형 적입니다. –