2016-07-20 3 views
1

2 개의 독립 변수가있는 종속 변수에 대해 본질적으로 평균 시계열 데이터를 계산하려고합니다. DV = 3 개의 서로 다른 음성 - 소음 신호 (IV_B)와 함께 모터 작업 (IV_A)을 수행하는 응답으로 동공 팽창 (여러 시점 "T").인자 변수로 여러 열의 평균을 그리는 법

나는 각 시점에서 (각 T 칼럼에 대한 평균) 피험자에 걸쳐 평균 팽창을 플로팅하고 각 조건에 대해 별도의 선을 그려보고자합니다.

따라서 x 축은 IV_A (= 1), IV_B (= 1), IV_A (= 1) : IV_B (= 2) 및 IV_A (= 1)에 대한 별도의 줄과 함께 T1에서 T5가됩니다. IV_B (= 3)

외형에 따라 IV_A (= 2) 라인을 별도의 플롯에 표시 할 수 있습니다. 그러나 모든 그래프를 한 눈에 쉽게 비교할 수 있습니다.

데이터를 녹여서 매우 길게 만들거나 (110T 정도의 열이 있음) 데이터 프레임을 재구성하지 않고 원하는 것을 달성 할 수 있는지 궁금합니다.

데이터는 다음과 같이 보일 :

Subject IV_A IV_B  T1  T2  T3 T4 T5 
1   1  1   0.2 0.3 0.5 0.6 0.3 
1   1  2   0.3 0.2 0.3 0.4 0.4 
1   1  3   0.2 0.4 0.5 0.2 0.3 
1   2  1   0.3 0.2 0.3 0.4 0.4 
1   2  2   0.2 0.3 0.5 0.6 0.3 
1   2  3   0.2 0.4 0.5 0.2 0.3 
2   1  1   0.2 0.3 0.5 0.6 0.3 
2   1  2   0.3 0.2 0.3 0.4 0.4 
2   1  3   0.2 0.4 0.5 0.2 0.3 
2   2  1   0.3 0.2 0.3 0.4 0.4 
2   2  2   0.2 0.3 0.5 0.6 0.3 
2   2  3   0.2 0.4 0.5 0.2 0.3 
3   1  1   0.2 0.3 0.5 0.6 0.3 
3   1  2   0.3 0.2 0.3 0.4 0.4 
3   1  3   0.2 0.4 0.5 0.2 0.3 
3   2  1   0.3 0.2 0.3 0.4 0.4 
3   2  2   0.2 0.3 0.5 0.6 0.3 
3   2  3   0.2 0.4 0.5 0.2 0.3 

편집 :

불행하게도, 내가 같이 보이는 내 실제 데이터 프레임에 eipi10의 코드 @ 적응하지 수는 다음과 같습니다

Subject Trk_Y.N NsCond  X.3  X.2 X.1 X0 X1 X2 X3 
    1  N  Pink 0.3  0.4 0.6 0.4 0.8 0.6 0.6 
    1  N  Babble 0.3  0.4 0.6 0.4 0.8 0.6 0.6 
    1  N  Loss 0.3  0.4 0.6 0.4 0.8 0.6 0.6 
    1  Y  Pink 0.3  0.4 0.6 0.4 0.8 0.6 0.6 
    1  Y  Babble 0.3  0.4 0.6 0.4 0.8 0.6 0.6 
    1  Y  Loss 0.3  0.4 0.6 0.4 0.8 0.6 0.6 

Trk_Y.N 수단은 보조 모터 추적 작업이 있거나없는 블록이었습니다 ("예"또는 "아니오"). NsCond는 음성 자극이 나타나는 잡음 유형입니다.

"Y"를 "Tracking"및 "N"을 "No_Tracking"으로 대체하는 것이 좋습니다.

내가 시도 :

test_data[test_data$Trk_Y.N == "Y",]$Trk_Y.N = "Tracking" 

그러나 오류가있어 :

내가 당신의 데이터 구조를 이해하지 않을 수 있습니다
Warning message: 
In `[<-.factor`(`*tmp*`, iseq, value = c("Tracking", "Tracking", : 
    invalid factor level, NA generated 

답변

2

, 그래서 이것은 당신이 생각했던 것없는 경우 알려 주시기 바랍니다 :

library(reshape2) 
library(ggplot2) 
library(dplyr) 

"용융물"데이터를 긴 형식으로.

# Convert the two `IV` columns into a single column 
df.m = df %>% mutate(IV = paste0("A",IV_A,":","B",IV_B)) %>% select(-IV_A,-IV_B) 

# Melt to long format 
df.m = melt(df.m, id.var=c("Subject","IV"), variable.name="Time", value.name="Pupil_Dilation") 

head(df.m) 
Subject IV Time Pupil_Dilation 
1  1 A1:B1 T1   0.2 
2  1 A1:B2 T1   0.3 
3  1 A1:B3 T1   0.2 
4  1 A2:B1 T1   0.3 
5  1 A2:B2 T1   0.2 
6  1 A2:B3 T1   0.2 

이제 우리는 IV의 각 수준에 대한 각 Time 포인트 Pupil_Dilation의 평균 값을 제공하는 선을 그릴 수 있습니다, 플러스 95 % 신뢰 : 이것은 우리 각 Subject, IVTime 하나 개의 관찰을 줄 것이다 간격. 표본 데이터에는 각 수준이 IV 인 각 Time에 단 하나의 측정 값이 있으므로 아래의 예제 그래프에는 95 % 신뢰 구간이 포함되어 있지 않습니다.

pd=position_dodge(0.5) 

ggplot(df.m, aes(Time, Pupil_Dilation, colour=IV, group=IV)) + 
    stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.1, position=pd) + 
    stat_summary(fun.y=mean, geom="line", position=pd) + 
    stat_summary(fun.y=mean, geom="point", position=pd) + 
    scale_y_continuous(limits=c(0, max(df.m$Pupil_Dilation))) + 
    theme_bw() 

enter image description here

: 당신이 당신의 실제 데이터에 다중 측정이있는 경우 그러나, 당신은 신뢰 구간을 포함하는 아래의 코드를 사용할 수 있습니다
관련 문제