1、HYSPLIT軌跡聚合中的百分比標準
在HYSPLIT模型中,軌跡聚合(Trajectory Clustering)用于將大量軌跡按相似性分組,20%和30%是常見的聚合閾值標準,反映軌跡間的空間相似度要求。
2、20%和30%的具體含義
這兩個百分比代表軌跡聚合算法中允許的最大空間差異閾值。具體計算基于軌跡之間的空間距離標準差(或均方根距離):
- 20%閾值:要求軌跡組內各軌跡間的空間差異不超過整體軌跡樣本空間分布標準差的20%,聚合條件更嚴格,生成的組數更多。
- 30%閾值:允許更大的空間差異(標準差的30%),聚合條件更寬松,生成的組數較少但每組軌跡更分散。
3、閾值選擇的影響
20%標準
適用于需要高精度分析的場景(如污染源精確定位),軌跡分組更細,能識別更局部的傳輸路徑,但可能增加計算量。30%標準
適合大尺度分析(如區域傳輸模式研究),減少組數以突出主要傳輸路徑,可能忽略部分細節但增強整體規律的可視化。
4、個人理解
? ? 1)App默認使用30%參數。
??? 2)官方文檔:
View possible final number of clusters. Typically a pairing of "different" clusters is indicated by a 30% change in the percent change in total spatial variance (see Step 2, Display plot). Run lists the possible final cluster numbers. If the 30% criterion does not identify any, the 20% criterion may be chosen. The maximum is arbitrarily set to 20 clusters。(查看可能的最終聚類數量。通常,“不同”聚類的配對由總空間方差變化百分比中30%的變化表示(參見步驟2,顯示圖表)。運行列表顯示可能的最終聚類數量。如果30%的標準未識別出任何結果,可選擇20%的標準。最大聚類數默認設置為20個。)
??? 也就是說默認使用30%來選擇聚類數量,如果沒有數量結果,則使用20%再算一次重新選擇。
5、聚類數量讀取Java代碼
private List<NcDataEntry> readTsvFile(String filePath) {List<NcDataEntry> dataEntries = new ArrayList<>();try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {String line;while ((line = br.readLine()) != null) {// 分割一個或多個空白字符String[] parts = line.trim().split("\\s+");if (parts.length >= 2) {try {int nc = Integer.parseInt(parts[0]);double tsv = Double.parseDouble(parts[1]);dataEntries.add(new NcDataEntry(nc, tsv));} catch (NumberFormatException e) {// 忽略無法解析為數字的行System.err.println("忽略無法解析的行: " + line);}}}} catch (IOException ex) {throw new FileOptionException("讀取文件時出錯: " + ex.getMessage());}return dataEntries;}
import lombok.Data;@Data
public class NcDataEntry {private int nc;private double tsv;public NcDataEntry(int nc, double tsv) {this.nc = nc;this.tsv = tsv;}
}