模擬數據以產生用於建立模型的更大數據集親愛的 JMP 社區,
我正在嘗試找出一種生成模擬資料的方法,以更好地訓練我正在建立的模型。
我有一個相當大的數據集——幾千個數據點,但希望產生保持與原始數據類似結構的模擬數據,以便改進模型。 我希望擁有大約 20K-50K 具有類似結構的資料點,以便有更大的資料集來訓練、驗證和測試預測模型。
僅出於視覺目的,數據看起來像這樣:

我嘗試使用 Profiler 平台中的「模擬器」功能,但是那裡產生的資料沒有保持與原始資料類似的結構(變化)——它被標準「淘汰」了與輸入和回應的偏差。 當我嘗試根據該集合建立模型並將其與來源資料中的原始模型進行比較時,原始模型的得分超過了它,因為該模型在其預測中保留了資料的結構。 從模擬資料集產生的模型不會,因為所有結構基本上都遺失了。
此外,「模擬」功能(右鍵單擊報告視窗中的列)也無法真正到達我想要的位置。
我對人們使用 JMP 所做的事情做了一些研究,並發現了一些潛在的線索,但到目前為止,他們都沒有真正追隨我正在尋找的東西。如果有人對此有解決方案,或者可以為我指明如何編碼的正確方向,我將不勝感激。
謝謝
回覆:模擬數據以產生用於建立模型的更大數據集你好@馬克貝利和@彼得_巴特爾,
只是為了提供一些回饋,並繼續討論這個主題,我能夠使用 ARIMA 平台獲得一些合理的模型資料。 它在重新創建類似數據集方面做得很好,雖然不擅長預測,但沒關係。 應用該模型的預測公式與我的實際資料集效果相當好,因此它確實提供了潛在有用的前進路徑。
我不確信這就是我最終希望進行的方式,因此我想將其與 JMP 中的其他模擬選項進行比較。 我知道分析器的隨機模擬沒有幫助,原因我們之前已經討論過。 此外,這並不是調整模型以改進擬合的最佳方法,而我願意這樣做。
對於我的特定建模,我使用引導森林模型,並希望透過調整模型來改進它。 我已經部分使用調音表來完成此操作。 不過,在這方面有一些限制,特別是我在調優表中可以承受的運行次數(記憶體方面)。 我通常會在我的調優表中盡可能地運行我的建模,這是我能負擔得起的。 這縮小了森林中樹木的數量、每次分割採樣的項數、引導樣本、每棵樹的最小分割和最小分割大小。 這可能有助於優化模型平台的參數以找到解決方案,但這並不一定意味著基於我擁有的數據的最佳化模型。
當我建立模型時,我建立了一個驗證列,將其分為訓練集和測試集,並按我的回應列進行分層。 然後,我僅在訓練資料上建立模型,並保留一定的百分比以驗證模型。 模型輸出取決於我選擇的驗證列(我已經做了幾個)。 典型的輸出如下所示(抱歉,我無法分享響應或因子列的資訊)。 boostrap 森林規範的細節會根據原始訓練和驗證資料的分層方式而改變。

