0

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 内で呼び出している関数の第 1 引数ですか? GWLf 関数には、関数内で定数として使用される 6 つのパラメーターが渡されます。これらは、私が調整したい6つのパラメータです。

ありがとう、トム

4

1 に答える 1

3

読書から?nls.lm

関数の呼び出しではなく、関数を渡す必要があります

out <- nls.lm(par = guess, fn = GWLF, dischargeInput, weatherInput)

追加の引数 (データだと思います) が渡されることに注意してください...

これらの引数に名前を付けたい場合は、これらの引数名を使用する方が安全ですGWLF

于 2013-04-12T05:52:54.560 に答える