[英]mutate and predict.gam results Na/NaN/inf problem
我對一些數據有疑問,我根本不明白為什么。
我正在嘗試使用 GAM 從var3
估計var4
。
這是我用來獲取模型的數據集:
for_model <- read.csv("https://raw.githubusercontent.com/fredlm/mockup/master/for_model.csv")
以及我想估計var4
的數據集:
for_est <- read.csv("https://raw.githubusercontent.com/fredlm/mockup/master/for_est.csv")
我所做的,很簡單:
for_est <- for_est %>%
mutate(var4 = ifelse(!var3 == 0, predict.gam(gam(var4 ~ s(log(var3)), data = for_model), newdata = .), NA))
它返回以下錯誤:
錯誤: mutate()
列var4
。 var4 = predict.gam(gam(var4 ~ s(log(var3)), data = for_model), newdata = .)
。 x NA/NaN/Inf 在外部函數調用中 (arg 1)
盡管在網絡上進行了徹底的研究並在我的數據上花費了幾個小時,但我找不到如何解決這個問題......
但是,當我繪制 GAM 時,一切都很好:
ggplot(data = for_model,
aes(x = var3,
y = var4)) +
geom_point() +
geom_smooth(method = "gam",
formula = y~s(log(x)))
知道如何解決這個問題嗎? 我一直在尋找 NaN 或 Inf 值,但沒有。 此外,當我試圖從var2
估計var4
時——這與var3
非常相似——事情運行良好......
for_est <- for_est %>%
mutate(var4 = ifelse(!var2 == 0, predict.gam(gam(var4 ~ s(log(var2)), data = for_model), newdata = .), NA))
非常感謝!
ps:我為相當大的文件道歉,但鑒於我不明白這個問題,我認為提供所有這些文件可能更有意義...... :)
當你使用ifelse遠離var3 == 0時,你需要以同樣的方式限制for_est
輸入數據。 (我將模型求解與預測分開,只是為了使測試更快,這無關緊要)
gamfit <- gam(var4 ~ s(log(var3)), data = for_model)
for_est <- for_est %>%
mutate(var4 = ifelse(var3 != 0, predict(gamfit, newdata = .[var3 != 0, ]), NA_real_))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.