Correlation

確定兩個變量是線性還是非線性甚至不相關的最佳編程方法是什麼

  • September 8, 2020

確定兩個預測變量是線性還是非線性甚至不相關的最佳編程方法是什麼,可能使用任何包 scipy/statsmodels 或 python 中的其他任何東西。

我知道諸如繪圖和手動檢查之類的方法。但我正在尋找其他一些編程技術,幾乎可以肯定地區分雙變量圖是線性的還是非線性的,或者它們之間本質上沒有關係。

我在某處聽說過 KL 散度的概念。不太確定概念和深度,是否真的可以應用於此類問題。

以編程方式實現您想要的東西非常困難,因為有許多不同形式的非線性關聯。即使查看相關係數或回歸係數也無濟於事。在考慮這樣的問題時,最好參考 Anscombe 的四重奏:

在此處輸入圖像描述

顯然,兩個變量之間的關聯在每個圖中完全不同,但每個變量的相關係數完全相同。

如果您先驗地知道可能的非線性關係可能是什麼,那麼您可以擬合一系列非線性模型並比較擬合優度。但是,如果您不知道可能的非線性關係可能是什麼,那麼如果不直觀地檢查數據,我就無法看到如何穩健地完成它。三次樣條可能是一種可能性,但它可能無法很好地處理對數、指數和正弦關聯,並且可能容易過度擬合。編輯:經過進一步思考,另一種方法是擬合廣義加性模型(GAM),該模型將為許多非線性關聯提供良好的洞察力,但可能不是正弦關聯。

確實,做你想做的事的最好方法是視覺。我們可以立即看到上圖中的關係是什麼,但是任何程序化方法(例如回歸)都必然會出現失敗的情況。

所以,我的建議是,如果你真的需要這樣做是使用基於二元圖圖像的分類器。

  1. 使用從隨機選擇的分佈中為一個變量隨機生成的數據創建數據集。
  2. 生成具有線性關聯(具有隨機斜率)的另一個變量並添加一些隨機噪聲。然後隨機選擇一個非線性關聯並為另一個變量創建一組新值。您可能希望在該組中包含純隨機關聯。
  3. 根據 1) 和 2) 中模擬的數據創建兩個雙變量圖,一個是線性的,另一個是非線性的。首先規範化數據。
  4. 重複上述步驟數百萬次,或在您的時間範圍允許的範圍內重複上述步驟
  5. 創建一個分類器,對其進行訓練、測試和驗證,以對線性圖像和非線性圖像進行分類。
  6. 對於您的實際用例,如果您的模擬數據的樣本大小不同,則採樣或重新採樣以獲得相同的大小。規範化數據,創建圖像並將分類器應用於它。

我意識到這可能不是您想要的那種答案,但我想不出一種可靠的方法來使用回歸或其他基於模型的方法來做到這一點。

編輯:我希望沒有人把這當回事。我的觀點是,在雙變量數據的情況下,我們應該始終繪製數據。試圖以編程方式做任何事情,無論是 GAM、三次樣條還是龐大的機器學習方法,基本上都是讓分析師無法思考,這是一件非常危險的事情。

請始終繪製您的數據。

引用自:https://stats.stackexchange.com/questions/486527

comments powered by Disqus