これは、最初にここで尋ねられた質問の繰り返しです: 棒グラフの統計的に有意な差を示す ですが、pythonではなくRを求められました。
私の質問はとても簡単です。 Rでバープロットを作成し、可能な場合はggplot2を使用して、異なるバー間の有意差を示します。このようなものを作ります。私は周りを検索しましたが、まったく同じことを尋ねる別の質問を見つけることができません。
geom_path()
およびannotate()
を使用して、同様の結果を得ることができます。この例では、適切な位置を自分で決定する必要があります。 geom_path()
では、接続線の小さな目盛りを取得するために4つの数値が提供されています。
df<-data.frame(group=c("A","B","C","D"),numb=c(12,24,36,48))
g<-ggplot(df,aes(group,numb))+geom_bar(stat="identity")
g+geom_path(x=c(1,1,2,2),y=c(25,26,26,25))+
geom_path(x=c(2,2,3,3),y=c(37,38,38,37))+
geom_path(x=c(3,3,4,4),y=c(49,50,50,49))+
annotate("text",x=1.5,y=27,label="p=0.012")+
annotate("text",x=2.5,y=39,label="p<0.0001")+
annotate("text",x=3.5,y=51,label="p<0.0001")
私はこれが古い質問であることを知っています。DidzisElfertsの回答はすでに問題の1つの解決策を提供しています。しかし、私は最近、重要度バーを追加するプロセス全体を簡略化するggplot-extensionを作成しました: ggsignif
面倒にgeom_path
とannotate
をプロットに追加する代わりに、単一のレイヤーgeom_signif
を追加するだけです。
library(ggplot2)
library(ggsignif)
ggplot(iris, aes(x=Species, y=Sepal.Length)) +
geom_boxplot() +
geom_signif(comparisons = list(c("versicolor", "virginica")),
map_signif_level=TRUE)
パッケージの完全なドキュメントは [〜#〜] cran [〜#〜] にあります。
上記の方法を使用しましたが、geom_path関数よりもアノテーション関数の方が線の作成が簡単であることがわかりました。 「テキスト」の代わりに「セグメント」を使用してください。セグメントごとに分割し、各ラインセグメントの開始と終了のx値とy値を定義する必要があります。
3つのラインセグメントを作成する例:
annotate("segment", x=c(1,1,2),xend=c(1,2,2), y= c(125,130,130), yend=c(130,130,125))