2014-07-18 4 views
2

는 내가 data.frame에게이라인 길이는

> s1g2 
         centre Estimate   Var n 
factor(groupchange)2  1 0.6821912 1.486330e+00 217 
factor(groupchange)21  2 0.3535025 1.622455e+00 165 
factor(groupchange)22  3 -15.4053858 3.284365e+06 152 
factor(groupchange)23  4 -0.2659903 1.837585e+00 137 
factor(groupchange)24  5 0.4702335 2.198379e+00 201 
factor(groupchange)25  6 1.1657077 9.546860e-01 159 
> 
나는 metafor 라이브러리

이의 숲 명령을 사용하여 플롯 싶습니다

내가

res <- rma(Estimate, Var, data=s1g2, method="ML") 
sav <- blup(res) 

par(family="mono", mar=c(5,4,1,2)) 
forest(res, refline=res$b, addcred=TRUE, xlim=c(-7,8),alim=c(-3,3), slab=1:6, psize=.8, 
     ilab=paste0("(n = ", formatC(s1g2[["n"]], width=3, big.mark=","), ")"), 
     ilab.xpos=-3.5, ilab.pos=2, rows=6:1+.15) 

text(-7, 15, "Trial (total n)", pos=4) 
text(8, 15, "Log Odds Ratio [95% CI]", pos=2) 

을 시도 것입니다

작동하지만 센터 = 3의 화살표가 왼쪽에서 너무 길다. 어떻게 줄일 수 있습니까? alim 명령은 오른쪽에서만 작동하는 것 같습니다.

또한 플롯에 다른 라이브러리를 사용하는 솔루션이 허용됩니다. 나는 다음과 같이하고 싶다. http://mcfromnz.files.wordpress.com/2012/11/forest_plot_2.png

답변

1

나는 견적이 무엇을 나타내는지는 모르지만, 나머지와 다른 것처럼 보이는 -15.41의 값 (그리고 거대한 분산)을 가진 센터가있다. 축 한계가 -3에서 3 인 경우, 추정치는 실제로 표시되지 않으며 CI는 너무 커서 전체 축 범위를 포괄합니다.

어쨌든 패키지의 다양한 forest 함수는 실제 데이터를 포함하는 플롯/축 제한을 적용합니다. 이것이 플롯/축 한계가 -15.41 값으로 확장 된 이유입니다.

if (xlim[1] > min(yi, na.rm = TRUE)) { 
    xlim[1] <- min(yi, na.rm = TRUE) 
} 
if (xlim[2] < max(yi, na.rm = TRUE)) { 
    xlim[2] <- max(yi, na.rm = TRUE) 
} 
if (alim[1] > min(yi, na.rm = TRUE)) { 
    alim[1] <- min(yi, na.rm = TRUE) 
} 
if (alim[2] < max(yi, na.rm = TRUE)) { 
    alim[2] <- max(yi, na.rm = TRUE) 

그래서, 하나의 옵션이 될 것이다, 소스 패키지를 다운로드 그 라인을 주석, 다음에서 패키지를 설치합니다 :

본질적으로

, 당신이 필요하지 않은 forest.rma에서이 라인이다 출처.

res <- rma(Estimate, Var, data=s1g2, method="ML") 
res$yi.f[3] <- NA 
res$vi.f[3] <- NA 

options(na.action="na.pass") 
par(family="mono", mar=c(5,4,1,2)) 
forest(res, refline=res$b, addcred=TRUE, xlim=c(-7,8),alim=c(-3,3), slab=1:6, psize=.8, 
     ilab=paste0("(n = ", formatC(s1g2[["n"]], width=3, big.mark=","), ")"), 
     ilab.xpos=-3.5, ilab.pos=2, rows=6:1+.15) 
text(-7, 15, "Trial (total n)", pos=4) 
text(8, 15, "Log Odds Ratio [95% CI]", pos=2) 

library("shape") 
Arrows(-3, 4.15, 3, 4.15, code=3, arr.type="triangle",) 
rect(4, 3.5, 8, 4.5, col="white", border=NA) 
text(4, 4.15, "-15.41 [ see note ]", pos=4) 

당신은 그냥 다른 사람 (help(Arrows) 참조)처럼 보이게하려면 화살표 길이/높이 떨림해야합니다 : 여기

해킹 솔루션의 비트가. 그리고 텍스트의 위치를 ​​가지고 놀아야합니다. 나는 본질적으로 의미가 없으므로 실제 CI 경계 (-3567.41 ~ 3536.60)를 추가하지 않을 것입니다. 대신 문제를 설명하는 음모를 추가 할 것입니다.