首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在exp()中使用date作为参数?

在exp()中使用date作为参数?
EN

Stack Overflow用户
提问于 2019-11-26 08:25:39
回答 1查看 141关注 0票数 0

努力最终对某些数据进行指数拟合,但在Date对象的数据类型上遇到错误。如何将日期向量转换为exp()函数可以读取的格式?在很大程度上,我试图让this example为我工作,但得到了错误:

Error in Math.Date(date) : exp not defined for "Date" objects

我曾尝试使用as.numeric()进行转换,但遇到错误

代码语言:javascript
复制
 Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  NA/NaN/Inf in 'x'

将date对象转换为一个较小的数字(即从第一个日期算起的天数,从第一个日期算起的几周)解决了这个问题。下面是使示例工作的更新代码:

代码语言:javascript
复制
weight <- c(1000, 100, 10, 1)
date <- as.Date(c('2010-11-1','2010-3-25','2010-2-2','2010-1-14'))
df <- data.frame(date, weight)

df$doy_str <- strftime(df$date, format = "%j")
df$doy <- as.numeric(df$doy_str)


linear.model <-lm(weight ~ doy, df)
log.model <-lm(log(weight) ~ doy, df)
exp.model <-lm(weight ~ exp(doy), df)

log.model.df <- data.frame(x = df$doy,
                           y = exp(fitted(log.model)))

ggplot(df, aes(x=doy, y=weight)) + 
  geom_point() +
  geom_smooth(method="lm", aes(color="Exp Model"), formula= (y ~ exp(x)), se=FALSE, linetype = 1) +
  geom_line(data = log.model.df, aes(x,y, color = "Log Model"), size = 1, linetype = 2) + 
  guides(color = guide_legend("Model Type"))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 08:39:55

我认为问题在于,即使使用数字,日期也会转换为1970-01-01的日期。将这么大的数字放入exp将返回无穷大。您可以首先将日期转换为最近来源的日期(例如,您在数据中的最小日期)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59041984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档