簡體   English   中英

使用ggplot匯總圖表中的Mann Kendall測試結果

[英]Using ggplot to Summarize Mann Kendall test results in a graph

我一直在使用代碼來總結圖形中的一些線性回歸結果(均附有代碼和圖形)。 我采用了從這里引用各種來源的代碼。

現在,我想為Mann-Kendall測試結果制作完全相同的圖形。 並代替我圖表的“斜率”部分,我要插入“ Sen斜率估計”的結果。 所以我想從兩個不同的測試結果顯示在此圖中。

我認為問題出在“ geom(label)”的“ Paste”部分。 因為我必須確定要粘貼在圖形中的特定數字結果,所以我不知道該怎么做。

如果有任何機構可以解決此問題。 我將不勝感激。

ggplotRegressionxpl <- function (fit) {
 require(ggplot2)
ggplot(fit$model, aes_string(x = names(fit$model)[2], y = names(fit$model)[1])) + 
geom_point() + geom_line() + geom_label(aes(2000, 33, hjust = 0, vjust = 0, label = paste("R^2 = ",signif(summary(fit)$adj.r.squared, 3),"\n",
                                                                                          "Slope =",signif(fit$coef[[2]], 3),"\n",
                                                                                          "p-value =",signif(summary(fit)$coef[2,4], 3)))) +
stat_smooth(method = "lm", col = "red") + xlab("Year") + ylab("Total Precipitation") +
 labs(title = "Pullman (1941–2018)") + scale_y_continuous(limits = c(0, 40)) +
theme(plot.title = element_text(hjust = 0.5))



}

在此處輸入圖片說明

幾年前,我曾經使用過Mann-Kendall / Sens。 我使用的軟件包是wql

您可以對數據result <- mannKen(data$Precipitation)運行mannKen函數。 完成此操作后,您可以使用result $sen.sloperesult$p.value result $sen.slope訪問Sens Slope和p值。

為了繪制趨勢線,我通常選擇一個點來固定該線-例如,時間序列中的中值濃度與時間序列的中點相結合。 在上面的圖中,這為我提供了(middleYear,中位數)-(1978,中位數降水)的參考點。

然后,我使用sens斜率,時間序列的起點(在上面的示例中為1941),數據的終點(在示例中為2019)和一些線性代數來計算直線的起點(1941年的降水)如果您將sens斜率從參考點向后延伸)和直線的終點(如果您將sens斜率從參考點向前延伸則為2019年的降水)。

我很想知道是否還有其他軟件包可以簡化此過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM