要約統計量からの信頼区間バーのプ​​ロット


8

箱ひげ図に少し似ています。必ずしも標準の上限信頼区間、下限信頼区間、平均、およびデータ範囲を示すボックスプロットを意味するわけではありませんが、95%信頼区間と平均という 3つのデータのみを含むボックスプロットのようなものです。

これはまさに私が欲しいものを持っていたジャーナル記事のスクリーンショットです: ここに画像の説明を入力してください

また、そのようなプロットを作成するために回答者が言及するソフトウェアをどのように使用するかについても知りたいです。


7
「標準の信頼区間の上限、信頼区間の下限、平均、データ範囲を表示するボックスプロット」とは、標準のボックスプロットではありません。標準の箱ひげ図は、中央値、四分位数、最小値と最大値、その他の詳細を示します。
Nick Cox

1
@Nick右:しかし、何をしている、そのようなグラフィックが実際に呼び出さ?(
わかり

6
この種のプロットは標準です(ただし、ボックスプロットではありません)。すべての主要な統計パッケージ(Stata、SAS、R、MATLAB )で作成できます。Excelでもできると思います。
COOLSerdash 2013

1
@COOLSerdash素晴らしい!私はすでにMATLABを持っているので、MATLABの答えを書いていただけませんか?
2017

6
私はこれらの信頼区間プロットを呼び出しますが、すべてのプロットが実際に異なる名前を必要とするわけではありません。すべてのプロットは、しかし....テキストキャプションに値する
ニック・コックス

回答:


9

MATLABでは、errorbar関数を試すことをお勧めします。http//www.mathworks.de/de/help/matlab/ref/errorbar.html

代わりに、あなたはそれを馬鹿で手動の方法で行うことができます。たとえば、データポイントの行列 "a"が与えられた場合、関数m = mean(a)を使用して平均を計算し、CIを計算し(必要なCIに応じて)、結果を手動でプロットできます。

CIがマトリックスCI(第1列と第2列)にあり、平均がマトリックスaにあると仮定して、平均とCIがすでにわかっている場合のデモ:

plot(1:length(CI),a,'o','markersize', 10)           % plot the mean
hold on;
plot(1:length(CI),CI(1,:),'v','markersize', 6)              % plot lower CI boundary
hold on;
plot(1:length(CI),CI(2,:),'^','markersize', 6)              % plot upper CI boundary
hold on;

for I = 1:length(CI)                                        % connect upper and lower bound with a line
line([I I],[CI(1,I) CI(2,I)])
hold on;
end;

axis([0 length(CI)+1 min(CI(1,:))*0.75 max(CI(2,:))*1.25])  % scale axis

個々の測定がわかっている場合のデモンストレーション、繰り返し測定実験、3 +条件、列ごとに1つの条件、行列aの行ごとに1つの被験者、欠落していないサンプル、MATLABのttest()による95%CI :

[H,P,CI] = ttest(a);                                        % calculate 95% CIs for every column in matrix a
                                                            % CIs are now in the matrix CI!

plot(1:length(CI),[mean(a)],'o','markersize', 10)           % plot the mean
hold on;
plot(1:length(CI),CI(1,:),'v','markersize', 6)              % plot lower CI boundary
hold on;
plot(1:length(CI),CI(2,:),'^','markersize', 6)              % plot upper CI boundary
hold on;

for I = 1:length(CI)                                        % connect upper and lower bound with a line
line([I I],[CI(1,I) CI(2,I)])
hold on;
end;

axis([0 length(CI)+1 min(CI(1,:))*0.75 max(CI(2,:))*1.25])  % scale axis

私の最新の編集を読んでください、申し訳ありませんが、私から地獄に迷惑をかけている一部の人々は、95%のCIしか知らず、追加のデータはないという事実を編集しました。
BH2017 2013

@BrentonHorneはエラーバー機能へのリンクが役に立たなかったのですか?それはまさにあなたが望むものに見えます。
Peter Ellis

Peterが言ったように、次にerrorbar()を使用します。または、私が作成したスクリプトを使用しますが、ttestの最初の行を無視して、平均とCIを直接フィードします。たぶんそれを編集します。
ジョナ2013

@BrentonHorne公平を期すために、あなたはその点について広範囲に議論したことはなく、質問の本文でそれについてまったく言及していませんでした。それはタイトルによって暗示されていましたが、このタイトルは誤ってボックスプロットについても言及しました。これは編集が修正しようとした問題です。その過程で「のみ」という言葉が消えたのは残念ですが、質問の大部分を意図的に編集した人はいません。その上、答えには解決策が含まれており、残りのテキストは他の読者にとって興味深いかもしれません。
ガラ

うまくいったコードを実行しましたが、問題は、私の質問のスクリーンショットのように、上部のCIと下部のCIを行で結合できる手段があったら、それが欲しいということです。
BH2017

13

これがあなたを助けるかどうか見てください。Rソリューション:

par(mfrow=c(2,1)) # to stack the charts on column

#Dataset 1

upperlimit = c(10,12,8,14)
lowerlimit = c(5,9,4,7)
mean = c(8,10,6,12)

df = data.frame(cbind(upperlimit,lowerlimit,mean))

plot(df$mean, ylim = c(0,30), xlim = c(1,4))

install.packages("plotrix")
require(plotrix)
plotCI(df$mean,y=NULL, uiw=df$upperlimit-df$mean, liw=df$mean-df$lowerlimit, err="y",      pch=20, slty=3, scol = "black", add=TRUE)

#Dataset 2

upperlimit_2 = upperlimit*1.5
lowerlimit_2 = lowerlimit*0.8
mean_2 = upperlimit_2-lowerlimit_2

df_2 = data.frame(cbind(upperlimit_2,lowerlimit_2,mean_2))

plot(df$mean_2, ylim = c(0,30), xlim = c(1,4))

plotCI(df_2$mean_2,y=NULL, uiw=df_2$upperlimit_2-df_2$mean_2, liw=df_2$mean_2-   df_2$lowerlimit_2, err="y", pch=20, slty=3, scol = "black", add=TRUE)

rm(upperlimit,lowerlimit,mean,df,upperlimit_2,lowerlimit_2,mean_2,df_2) #remove the objects stored from workspace

par(mfrow=c(1,1)) # go back to default (one graph at a time)

ここに画像の説明を入力してください


そして、そのようなコードをどのように実行しますか?私はRを完全に初めて使用するので、無知なので、Rを説明する必要があります。
2017

3
:私は打撃を与えるためにあなたを助けることができますが、まず次の2つの手順を実行する必要があります:私は)あなたのPC上において、R Studioをインストール、II)再現性の例を提供stackoverflow.com/questions/5963269/...
アンドレ・シルバ

@AndreSilva、私はあなたがそこにさらに1マイル進んだと思います。素晴らしいサポートとメンタリング!
doug.numbers 2013

これは私があなたのコードを実行するために得たものですi.stack.imgur.com/yrZaJ.png
BH2017

@BrentonHome。奇妙な。私はテストしたところ、うまくいきました。「エラー」バーは表示されていません。plotrixパッケージをインストールしましたか?plotrixパッケージをインストールするコードにプログラムコマンドラインを追加しました。もう一度やり直してください。
Andre Silva

7

ggplot2を使用したRでのこのタイプのプロットですが、軸のフォントサイズをいじる必要があるかもしれません。

library(ggplot2)
data.estimates = data.frame(
  var   = c('1', '2', '3', '4', '5', '6', '7', '8', '9'),
  par = c(1.12210,0.18489,1.22011,1.027446235,0.43521,0.53464,1.93316,-0.43806,-0.12029),
  se = c(0.42569,0.32162,0.58351,0.771608551,0.24803,0.65372,0.92717,0.45939,0.51558))
data.estimates$idr <- exp(data.estimates$par)
data.estimates$upper <- exp(data.estimates$par + (1.96*data.estimates$se))
data.estimates$lower <- exp(data.estimates$par - (1.96*data.estimates$se))

p2 <- ggplot(data.estimates, aes(var,idr, size=10)) + theme_bw(base_size=10)
p2 + geom_point() +geom_errorbar(aes(x = var, ymin = lower, ymax = upper, size=2), width = 0.2) + scale_y_log10(limits=c(0.1, 50), breaks=c(0.1, 0.5, 1, 5, 10, 25, 50)) + xlab("Site") + ylab("RR")

ここに画像の説明を入力してください



2

元のデータにアクセスできると仮定すると、Rでsciplotライブラリのlineplot.CI関数を使用してこれを行うことができます

mtcarsデータセットの例:

lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)

lineplot.CIはデフォルトでSEバーをプロットすることに注意してください(95%のCI間隔をプロットするために、引数ci.funで新しい関数を定義して変更できます)。

lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars, ci.fun=function(x) c(mean(x)-1.96*se(x), mean(x)+1.96*se(x)))

1

これは、Rでpoints()(またはplot(..., type="p"))およびを使用して実行できますsegments()。CIを作成するために設計されたR関数もありますが、それらには元のデータが必要になる場合があります。で作成された同じFigureの複数のパネルpar(mfrow=c(4,1))。Rがわからない場合、これを簡単に行うことは困難です(たとえば、Rをもう少し学ぶか、特定のデータセットを手伝ってもらう必要があります)。


1

GraphPad Prismは、この種のグラフを簡単に作成でき、入力したエラー値からエラーバーをプロットします。平均、-エラーおよび+エラーの入力用にフォーマットされたグループ化されたテーブルを作成します。


30日間の試用版ではない無料のコピーを入手することはできますか?
2017

1
@BrentonHorne:いいえ。無料のソフトウェアではありません。
Harvey Motulsky 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.