我現在感興趣的是透過使用模型統計的模擬選項來調整模型以改進擬合。 我可以透過更改訓練集和驗證集的 N 或單一樹的 RMSE 等來做到這一點。 我知道我無法使用這種方法來更改引導森林的規範(調整表可以做到這一點),但我想以可以調整模型的方式使用它,例如數字用於訓練和驗證的樣本數或分割數,以便最大化r^2。
總結一下:我想使用模擬方法來幫助訓練資料。 我知道探查器的模擬平台不起作用,這讓我只能使用 ARIMA(可能)或用於模型統計的引導模擬選項。 我不確定如何最好地使用後一種模擬方法來調整模型。
如果您對透過模擬調整模型有任何想法或回饋,我們將不勝感激。
在此先感謝您的時間!
回覆:模擬數據以產生用於建立模型的更大數據集你好@GM ,
感謝您的意見與建議。 您對於多變量資料的預期目標和描述是正確的。 資料生成的順序似乎不是一個好的預測指標。 還有其他可測量的屬性,當它們一起使用時,可以對我想要建模/預測的“y”提供合理的預測。 當試圖訓練模型以使其更適合時,困難就來了。 我想透過模擬數據來做到這一點,但事實證明這比我預期的更具挑戰性。
與分析器中的模擬選項相比,MVN 方法在保留資料的某些多元相關性方面確實做得更好。 此選項只是根據給定的標準差求平均值。
不幸的是,當我嘗試使用 MVN 腳本和生成的資料建立模型時,它的效能比僅基於原始資料建立的類似模型差得多。
到目前為止,我發現 ARIMA 模型在捕捉數據的短期波動以及一些長期結構方面做得更好。 它在預測數據預測方面也做得很差,但我的想法是使用它來生成新數據,將其添加到原始數據中以建立更大的數據集,然後使用該更大的數據集訓練模型。
我想我現在要嘗試的是從 ARIMA 報告中“保存列”,提取預測值,然後將其與原始數據表連接起來。 然後,我想隨機化新資料表中的行,並使用更大的資料集建立模型。 我想另一個選擇可能是產生多個驗證列,使用不同的交叉驗證行運行相同的模型並對結果模型進行平均。
我感謝所有對此討論的貢獻。 雖然我還沒有找到合適的解決方案,但我學到了很多東西,並提出了一些新的想法來嘗試。
謝謝!
回覆:模擬數據以產生用於建立模型的更大數據集根據討論,聽起來您有一個結果變數想要與其他預測變數一起建模,其中時間或資料產生的順序不是預測變數。您可能想要使用多元常態分佈來模擬您的 NxP(N= 行,P = 變數(y 和 x))矩陣。此連結提供 JSL 來模擬多元常態分佈。 http://www.jmp.com/support/notes/36/140.html您需要根據估計的協方差矩陣修改它,但如果您的資料遵循多元常態分佈,它應該有效。
回覆:模擬數據以產生用於建立模型的更大數據集你好@馬克貝利,
適當的預測因子肯定可能存在一些缺陷。 然而,根據我們所做的其他分析,我們的這套方案顯然比我們研究過的許多其他方案更適合。
關於複雜性和交叉驗證,我肯定會考慮到這一點。 我產生一個訓練/驗證/測試列來幫助降低過度擬合的風險。 引導森林建模產生相當複雜的決策樹預測公式,其比廣義迴歸模型或神經網路建模等廣泛得多。 當模型相互比較時,它的表現也更好。 通常,我發現在使用調整矩陣運行引導森林平台後,大約有 60 多棵樹,每個分割採樣約 4 項。 每個術語的拆分數量可能有所不同,但通常在 1,000 到 3,000 範圍內。
回覆:模擬數據以產生用於建立模型的更大數據集首先,ARIMA和其他時間序列模型假設短期擾動和一些週期性趨勢,因此它們不適合長期預測。
您目前模型的「缺乏擬合」問題(預測缺乏觀察到的反應的極端偏差)可能無法透過更多數據得到幫助。 您可能缺乏足夠的預測因子。 減少偏差的一個方向是使用當前特徵集在基礎擴展中包含更多項。 您提到了幾種建模技術,但沒有提及您探索的這些模型的複雜性。 更高的複雜性以及透過交叉驗證解決的過度擬合風險可能會解決偏差問題。 減少偏差的另一個方向是尋找缺失的特徵,最終解釋與觀察到的反應的偏差。
回覆:模擬數據以產生用於建立模型的更大數據集你好@馬克貝利,
最終,我想建立一個強大的模型,根據輸入因素預測未來的價值。 我研究了 ARIMA 和 FDE。 我同意 FDE 可能不是一個合適的方法。 然而,我認為 ARIMA 建模可能提供產生新資料以訓練模型的途徑。
幾個因素或多或少與反應同時進行測量。 所有測量都會消耗源材料,但會採樣大量材料以便能夠運行其他測量。我們已經確定了一組具有最強預測能力的因素。 我使用這些因素和反應來檢查幾種不同的模型,使用廣義回歸方法、提升樹、提升森林、神經網路和其他分區方法。 比較模型,我發現引導森林始終比其他森林提供更好的建模結果。 我可以透過保留測試以及使用調整表運行模型來優化擬合參數來進一步改進該模型。
但我仍然發現,該模型並沒有像我們認為應該(或可以)那樣真正捕捉數據的高點和低點。 它確實捕捉到了一些結構,但它不太擅長捕捉那些高點和低點。 因此,我想模擬一個更大的資料集,其中包含更多這些事件,以便建立更好的模型。 由於實際建立真實值的資料集需要很長時間,因此模擬資料來訓練模型會很有幫助。
我確實認為 ARIMA 平台在這方面可以提供幫助。 我已經對其進行了測試,以產生因素和響應的預測值。 這會為模擬真實數據的因素和回應產生一組新值。 然後,我可以將模擬資料和真實資料連接到新的資料表中,以產生兩倍大的新資料集。
不幸的是,ARIMA 建模並不能很好地預測因子或響應的許多新值,因此我無法真正使用它來產生預測週期。 儘管如此,我認為這種建立模擬資料集的替代方法可能會被證明是有用的。
回覆:模擬數據以產生用於建立模型的更大數據集目前尚不清楚模擬更多數據是否會有幫助。 如果您可以模擬數據,那麼您就擁有了數據模型。 「結構」是人口的變化(蒙特卡羅模擬沒有用恆定平均值重現)。
您是否同時使用此反應來測量候選預測變數(因子)? 您是否探索過相關性、關聯性和可能的模型?
回覆:模擬數據以產生用於建立模型的更大數據集你好@彼得_巴特爾和@馬克貝利,
我真的很感謝關於這個問題的討論,因為它給了我一些關於如何改進我的分析的想法。
數據來自流程,但不是即時的。 它們被收集在資料庫中,然後可供存取。 我不能保證每個點在前一個點之後都是真正連續的。 點之間有一個典型的時間間隔,但如果過程中出現暫停(可能是幾小時或幾天),資料庫就會從中斷的地方繼續。 因此,嚴格來說它不是一個時間序列。 然而,在實踐中,如果 ARIMA 模型可以複製與真實數據類似的回應,這應該就足夠了(我認為)。
這些數據來自同一來源。 從過程中抽取樣本並進行測量。
我還沒有嘗試估計自相關。 蒙特卡羅模擬可能是產生模仿真實資料的輸入/輸出資料的一種方法。 我不知道 JMP 可以進行 MC 模擬。 我之前已經在其他問題上做過這些,但沒有使用 JMP。 這些是我必須調查的事情。
目標是開發一個可以很好地預測響應的模型。 這樣,我們就可以只監控這些因素(更容易)。 如果模型預測出警告,那麼就可以進行更具挑戰性的工作。
我仍然認為關於 FDE 和 ARIMA 的內容值得一讀,它可能會激發一些想法。 我希望我有些模糊的解釋是有道理的。 感謝您理解披露問題。
謝謝
回覆:模擬數據以產生用於建立模型的更大數據集我同意@馬克貝利上面最後一段...正如我在之前的文章中所說...從您到目前為止所分享的內容來看...我懷疑 FDE 或時間序列分析是實現您的目標的最合適方法。
回覆:模擬數據以產生用於建立模型的更大數據集那麼數據不是按時間順序繪製的嗎? 它們不是來自同一來源(單一來源)嗎?
當您說每個測量都是獨立的時,您是否估計了自相關,即使只是滯後 1? 雖然「獨立」可能意味著數據是單獨收集的,但我指的是統計獨立性或缺乏相關性。
模擬數據是我所期望的。 存在具有穩定平均值和變異數的單一總體。 蒙特卡羅模擬包括對因素和反應的隨機擾動。
您在資料中看到但在模擬中看不到的「結構」是其他「可分配原因」的結果。 原因可能在時間和幅度上隨機發生。 模擬必須包括他們的貢獻。 你知道它們是什麼嗎? 它們是如何發生的? 如何對它們進行建模?
我知道您無法透露測量的真實性質和細節,但也許您可以使用類比來讓我們了解數據和您正在做的事情。 例如,也許您不時測量核潛艇內三個魚雷發射管的壓力...
假設我們可以幫助您模擬真實數據,您打算使用什麼樣的分析或建模?
彼得非常有幫助,但當我們更了解你的問題時,我懷疑這些建議是否會有幫助,函數數據分析適用於函數、輪廓或曲線。 想像一下數百個資料系列的樣本,您想要對形狀進行建模,以及形狀如何受因素影響或形狀如何預測結果。 您顯然有一個想要擴展的資料系列。 FDA 不會預測超出原始範圍的情況。 ARIMA 模型假設點間距相等。 它可以對自相關、擾動和季節性進行建模,以進行提前但不遠的預測。 另一方面,基於 ARIMA 模型的蒙特卡羅模擬是可能的。
回覆:模擬數據以產生用於建立模型的更大數據集@SDF1 :您的短語「長程結構」可能有多種風格、細微差別和附加問題。 例如,季節性可以是結構的一種形式。 ARIMA 時間序列方法非常適合對過程中的季節性影響和長期趨勢或週期性運動進行建模。 請參閱 JMP 範例資料目錄中的經典 seriesg.jmp 資料表。
我對初學者的建議是閱讀 JMP 文件中的 JMP/JMP Pro 功能。 這是 FDE 的連結:
https://www.jmp.com/support/help/14/function-data-explorer.shtml
這是時間序列分析的連結:
https://www.jmp.com/support/help/14/time-series-analysis.shtml
回覆:模擬數據以產生用於建立模型的更大數據集嗨彼得,
這些平台中的任何一個都允許維持遠端結構嗎? 我仍然會閱讀它們,它可能會給我一些關於如何為我自己的解決方案編寫程式碼的想法。
謝謝!
回覆:模擬數據以產生用於建立模型的更大數據集鑑於觀察結果不是時間序列,我撤回了先前關於功能資料瀏覽器或時間序列分析的建議。 兩種技術都假設觀測之間存在跨時間的某種結構……並且由於這些觀測彼此獨立……不建議使用 FDE 或時間序列。
回覆:模擬數據以產生用於建立模型的更大數據集嗨馬克,
數據不依賴時間。 每次測量都獨立於前一次測量,但一般來說,數據是一個接一個地收集的。 它們可以被視為時間序列,但嚴格來說不是,因為它們在技術上可能不是連續的。 但更重要的是,每次測量都是對反應的獨立測量。
希望下面的視覺效果能夠解釋我對丟失任何結構的模擬數據的含義:

