2014-04-27 4 views
1

ggplot2에서 교차 레벨 상호 작용이있는 혼합 효과 logit 모델의 차트로 예측 된 확률로 작업하고 있습니다. 예측 된 확률을 계산하고 모델에서 관찰 된 작은 상호 작용을 플로팅 할 수있었습니다. 내가하고 싶은 무엇ggplot2에서 x 축을 지수로 표시하지 않음

The working example

, 그것이 ggplot2에 가능한 모든 경우 (즉, 거듭 ​​제곱) 원래는 규모가 x 축 변환입니다 (나는 그것이이다 확실 해요). 내 작업 예제의 x 변수 (rangeofx)는 내 모델에서 기록 된 x의 중심 값입니다. 그러나 비선형이고 모델에서 추정 된 것이 아니기 때문에 관계를 단순하게 지수화하기를 원하지 않습니다. 나는 변환되지 않은 x 값을 작업 예제 (untransformedx)에 포함 시켰습니다.

ggplot2 패키지를 사용하면 어떻게됩니까? 그 밖의 모든 것은 평등합니다. (아마도 전설을 추가하고 그 라인을 흑백으로 읽기 쉽게 만들어서) 독자가 따라 다니도록 만들면 좋겠지 만, 제 분야의 평론가는 그 무모한 태도를 싫어하고 x의 직관적이지 않은 중앙 집중식 로그 값이 0과 100 사이의보다 직관적 인 값과 일치한다는 것을보고 싶습니다. 5, 10, 25, 50, 75 등과 같은 변환되지 않은 값에서 예측 된 확률을 전달하려는 경우에 적합합니다. 등등. 그게 내가하고 싶은 다음 일이 될거야.

여기에 도움을 주시면 감사하겠습니다. 실례는 다음과 같습니다. 감사.

library(ggplot2) 
library(scales) 

Example <- read.csv("http://dl.dropbox.com/s/jyxdo6jgzf72yn5/ggplot2-example.csv") 
summary(Example) 

ExampleGraph <- ggplot(Example, aes(rangeofx, p.group1)) + geom_line() + 
    geom_line(aes(rangeofx, p.group2), color="red") + 
    geom_line(aes(rangeofx, p.group3), color="blue") + 
    theme_bw() + opts(title="The Effect of X on Y \n Among the Three Groups") + xlab("Range of X (Logged)") + ylab("Pr(Y)") 

ggsave(file = "output.png") 

답변

2

당신은 untransformedxscale_x_sqrt을 사용할 수

# transforming your data from wide to long 
require(reshape2) 
ex2 <- melt(Example, id=c("rangeofx","untransformedx")) 

# creating the plot 
ggplot(ex2, aes(x=untransformedx, y=value, color=variable)) + 
    geom_line() + 
    scale_x_sqrt(breaks=c(1,5,10,25,50,75)) + 
    theme_bw() + 
    labs(title="The Interaction between X and Y \n Among the Three Groups", x="Range of X (Logged)", y="Pr(Y)") 

결과 : enter image description here

또는 X 축 조정하지 않고 :

ggplot(ex2, aes(x=untransformedx, y=value, color=variable)) + 
    geom_line() + 
    theme_bw() + 
    labs(title="The Interaction between X and Y \n Among the Three Groups", x="Range of X (Logged)", y="Pr(Y)") 

제공 : enter image description here

+0

도움이되는 답변을 보내 주셔서 감사합니다. 세 그룹 (예 : 그룹 1의 다이아몬드, 그룹 2의 사각형, 그룹 3의 원)마다 마커를 1, 5, 10, 25, 50 및 75와 같이 어떻게 추가 할 수 있습니까? 'scale_x_sqrt'가 답이 될 것이라고 생각하지 않았습니다. 파울로의 도움으로 나는 앞으로 나아갈 것입니다. 건배. – steve

1

나는 당신이 당신의 X VAR의 지수와 원하지만 나머지 에 노력을 이해하지 않았다

ggplot example with labels

또는 변형되지 않은 변수 x와

library(reshape2) 

dat <- melt(Example, id = c('rangeofx', 'untransformedx'), 
      variable.name = "group") 
ggplot(dat, aes(rangeofx, value)) + 
    geom_line(aes(colour = group)) + 
    theme_bw() + 
    labs(title="The Interaction between X and Y \n Among the Three Groups", 
     x = "Range of X (Logged)", y ="Pr(Y)") + 
    scale_colour_grey() 

ggplot(dat, aes(untransformedx, value)) + 
    geom_line(aes(colour = group)) + 
    scale_x_sqrt() + 
    theme_bw() + 
    labs(title="The Interaction between X and Y \n Among the Three Groups", 
     x = "Range of X (Logged)", y ="Pr(Y)") + 
    scale_colour_grey() 

untransformed x

+0

을 sh 감사합니다. 전설을 추가하는 방법 때문에. 이것은 시작하는 데 도움이되었습니다. 지수화에서 특히 신경 쓰는 것은 아니지만 괴상한 평론가가하는 것이라고 생각합니다. 내 모델에서 추정 한'x' 변수는 중앙에 위치하고 기록됩니다 (주로 양수 스큐와 비 직관적/비 발생 제로 때문). 그러나 5, 10, 25, 50, 75 등의 값은 자연 로그를 이해하지 못할 수도있는 내 분야의 리뷰어에게 직관적입니다. 나는 그것을 조금 분명히하기를 바랍니다. – steve

관련 문제