如何控制對大型數據集的探索性分析?
當我開始對大型數據集(許多樣本、許多變量)進行探索性分析時,我經常發現自己有數百個衍生變量和大量不同的圖,並且沒有真正的方法來跟踪哪裡發生了什麼。代碼最終像意大利面一樣,因為從一開始就沒有方向……
是否有任何推薦的方法來保持探索性分析的整潔?特別是,你如何處理多個探索分支(包括那些死胡同),以及不同版本的情節?
作為參考,我正在研究地球科學數據(隨著時間的推移,許多變量,有時也在空間上)。我通常使用 Python 或 R,並將所有內容存儲在 git 中,並且一直在嘗試 IPython Notebook。但是,如果答案對所有領域的人都具有通用性和有用性,以及其他類型的(大?)數據,那將是一件好事。
我認為,經常感覺你在探索性分析中掉進了兔子洞的傾向是由於忽視了你所問的實質性問題。我自己做,偶爾,然後不得不提醒自己我的目標是什麼。例如,我是在嘗試構建特定模型,還是評估現有模型的充分性?我是否在尋找數據存在問題的證據(即法證數據分析)?或者,這是在分析的早期階段,在繼續開發正式模型之前,我正在非正式地調查特定問題(例如,兩個變量之間是否存在關係?)?總而言之,如果您發現自己在製作圖表和表格,但不能清楚地說明您的近期目標是什麼或為什麼該圖表/表格是相關的,那麼您知道您
我嘗試像寫作一樣進行探索性數據分析,無論是編寫程序還是撰寫文章。在任何一種情況下,如果不先製作大綱,我都不會開始。當然,該大綱可以更改(並且經常更改),但是在沒有大綱的情況下開始編寫是低效的,並且通常會產生糟糕的最終產品。
在 WRT 組織中,每個分析師都必須找到適合他或她的工作流程——這樣做比試圖嚴格遵循其他人的工作流程更重要(儘管從其他人的工作中獲取想法總是有幫助的)。如果您以編程方式工作(即編寫可以運行以生成/重新生成一組結果的代碼)並將您的工作檢查到 git 中,那麼您在這方面已經領先許多人了。我懷疑您可能只需要花一些時間來組織您的代碼,為此,我建議您遵循您的大綱。例如,使您的分析文件相對較短且有針對性,以便每個文件都回答一個特定問題(例如,特定回歸模型的診斷圖)。根據項目的規模和復雜性,將它們組織到一個或兩個級別的子目錄中。這樣,項目就變成了自文檔化的;理論上,目錄、子目錄和文件的列表視圖(以及每個文件頂部的註釋)應該重現您的大綱。
當然,在一個大型項目中,您可能還擁有進行數據清理和管理的代碼、為估計某種類型的模型而編寫的代碼,或者您編寫的其他實用程序,這些不符合實質性數據分析的大綱,因此它們應該組織在項目文件夾的不同部分中。
更新:發布此消息後,我意識到我沒有直接解決您關於“死胡同”的問題。如果你真的認為一整套分析沒有價值,那麼如果你在 git 中工作,你總是可以刪除相應的文件,並帶有提交消息,例如“放棄這行分析,因為它不是富有成效的。” 不像把你寫的東西揉成一團扔進垃圾桶,如果需要,你總是可以回到你以後做的事情。
但是,我想你會發現,如果你從一個你已經考慮過的大綱開始,你就會有更少的所謂死胡同。相反,如果你花時間調查一個有價值且相關的問題——即使這會導致一個無效的發現或結果不像你預期的那樣——你可能仍然希望記錄你所做的事情和結果(在最低限度,這樣您以後就不會犯錯重複此操作)。只需將它們移到大綱的底部,類似於“附錄”。