[英]Plotting factor-by-curve tensor product smooths of mgcv::gam
所以我有一個統計模型,我在其中使用因子曲線,即為某些類別擬合單獨的平滑曲線,如下所示。 (我沒有太注意數據/模型的含義,只是將其用作最小示例。)
library(dplyr)
library(qgam)
library(mgcv)
data(UKload)
test <- gam(
NetDemand ~ te(wM, Posan, by = Year),
data = UKload %>% mutate(Year = as.factor(Year))
)
當我只是通過s
而不是張量來平滑曲線時,我很高興使用visreg
包如下:
library(visreg)
test2 <- gam(
NetDemand ~ s(wM, by = Year),
data = UKload %>% mutate(Year = as.factor(Year))
)
visreg(test2, xvar = "wM", by = "Year")
但是,當我包含張量時,我似乎無法做類似的事情——它只會繪制一個包含完整數據的等高線圖,而不是按感興趣的因子變量對其進行分區:
visreg2d(test, xvar = "wM", yvar = "Posan", by = "Year")
警告消息:在 title(...) 中:“by”不是圖形參數
我可以在條件下執行mgcv::vis.gam
:
vis.gam(test, plot.type = "contour", cond = list(Year = 2011))
然后通過Rmisc::multiplot
或 base plot
聚合plot
,但我對這些解決方案不太滿意,無論是在美學還是工作流程方面。 關於使用因子曲線為張量積平滑繪制漂亮圖的任何方便提示?
取決於你所說的更漂亮是什么意思? ;-)
我的gratia包將生成因子平滑圖。 例如
draw(test, ncol = 2)
產生
表面的灰色部分是人們從可用數據推斷出太遠的地方。 “太遠”的距離由dist
參數控制,默認情況下,如果網格上的任何點距最近的數據范圍超過 10% ( dist = 0.1
),則該參數設置為將網格上的任何點標記為NA
數據點。
我還沒有准備好讓這些表面以相同的比例繪制並擁有一個共同的顏色條圖例,但gratia是一項正在進行的工作。
如果您想自己進行繪圖,那么gratia還可以通過evaluate_smooth()
函數生成類似整潔的對象(tibble,數據以適合使用ggplot2繪圖的形式排列evaluate_smooth()
> es <- evaluate_smooth(test, smooth = 'te(wM,Posan)')
> es
# A tibble: 60,000 x 7
smooth by_variable wM Posan est se Year
<chr> <fct> <dbl> <dbl> <dbl> <dbl> <fct>
1 te(wM,Posan):Year2011 Year -1.43 0.00137 7556. 1516. 2011
2 te(wM,Posan):Year2011 Year -1.11 0.00137 7506. 1466. 2011
3 te(wM,Posan):Year2011 Year -0.789 0.00137 7456. 1417. 2011
4 te(wM,Posan):Year2011 Year -0.470 0.00137 7405. 1368. 2011
5 te(wM,Posan):Year2011 Year -0.150 0.00137 7355. 1319. 2011
6 te(wM,Posan):Year2011 Year 0.169 0.00137 7305. 1271. 2011
7 te(wM,Posan):Year2011 Year 0.489 0.00137 7255. 1224. 2011
8 te(wM,Posan):Year2011 Year 0.808 0.00137 7205. 1178. 2011
9 te(wM,Posan):Year2011 Year 1.13 0.00137 7154. 1132. 2011
10 te(wM,Posan):Year2011 Year 1.45 0.00137 7104. 1087. 2011
# … with 59,990 more rows
在這里,您可以看到有變量編碼特定的平滑,指示by
變量是什么,以及與上面顯示的表面相關聯的所有數據列。 這里wM
和Posan
在評估這些協變量組合的平滑之前,在數據范圍內的 100x100 點網格上進行評估。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.