DCA脚本导致“ numericalDeriv(form [[3L]],names(ind),env)中的错误”)错误

问题描述 投票:0回答:1

我正在尝试使用R来实现下降曲线分析(DCA)。我正在使用以online为起点的脚本。我是RR Studio的新手,所以耐心等待。

我创建了一个仅包含1个孔的模拟数据的csv文件,看起来像这样:

WellData.csv

WellId,WellName,ProdDate,Oil
1,Well 1,22-03-2017,50
1,Well 1,22-02-2016,70
1,Well 1,22-01-2015,60
1,Well 1,15-03-2014,75
1,Well 1,12-01-2013,80
1,Well 1,13-02-2012,100

这是我要开始使用的脚本:

# that should be an input parameter to the script
DaysBin=60
# that should be an input parameter to the script
ForecastYears=30

data <- read.csv("WellData.csv", header = TRUE, stringsAsFactors = FALSE)

# We need to convert the date column to a posixct date... just trust me on this one
data$ProdDate = as.POSIXct(data$ProdDate, origin = "1970-01-01", tz="UTC")
minDate = aggregate(x=data$ProdDate, by=list(data$WellName), FUN=min)
colnames(minDate) <- c("WellName","MinDate")
data = merge(data, minDate, by="WellName", all.x=TRUE)

# Calculate Days On
data$MinDate = as.POSIXct(data$MinDate, origin="1970-01-01", tz="UTC")
data$DaysOn = as.numeric(data$ProdDate - data$MinDate, units="days")
data$WellCount = 1

# Bin daysOn into X day groups
cutpoints <- seq(0, max(data$DaysOn, na.rm=TRUE), by=DaysBin)
binned <- cut( data$DaysOn, cutpoints, include.lowest=TRUE, labels=FALSE )
data$DaysOn <- sapply( binned, function(x) { cutpoints[x] } );

# Calculate Mean(Oil), Sum(WellCount) over DaysOn
gdata = aggregate(Oil ~ DaysOn, data=data, FUN=mean)
wcount = aggregate(WellCount ~ DaysOn, data=data, FUN=sum)
gdata = merge(gdata, wcount)

# We are going to extend the DaysOn column to include the number of days to the ForecastYears parameter (e.g. 30)
max.days = max(gdata$DaysOn, na.rm=TRUE)
if(max.days < ForecastYears*365) {
  gdata = merge(gdata, data.frame(DaysOn=seq(max.days,ForecastYears*365,DaysBin)), all=TRUE)
}

mtime = Sys.time()
idx = data$DaysOn <= max.days
fit = nls(Oil ~ qi/((1+b*a*DaysOn)^(1/b)),
          data=gdata[idx,],
          start=list(qi=max(data$Oil,na.rm=TRUE), a=.1, b=1),
          control=nls.control(warnOnly=TRUE))
gdata$OilPredict = predict(fit, gdata)

尝试运行以上命令后,我在R Studio中看到以下错误:

enter image description here

r nls
1个回答
0
投票

添加最少的可复制示例,其他人可以更轻松地为您提供帮助。检查here以查看如何制作一个最小的可重现示例。

尽管很难说,但我建议您在致电gdata[idx,]之前先检查nls的结构...

© www.soinside.com 2019 - 2024. All rights reserved.