2013-11-28 60 views
31

我試圖理解R提供的scale的定義。我有要製作熱圖的數據(mydata),並且有非常強烈的正偏移。我爲scale(mydata)log(my data)創建了具有樹狀圖的熱圖,兩個樹狀圖都不相同。爲什麼?縮放數據的意義是什麼,而日誌轉換我的數據呢?如果我想查看說明我的數據列之間關係的樹狀圖,哪個更合適?瞭解R中的「縮放」

謝謝你的幫助!我已經閱讀了這些定義,但他們在我的腦海裏縈繞不已。

回答

54

log僅取對數的每個元素的對數(默認情況下,基數爲e)。
scale使用默認設置將計算整個矢量的平均值和標準偏差,然後通過減去平均值和除以sd來「縮放」每個元素的那些值。 (如果你使用scale(x, scale=FALSE),只會減去平均而不是由標準方差除以。)

注意,這將給你相同的價值觀

set.seed(1) 
    x <- runif(7) 

    # Manually scaling 
    (x - mean(x))/sd(x) 

    scale(x) 
+0

感謝您的回答!但scale()的意義是什麼?我的理由是什麼可以使用它(它使數據看起來更好,等等)。我只是想了解scale()的'點'。謝謝! – Jen

+14

當您有多個變量時,「scale」更具有意義,您可以跨越不同的比例進行考慮。例如,一個var的數量級爲100,而另一個的數量級爲1000000 –

+10

@Jen:另一種(非常丟失)的方式來思考它:當使用'scale'時,你不會改變數據,而是你正在改變比例尺(繪圖時的軸值)。考慮抓住兩端的軸並拉伸或壓縮它。這是規模。相反,'log'實際上改變了數據。對於較大的值,日誌的影響「更強」,對於較小的值,日誌的影響更小。 –

6

它提供不外乎一個標準化的數據。它創建的值在幾個不同的名稱下已知,其中一個是z分數(「Z」,因爲正態分佈也稱爲「Z分佈」)。

更可以在這裏找到:

http://en.wikipedia.org/wiki/Standard_score