r - 在 nls 中使用 "predict"

标签 r predict nls

我有来自 USGS Nation Water Data 网站的数据。我目前正在尝试绘制和拟合数据的曲线,以用于预测数据集内进行的不同测量(溶解氧、pH、仪表高度和温度),所有这些都与排放速率有关。我使用了“nls”命令,我正在使用一本方程式书来查找要使用的曲线……对于这个例子,我专门使用了舒马赫方程(书中第 48 页)。

找到数据链接:

曲线书:http://www.for.gov.bc.ca/hfd/pubs/docs/bio/bio04.htm

我使用的数据:http://waterdata.usgs.gov/mi/nwis/uv?referred_module=qw&search_station_nm=River%20Rouge%20at%20Detroit%20MI&search_station_nm_match_type=anywhere&index_pmcode_00065=1&index_pmcode_00060=1&index_pmcode_00300=1&index_pmcode_00400=1&index_pmcode_00095=1&index_pmcode_00010=1&group_key=NONE&sitefile_output_format=html_table&column_name=agency_cd&column_name=site_no&column_name=station_nm&range_selection=date_range&begin_date=2013-11-18&end_date=2013-12-18&format=html_table&date_format=YYYY-MM-DD&rdb_compression=file&list_of_search_criteria=search_station_nm,realtime_parameter_selection

我的问题是,一旦我选择了一条曲线编码,我就无法让 nls 预测新值……我也不太清楚如何绘制它……我猜这可能与残差有关?
在代码中,我使用“聚合”来提取列出的测量值和相应的放电率的平均值,现在我只需要让 R 为我预测。我得到了我认为合适的值......但我不确定,我用“?nls”撞了墙。

##Create new dataframes with means given date for each constituent
ph <- aggregate(Discharge~pH, data=River.Data, mean)

##pH models
pH <- ph$pH
disch <- ph$Discharge
phm <- nls(disch~exp(a+(b/pH)), data=ph, trace=T, start=list(a=-47.06 ,b=400.2))
newph<- data.frame(ph=c(3.0,4.0,5.0,6.0,7.0,8.0,9.0))
predict(phm, newdata=newph)

最佳答案

似乎您已经得到了答案(??),但是:

ph    <- aggregate(Discharge~pH, data=River.Data, mean)
phm   <- nls(Discharge~exp(a+(b/pH)), data=ph, trace=T, start=list(a=-47.06 ,b=400.2))
newph <- data.frame(pH=seq(3,9,by=0.1))
Discharge.pred <- predict(phm, newdata=newph)

plot(ph$pH, ph$Discharge, xlim=c(3,9), ylim=c(0,1000))
par(new=t)
plot(newph$pH,Discharge.pred, xlab="", ylab="", axes=F, xlim=c(3,9), ylim=c(0,1000), type="l")



问题是你的数据是在 [7.5,8.2] 中的 pH 值,但你试图在 [3,9] 中进行预测。您选择的模型对于远超出范围的 pH 值是不稳定的。

关于r - 在 nls 中使用 "predict",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721030/

相关文章:

r - 如何消除 "NA/NaN/Inf in foreign function call (arg 7)"使用 randomForest 运行预测

r - 使用 nls() 进行非线性拟合在初始参数估计时给了我奇异的梯度矩阵。为什么?

R:如何为要通过 lm 或 nls 估计的模型添加约束?

r - 在R中使用nls重新创建研究

r 循环中的 dbWriteTable

list - R 中的多级列表

c++ - 如何在声明后将 NumericVector 初始化为特定大小?

opencv - 支持向量机预测函数总是返回一个大数字

r - 如何从 R 中的线性模型获得 1000 个预测?

r - 用 3 个点定义 S4 方法