Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-NLS错误';评估模型时产生的缺失值或无穷大';_R_Modeling_Nls - Fatal编程技术网

R-NLS错误';评估模型时产生的缺失值或无穷大';

R-NLS错误';评估模型时产生的缺失值或无穷大';,r,modeling,nls,R,Modeling,Nls,我在一个中型博客上找到了一个名为Taylor White的用户的以下代码,该博客计算了R0数。我试图运行代码,但遇到以下错误: numericDeriv(表单[[3L]],名称(ind),env中的错误:评估模型时缺少值或产生无穷大 我在stackoverflow上发现了一篇类似的帖子(下面的链接),其中建议使用minpack.lm,但坦率地说,那里的代码与我自己的代码并不相似。还有一篇帖子建议删除0个值,我尝试过,但仍然没有成功 我还试图改变“开始”值,但这也没有帮助。有没有人提供进一步的指

我在一个中型博客上找到了一个名为Taylor White的用户的以下代码,该博客计算了R0数。我试图运行代码,但遇到以下错误:

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