0

私の質問は単純だと思いますが(タイトルがそうでなくても...)、まだ明確な答えを見つけることができませんでした。心理物理タスクで反応時間のヒストグラムをプロットしたいと考えています。そのうちの 2 つを同じ Figure にプロットする必要があります。1 つは正しい応答、もう 1 つは間違った応答です。

絶対数をプロットするのではなく、以下に対応する相対比率をプロットしたい:

正しい応答の場合:count(correct==1) / sum(count(correct==1) + count(correct==0))

不正解の場合:count(correct==0) / sum(count(correct==1) + count(correct==0))

今のところ私はそれを持っています:

ggplot(data, aes(x=RT, color=correct)) 
    + geom_histogram(aes(y = ..count../sum(..count..))) 
    + stat_bin(breaks = seq(5,800,by=10))

しかし、それが私が望んでいることを行っているかどうかはわかりません (合計は、正しい応答と誤った応答の両方の合計に対応していますか?)。私は ..count.. などに慣れていません。この側面に関するドキュメントの良い推奨事項はありますか?

前もって感謝します。

編集:入力データは次のとおりです。

df <- structure(list(RT = c(359L, 214L, 219L, 206L, 120L, 166L, 156L, 
       181L, 135L, 122L, 110L, 101L, 139L, 215L, 106L, 217L, 162L, 135L, 
       114L, 205L), correct = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
       1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L)), .Names = c("RT", 
       "correct"), class = "data.frame", row.names = c(NA, -20L))

これは、最終的に必要な出力であるベース R を使用して以前に作成したプロットへのリンクです。 https://www.dropbox.com/s/nqn83pkoq7o0stv/RTexample.png これらは線です (ただし、ヒストグラムに基づいており、正しい ==1 は黄色、正しい ==0 は青色)。私が欲しい特定の機能は、両方の行の合計が 1 になることです。

4

2 に答える 2

0

ショラ、

ブライアン・ハンソンは絶対に正しいです。'ggplot'関数の一部として変換を実行しようとするのは本当にやめるべきです。魅力的だとは思いますが、「ggplot」のプロット内変換方法は、事前に定義されたグラフを作成するよりも、データ探索に使用する必要があります。'hist'関数をすばやく使用して、必要なデータを取得し、データを変換してから、実際のグラフ化のために'ggplot'にフィードすることができます。データを手動で変換することの最大の利点は、すべてのデータが実際に動作していることを確認できることです。(質問のように)答えが正しいかどうかを推測するのに問題はありません。

2つのプロットをどのように配置するかを正確に決定する必要がありますが、それはすべて「ggplot」で実行できます。外部変換の例を次に示します。

ステップ1:[正しい]=1のヒストグラム値を取得します。

correct_Hist <- hist(data[correct==1, 1], breaks=seq(5, 800, by=10), plot=FALSE)

ステップ2:[correct]=0のヒストグラム値を取得します。

incorrect_Hist <- hist(data[correct==0, 1], breaks=seq(5, 800, by=10), plot=FALSE)

ステップ3:カウントを変換します。質問でのあなたの説明は少し曖昧であり、いくつかの異なる方法でとられる可能性があります。この回答では、ヒストグラムではなく、特定の範囲のRT値の何パーセントが誤った応答または正しい応答で表されているかを示す棒グラフが必要であると想定しています。カウントができたので、これは非常に簡単です。

correct_Bar_Values <- correct_Hist$counts / (correct_Hist$counts + incorrect_Hist$counts)
incorrect_Bar_Values <- incorrect_Hist$counts / (correct_Hist$counts + incorrect_Hist$counts)

ステップ4:好きなようにプロットします。プロットしたい生の値ができたので、さまざまな方法を使用してプロットすることができます。すでに計算を行っているので、「geom_hist」レイヤーではなく「geom_bar」レイヤーをお勧めします。'ggplot'で使用する2つの異なる'grid'ビューポートも指定する必要がありますが、それについてサポートが必要な場合は、2番目の質問を送信してください。これは、データを棒グラフにすばやく作成する方法です。

# The percentage of answers that were not correct
qplot(incorrect_Hist$mids,y=incorrect_Bar_Values, geom="bar", stat="identity", ylim=c(0,1))

# The percentage of answers that were correct
qplot(correct_Hist$mids,y=correct_Bar_Values, geom="bar", stat="identity", ylim=c(0,1))
于 2013-01-25T15:16:03.613 に答える
0

私が正しく理解していればposition="fill"、あなたのニーズを満たす必要があります:

ggplot(df,aes(x=RT,fill=factor(correct,labels=c("Incorrect","Correct")))) +
 geom_bar(breaks=seq(5,800,by=10),position="fill") +
  scale_y_continuous("",labels=percent) + scale_fill_discrete("")

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

1つのヒストグラムは下部(ゼロレベル)に基づいており、もう1つは上部に基づいています。

于 2013-01-25T15:04:17.490 に答える