我透過在 Profiler 中開啟模擬器,為每個預測變數(我有幾個)提供具有真實 SD(源自實際資料)的常態分佈,並產生包含 50K 回應的表格來產生該結果。 儘管平均值、最大值和最小值可能接近原始資料的樣子,但其他結構會遺失。 這個新資料集不包含與原始資料集相同的「長範圍」結構,在模擬資料集中捕獲的這種結構與資料的實際值同樣重要。 它不必完全匹配,但至少具有相似的結構(請參閱原始帖子進行比較)。
我同意 JMP 中內建的兩個模擬器選項並不合適。 關於要閱讀列公式或編寫腳本的特定主題有什麼建議嗎? 我不熟悉任何可以為我解決這個問題的內建公式。 我可以編寫這樣的腳本,但需要知道從哪裡開始。 我仍然需要研究 Peter Bartell 關於函數式資料瀏覽器和 ARIMA 建模的其他建議,看看它們是否可以處理它。
謝謝!
回覆:模擬數據以產生用於建立模型的更大數據集那麼響應是與時間相關的訊號嗎? 是否存在預測因素,或自相關是否重要?
你是什麼意思 ”不幸的是,當我嘗試使用 Profiler 的模擬功能並產生更大的資料集時,新的輸出資料沒有顯示原始資料的任何相關結構。 」 所需結構的本質是什麼?
資料與時間序列有何不同?
我認為 Prolfier 或 JMP Pro Simulate 平台功能中的模擬器無法滿足您的需求。 列公式或腳本可能是最令人滿意的方法。
有些細節你不能透露(理解)所以我們必須玩“二十個問題!”
回覆:模擬數據以產生用於建立模型的更大數據集嗨馬克,
感謝您的意見。
產生的數據非常慢——這意味著需要很長時間才能真正獲得原始數據,幾天甚至幾週。 因此,建構 50K 大小的資料集是不可行的。 我正在使用一些 Pro(運行 Pro 14.1.0)建模函數來嘗試生成一個模型,該模型不僅可以很好地預測數據,而且還可以捕獲數據內的結構。 擁有模仿原始結構的更大資料集對於改進模型非常有幫助。 增加樣本大小(包括更多的訓練、驗證和測試大小)並捕捉資料結構將有助於訓練更好的模型——至少我認為是這樣。
嚴格來說,它不是一個時間序列,儘管人們可以這樣看待它。 資料事件不一定在時間上相互關聯。 另一位海報建議進行時間序列分析,我將對此進行研究。
不幸的是,當我嘗試使用 Profiler 的模擬功能並產生更大的資料集時,新的輸出資料沒有顯示原始資料的任何相關結構。 我可以在其上建立一個非常適合的新模型,但是當我使用原始資料將新模型與原始模型(基於原始資料建立)進行比較時,新模型不太適合。
抱歉,我不能說得更具體,但我無法討論數據的細節。 我希望我的評論對您提出的觀點有意義。
謝謝!
從我想做的事情來看,Profiler 中的模擬功能似乎是正確的方法,但它並沒有給我想要得到的東西。 平台模擬絕對不是正確的方法,或至少我可以看到如何調整它來滿足我的需求。
回覆:模擬數據以產生用於建立模型的更大數據集嗨彼得,
感謝您的評論。 我忘記在原來的帖子中添加我正在運行 JMP Pro 14.1.0。
我可能要等到下一次更新推出,但我至少可以做一些閱讀和跟進。
謝謝!
回覆:模擬數據以產生用於建立模型的更大數據集首先,您將如何使用模擬資料來改進模型? 是否有足夠的數據來證明特定建模方法的可行性? 是為了評估對於特定模型來說可能足夠的樣本量嗎? 只是增加樣本數的問題嗎?
其次,您似乎只有一個時間序列。 這種解釋正確嗎?
第三,Profiler 的模擬功能旨在與安裝或保存的模型一起使用。 您可以根據參數分佈模型來描述預測變數和反應的變化。 我不知道該機制是否適用於時間序列模型。 (其他專家可以在這裡插話。)
平台模擬旨在基於具有隨機分量的保存模型對資料進行重新取樣,以產生平台中所選統計資料的經驗採樣分佈。
我認為我可以獲得一個 SAS 程式來模擬時間序列數據,該數據可以適應 JMP 列公式或腳本。 (沒有保證。)
我走在正確的軌道上嗎?
回覆:模擬數據以產生用於建立模型的更大數據集如果您有 JMP Pro 版本 14.2,您的問題聽起來像是函數資料瀏覽器的完美應用程式。 另一種選擇可能是使用某種 ARIMA 構造的時間序列建模方法? 時間序列方法不需要 JMP Pro。