变异和 predict.gam 结果 Na/NaN/inf 问题
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))
它returns出现以下错误:
错误: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 值,但有 none。另外,当我试图从 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_))
我的一些数据有问题,我就是不明白为什么。
我正在尝试使用 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))
它returns出现以下错误:
错误: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 值,但有 none。另外,当我试图从 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_))