散布図の 95% 信頼楕円を生成する R 関数があります。出力は次のようになります。各楕円 (50 行) のデフォルトは 50 ポイントです。
[,1] [,2]
[1,] 0.097733810 0.044957994
[2,] 0.084433494 0.050337990
[3,] 0.069746783 0.054891438
ggplot2
このコマンドから生成された散布図で、「サイト」と呼ばれる因子の各レベルに対して、そのような楕円を多数重ね合わせたいと思います。
> plat1 <- ggplot(mapping=aes(shape=site, size=geom), shape=factor(site)); plat1 + geom_point(aes(x=PC1.1,y=PC2.1))
dflat
これは、次のように呼び出されるデータセットで実行されます。
site geom PC1.1 PC2.1 PC3.1 PC1.2 PC2.2
1 Buhlen 1259.5649 -0.0387975838 -0.022889782 0.01355317 0.008705276 0.02441577
2 Buhlen 653.6607 -0.0009398704 -0.013076251 0.02898955 -0.001345149 0.03133990
結果は問題ありませんが、楕円を追加しようとすると (「Buhlen」と呼ばれるこの 1 つのサイトについて考えてみましょう):
> plat1 + geom_point(aes(x=PC1.1,y=PC2.1)) + geom_path(data=subset(dflat, site="Buhlen"),mapping=aes(x=ELLI(PC1.1,PC2.1)[,1],y=ELLI(PC1.1,PC2.1)[,2]))
エラー メッセージが表示されます。"Error in data.frame(x = c(0.0977338099339815, 0.0844334944904515, 0.0697467834016782, :
arguments imply differing number of rows: 50, 211
過去にこれを修正することができましたが、方法を思い出せません。geom_path は、新しいポイントをプロットするのではなく、同じポイントに依存しているようです。どんな助けでも大歓迎です。