R-NLS错误';评估模型时产生的缺失值或无穷大';
我在一个中型博客上找到了一个名为Taylor White的用户的以下代码,该博客计算了R0数。我试图运行代码,但遇到以下错误:R-NLS错误';评估模型时产生的缺失值或无穷大';,r,modeling,nls,R,Modeling,Nls,我在一个中型博客上找到了一个名为Taylor White的用户的以下代码,该博客计算了R0数。我试图运行代码,但遇到以下错误: numericDeriv(表单[[3L]],名称(ind),env中的错误:评估模型时缺少值或产生无穷大 我在stackoverflow上发现了一篇类似的帖子(下面的链接),其中建议使用minpack.lm,但坦率地说,那里的代码与我自己的代码并不相似。还有一篇帖子建议删除0个值,我尝试过,但仍然没有成功 我还试图改变“开始”值,但这也没有帮助。有没有人提供进一步的指
numericDeriv(表单[[3L]],名称(ind),env中的错误:评估模型时缺少值或产生无穷大
我在stackoverflow上发现了一篇类似的帖子(下面的链接),其中建议使用minpack.lm,但坦率地说,那里的代码与我自己的代码并不相似。还有一篇帖子建议删除0个值,我尝试过,但仍然没有成功
我还试图改变“开始”值,但这也没有帮助。有没有人提供进一步的指导?非常感谢
library(tidyverse)
# Pull in data from John Hopkins
johns_hopkins_cases = read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv') %>%
pivot_longer(cols = matches('^([0-9])'), names_to = 'date', values_to = 'cases')
# Change column names to lower case and add hyphens
names(johns_hopkins_cases) = names(johns_hopkins_cases) %>% tolower() %>% str_replace('[\\/]', '_')
# Take US data only
us_jh_cases = filter(johns_hopkins_cases, country_region == 'US') %>%
mutate(date = as.Date(date, format = '%m/%d/%y')) %>%
arrange(date) %>%
mutate(
lag_cases = lag(cases, 1),
new_cases = cases - lag_cases,
new_cases = ifelse(is.na(new_cases), 1, new_cases),
t = as.numeric(date - min(date))
)
# Fit a simple exponetial model using non-linear least squares.
simple_exponential_model = nls(cases ~ case_networks * r0^(t/5), data = us_jh_cases,
start = list(case_networks = 1, r0 = 2.5))
使用
plinear
算法。在这种情况下,右侧和起始值应省略case\u networks
,其值将报告为.lin
fm <- nls(cases ~ r0^(t/5), data = us_jh_cases, alg = "plinear",
start = list(r0 = 2.5))
fm
图表
请删除未使用的代码。两个库语句没有使用。非常好的解决方案。我从未遇到过plinear算法,但它是有效的。你能解释为什么我的初始代码不起作用吗?起始值离最佳值太远了,plinear不需要线性参数的起始值来避免这一点。伟大而简单的解释。我感谢你的帮助。
Nonlinear regression model
model: cases ~ r0^(t/5)
data: us_jh_cases
r0 .lin
1.094e+00 1.513e+05
residual sum-of-squares: 9.836e+12
Number of iterations to convergence: 10
Achieved convergence tolerance: 6.719e-06
plot(cases ~ t, us_jh_cases, pch = ".", cex = 2)
lines(fitted(fm) ~ t, us_jh_cases, col = "red") # fit shown in red