我正在尝试使用 wqtrends 包制作一个游戏。我用包中的示例数据对其进行了测试,它运行得很快。当我用我的数据运行它时,它似乎被卡住了。已经运行了30分钟了,还没结束。
#DATA
> my_df
# A tibble: 6 × 4
station param value cont_yr
<dbl> <chr> <dbl> <dbl>
1 50900149 chl 1.4 2024.
2 50900149 chl 0.5 2024.
3 50900149 chl 1 2024.
4 50900149 chl 2 2024.
5 50900149 chl 2.1 2024.
6 50900149 chl 2.9 2024.
> example_df
station param value cont_year
1 34 chl 2.766667 1991.115
2 34 chl 3.066667 1992.156
3 34 chl 2.466667 1992.194
4 34 chl 4.166667 1992.224
5 34 chl 5.766667 1992.249
6 34 chl 12.133333 1992.268
这是我与我的数据一起使用的代码。过滤器有效,anlz_gam() 似乎不起作用。
pdmod <- rawpd2 %>%
filter(station %in% 50900149) %>%
filter(param %in% 'chl')
pdgam <- anlz_gam(pdmod, trans = 'log10')
这是我用于示例数据的代码。
tomod <- rawdat %>%
filter(station %in% 34) %>%
filter(param %in% 'chl')
tmod1 <- anlz_gam(tomod, trans = 'log10')
当我运行
summary(tmod1)
时,我得到以下输出:
Family: gaussian
Link function: identity
Formula:
value ~ s(cont_year, k = 348)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.857071 0.008929 95.99 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(cont_year) 218.9 262.4 4.796 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.684 Deviance explained = 81.2%
GCV = 0.072806 Scale est. = 0.043372 n = 544
这就是我期望从数据中得到的结果。相反,它会卡在:
reducing knots for cont_year spline from -17193657
最后的数字还在不断攀升。
如果我使用第一个表“my_df”,它将“永远”运行
# pkgs
library(dplyr)
library(wqtrends)
# data from the question
my_df <- data.frame(
station = c(50900149, 50900149, 50900149, 50900149, 50900149, 50900149),
param = rep("chl", 6),
value = c(1.4, 0.5, 1, 2, 2.1, 2.9),
cont_yr = c(2024, 2024, 2024, 2024, 2024, 2024)
)
# filter to mimic the question
pdmod <- my_df %>%
filter(station %in% 50900149) %>%
filter(param %in% "chl")
# define knots (kts) = 5 to avoid getting stuck
pdgam <- anlz_gam(pdmod, trans = 'log10', kts = 5)
summary(pdgam)
您能否发送一个易于理解的最小示例?你可以按照我的例子来学习
我很好奇为什么第一个表中的大多数列都是恒定的,但在第二个表中年份有小数值