关于在 minpack.lm 包中使用 NLS.LM 的问题
Posted
技术标签:
【中文标题】关于在 minpack.lm 包中使用 NLS.LM 的问题【英文标题】:Questions about using NLS.LM in the minpack.lm package 【发布时间】:2013-04-12 03:43:39 【问题描述】:我正在尝试在 R 中使用 minpack.lm 包。特别是 NLS.LM 函数。我正在翻阅手册和帮助文件,但设置它的要求有点超出我目前的能力。非常感谢任何指导。这是我的代码,下面是我得到的错误声明。
R 代码:
# Thomas P. Taggart
# ERE445/645
# Spring 2013 - Calibration Presentation
# Lumped parameter rainfall-runoff model for the Susquehanna River at Conklin, NY.
# Outlined in Haith's (1987) GWLF model. The model uses the SCS curve
# number runoff technique to determine runoff, with snowpack, unsaturated zone, and
# saturated zone mass balances. Evapotranspiration is to be determined using Hamon’s
# method with average monthly values for daylight hours.
# In this model we assume the following constants, which are determined through calibration:
# Baseflow Recession Coefficient, Kb
# Field capacity, FCAP
# Curve number for average moisture conditions, CN2
# Initial antecedent moisture conditions, iAMC
# Initial snow accumulation, iSNt
# Initial saturated zone storage, iSATt
# No deep groundwater seepage
# including needed functions
source("Functions.R")
source("distributionFunctions.R")
source("GWLF_Model.R")
require(ggplot2)
require(reshape)
library(minpack.lm)
library(scales)
###############################################################################################
# USGS Discharge data for Conklin, NY - Gage on the Susquehanna
# Reading in the input file
dischargeInput <- read.csv("USGS_DailyDischarge_ConklinNY_01503000_A.csv", header=TRUE)
###############################################################################################
# Weather Data
# Read in input file
weatherInput = read.csv("Conklin_NY_WeatherData_Edit.csv")
###############################################################################################
# Setting up the model inputs - inital Run
# Baseflow Recession, Kb
Kb <- 0.90
# Initial unsaturated storage is at field capacity, FCAP (cm)
FCAP <- 10
# Curve number for average moisture conditions, CN
CN <- 65.7
# Initial antecedent moisture conditions, AMC
AMC <- 1.5
# Initial saturated zone storage, SATt
iSATt <- 0.45
# Snowmelt constant, K
K <- 0.45
parameters <- c(Kb, FCAP,CN, AMC, iSATt, K)
# Calling the Model - 1st time to see the initial outputs
# GWLF(parameters, dischargeInput, weatherInput)
###############################################################################################
# Calibrating the model
guess <- c("Kb"=0.1, "FCAP"=1,"CN"=50, "AMC"=0, "iSATt"=0, "K"=0.5)
out <- nls.lm(par = guess, fn = GWLF(parameters, dischargeInput, weatherInput))
这是错误信息:
Error in function (par) : could not find function "fn"
我需要如何设置标准杆?还是我在 nls.lm 中调用的函数中的第一个参数? GWLf 函数被传递了 6 个参数,这些参数在函数中用作常量。这是我希望校准的 6 个参数。
谢谢, 汤姆
【问题讨论】:
【参考方案1】:来自阅读?nls.lm
你需要传递函数,而不是调用函数
out <- nls.lm(par = guess, fn = GWLF, dischargeInput, weatherInput)
注意额外的参数(我假设是数据)在...
中传递
使用您希望它们在GWLF
中的任何参数名称来命名这些参数会更安全。
【讨论】:
MNEL,哇!!几分钟前我才让它工作,这正是我让它工作的方式。确切地。我知道面临的问题是想知道为什么我的迭代在第二次之后停止(即使制作的图表数量表明它应该高于两次迭代),以及为什么得到的 par 输出与初始输出没有任何不同猜测值。 @traggatmot,除非你能提供一个可重复的例子,否则这将很难提供帮助以上是关于关于在 minpack.lm 包中使用 NLS.LM 的问题的主要内容,如果未能解决你的问题,请参考以下文章
关于IDEA使用Maven工具打包带有本地依赖包的项目 在部署时 仍然找不到本地依赖包中某个类,发生ClassNotFoundException的异常
关于RT—Thread at24cxx驱动包中读操作中有错误