簡體   English   中英

測量R中點之間對齊方式的最可靠方法

[英]Most robust way to measure the alignment between points in R

到目前為止,我以前一直使用cor來測量點之間的對齊方式。 我對結果感到非常滿意,介於-10之間的值總是會發現我想要的行。 但是,由於這里的回答和評論,我意識到這不是最可靠的方法,因為對於扁平線,標准偏差為零,例如:

> cor(1:10, rep(10,10))
[1] NA
Warning message:
In cor(1:10, rep(10, 10)) : the standard deviation is zero

我的目標是定義一個函數,該函數為完全對齊的點(不考慮坡度)提供1 ,為不在直線上的點提供接近0值。 您會提出比我更強大的方法嗎?

編輯:

按照@Hong Ooi的建議,我得到了

data1 <- data.frame(date = c(13636, 13636, 14403, 14761, 15201, 15741),
                    value = c(865310, 999989, 999989, 2, 999989, 26))

data2 <- data.frame(date = c(12667, 12745, 13106, 13276, 13461, 13626),
                    value = c(1904, 2055, 2740, 3376, 3567, 4099))

m <- cbind(data1$date, data1$value)
sdev <- prcomp(m)$sdev
sdev[1]/sum(sdev)
# 0.9986399

m <- cbind(data2$date, data2$value)
sdev <- prcomp(m)$sdev
sdev[1]/sum(sdev)
# 0.961

但是,我期望data1值非常低

在此處輸入圖片說明

您可以使用主成分 ,或更具體地說,可以使用第一個主成分解釋的總方差的比例。 這等效於擬合直線,以使點到直線的正交距離的平方和最小化,這與垂直距離相反(這是相關的功能)。

可以使用prcompprincomp函數在R中完成此操作。

m <- cbind(1:10, rep(10, 10))
sdev <- prcomp(m)$sdev
sdev[1]/sum(sdev)

如何使用回歸的R平方(或調整后的R平方)? 畢竟,R平方只是樣本相關系數的平方。

reg.data1 <-lm(data1$value~data1$date)
summary(reg.data1)$adj.r.squared
#[1] 0.1844582

reg.data2 <-lm(data2$value~data2$date)
summary(reg.data2)$adj.r.squared
#[1] 0.9848801

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM