【发布时间】:2020-06-10 23:01:06
【问题描述】:
我正在处理来自多个监测站的历史养分浓度数据以及相应的历史流量。我正在尝试编写预测回归方程来估计现已关闭的站点的浓度。我看过一些关于 MGCV 包的教程,并决定马尔可夫随机字段适合我正在做的事情。我不确定如何选择某些参数来从更大的数据框构建回归,因此我定制了数据框以仅包含每个站点回归所需的信息。以下是 C9 站的示例:
C9_TP_Reg:
Station, Date.x, Month, Year, Day, TP, SWP, CVP
D19, 1975-1-07, 1, 1975, 7, 0.1, 3593, 1071
C9, 1975-1-22, 1, 1975, 22, 0.16, 1914, 3483
D28A, 1975-02-03, 2, 1975, 3, 0.11, 2360, 4506
...
这是一个跨越数年的大型数据集......
我尝试使用以下代码编写我的回归:
TP_C9 <- gam(TP ~ s(Date.x) + s(Station,bs="mrf",xt=list(nb=nb)) +
s(SWP) + s(CVP), data=C9_TP_reg)
我收到了这个错误:
Error in names(dat) <- object$term : 'names' attribute [1] must be the same length as the vector [0]
如果有人可以帮助我,我将非常感激。我花了几个小时观看有关 MGCV 包的教程,但无法让它工作。
我假设如果我适合所有站点,我可以重新计算方程并求解 C9 以估计未来浓度...
【问题讨论】:
-
Station是否被编码为一个因素? -
我刚看了看,我的电台目前被编码为字符。我会将它们更改为因子。我刚开始研究一个名为baytrends 的软件包,该软件包将GAM 应用于水质成分。我正在考虑尝试遵循与此类似的格式:
-
我开始研究一个名为baytrends 的软件包,该软件包将GAM 应用于水质成分。我正在考虑尝试遵循与此类似的格式: gam2_flwsal: gam(y ∼ cyear + s(cyear, k = gamK1) + s (doy,bs = 'cc') + ti(cyear,doy,bs = c( 'tp','cc')) + s (flw_sal,k = gamK2) + ti(flw_sal,doy,bs = c('tp','cc')) + ti(flw_sal, cyear,bs = c(' tp','tp')) + ti(flw_sal,doy,cyear, bs = c('tp','cc','tp')), 结=list(doy=c(1,366)),select=TRUE ) 其中 gamK1=c(10,1/3), gamK2=c(10,2/3), cyear= 十进制形式的零居中日期, doy= 一年中的日期作为数字(366 表示闰年) .
-
我正在阅读的研究使用这个 GAM 来评估每个站点的趋势,而我正在尝试为历史站点编写方程,这些方程可以通过仍在监测的周围站点的营养浓度来描述流动条件。我正在尝试为经历生物地球化学转化的氮和磷物种编写这些方程式。我的一位同事过去使用 delta 15 N 的同位素数据编写了氮物种的方程式,尽管她的方程式仅适用于 6 月至 10 月。
-
希望此代码可以帮助提供建立 TMDL 所需的背景,并有助于减少富营养化条件和改善水质。如果您有任何建议或资源,您可以提出建议,我将不胜感激。