3

RでPCAを実行しようとしています。

私のデータには10,000列と90行があり、prcomp関数を使用してPCAを実行しました。prcompの結果を使用してバイプロットを作成しようとすると、10,000個のプロットされたベクトルがデータポイントをカバーするという問題が発生しました。バイプロットがベクトルの表現を非表示にするオプションはありますか?

また

plotPCAの結果を取得するために使用できます。しかし、1から90までの番号が付けられたデータポイントに従ってこれらのポイントにラベルを付ける方法がわかりません。

Sample<-read.table(file.choose(),header=F,sep="\t")

Sample.scaled<-data.frame(apply(Sample_2XY,2,scale))

Sample_scaled.2<-data.frame(t(na.omit(t(Sample_2XY.scaled))))

pca.Sample<-prcomp(Sample_2XY.scaled.2,retx=TRUE)

pdf("Sample_plot.pdf")

plot(pca.Sample$x)

dev.off()
4

1 に答える 1

8

help(prcomp)またはを実行すると、ヘルプファイルは、関数によって返されるオブジェクトに?prcomp含まれるすべてのものを通知します。prcomp()プロットしたいものを選択し、よりも詳細に制御できる関数を使用して実行する必要がありますbiplot()

ヘルプファイルで問題が明確にならない場合のより一般的なトリックはstr()、prcompオブジェクト(この場合はpca.Sample)で実行して、そのすべての部分を確認し、必要なものを見つけることです(str()Rの内部構造をコンパクトに表示します)。物体。 )

Rのサンプルデータの例を次に示します。

# do a pca of arrests in different states
p<-prcomp(USArrests, scale = TRUE) 

str(p)醜くて長すぎて含めることができませんが、p $ xの状態は行名であり、主成分上の位置は列であることがわかります。plot()これで武装して、withやtext()(ラベルの場合)など、好きなようにプロットできます。

# plot and add labels
plot(p$x[,1],p$x[,2])
text(p$x[,1],p$x[,2],labels=rownames(p$x))

多くの観測値を使用して散布図を作成している場合、ラベルが読み取れない可能性があります。したがって、次のように識別できる、より極端な値のみにラベルを付けることができますquantile()

#make a new dataframe with the info from p we want to plot
df <- data.frame(PC1=p$x[,1],PC2=p$x[,2],labels=rownames(p$x))

#make sure labels are not factors, so we can easily reassign them
df$labels <- as.character(df$labels)

# use quantile() to identify which ones are within 25-75 percentile on both
# PC and blank their labels out
df[ df$PC1 > quantile(df$PC1)["25%"] & 
    df$PC1 < quantile(df$PC1)["75%"] &
    df$PC2 > quantile(df$PC2)["25%"] &
    df$PC2 < quantile(df$PC2)["75%"],]$labels <- ""

# plot
plot(df$PC1,df$PC2)
text(df$PC1,df$PC2,labels=df$labels)
于 2012-11-13T22:20:51.003 に答える