1

cor今までは点同士の位置合わせを測るのに使っていました。私は結果、その間の値に非常に満足しており-10常に必要な行を見つけています. ただし、 hereの回答とコメントのおかげで、次のような平らな線の標準偏差がゼロであるため、最も堅牢なアプローチではないことに気付きました。

> 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

ここに画像の説明を入力

4

2 に答える 2

6

主成分、またはより具体的には、最初の主成分によって説明される総分散の比率を使用できます。これは、垂直方向の距離とは対照的に、ポイントの直交距離の二乗和を最小化するラインをラインに適合させることと同じです (これは相関が行うことです)。

prcompこれは、またはprincomp関数のいずれかを使用して R で実行できます。

m <- cbind(1:10, rep(10, 10))
sdev <- prcomp(m)$sdev
sdev[1]/sum(sdev)
于 2013-06-26T13:46:50.103 に答える