4

2 つの患者タイプ (患者 1 の 33) と (患者 2 の 99) で構成される 132 x 107 のデータセットがあります。

外れ値を探しているので、次のコマンドを使用して、データセットで pca を実行し、最初の 4 つのコンポーネントの qqplot を実行しました

pca = prcomp(data, scale. = TRUE)
plot(pca$x, pch = 20, col = c(rep("red", 33), rep("blue", 99)))  

次を使用して2番目のコンポーネントのqqplotを実行すると:

qqPlot(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99)))     

次のグラフは、2 つの明確な外れ値を示しています。左下隅の赤い点は患者 1 です。

QQプロット

これらのポイントを削除できるように、データ内のこれらのポイントのインデックスを計算する簡単な方法はありますか?

4

3 に答える 3

8

car何らかの理由で、identify メソッドがパッケージでサポートされているとは思えません(のソースqqPlot())

米国の逮捕データの PCA を見てみましょう...

pca <- prcomp(USArrests) 

これを使用したプロットqqPlotは非常に簡単です。

require(car)
qqPlot(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99)))

ただし、qqPlot()による点の選択はできませんidentify()

identify(qqPlot(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99))))
# numeric(0)

ただし、パッケージqqnorm()内で使用することはできます。stats

identify(qqnorm(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99))))

qqline()これにより、あまり洗練されていないグラフが生成されますが、 (これもstats)ともう少し数学を使用して、手動で線と信頼区間を追加できるはずです。

于 2013-10-30T14:26:55.393 に答える
4

R で識別メソッドを試すことができます。通常は、次を実行します。

identify(qqPlot(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99))))

識別したいポイントを左クリックします。スコア ベクトルのポイントのインデックスは、元のデータと同じである必要があります。

于 2013-10-30T13:52:24.457 に答える