안녕하세요 문건웅교수님
moonBook 너무 잘 쓰고 있습니다. 먼저 감사하다고 말씀드리고 싶습니다.
한가지 질문이 있습니다.
첨부한 ORplot 표에서 x축 OR 표시된 값들의 간격을 수정하는 방법은 없는지요?
그래프 모양은 이쁘나, x축 값들이 너무 촘촘히 표시되어 숫자들이 겹쳐나옵니다.
해결을 할 수 있는 방법이 있는지 여쭙고 싶습니다.
바쁘신와중에 감사합니다.
moonBook 애용자 올림
Comment 3
-
cardiomoon
2017.05.02 10:53
-
hawk1227
2017.05.03 05:05
문교수님, Code 감사합니다. 그런데, ggOR을 실행해보니
ORplot 처럼 type=3 같은 멋진 plot은 안되는 것 같은데요? 가능한지요?
-
cardiomoon
2017.05.03 10:39
시간이 나면 만들어보겠습니다.^^
No. | Subject | Author | Date |
---|---|---|---|
1034 | 로지스틱 회귀분석 질문드립니다. [2] | 윤이아빠 | 2018.11.06 |
1033 | forest plot 그리는 법 문의 드립니다. [1] | 강민정 | 2019.02.24 |
1032 | Rstudio 서버 미러링 방법 궁금해요 [1] | mjcho | 2018.01.11 |
1031 | 웹에서 클릭만으로 하는 R통계분석에서 궁금한점 [2] | osr33260216 | 2016.02.18 |
1030 | 웹R에서 주석 위치 바꾸는 법 [2] | alse | 2016.09.17 |
1029 | r studio server expired..여서 접속이 안됩니다 [2] | 스튜던트 | 2018.04.22 |
1028 | 보고서/플롯 옵션 관련 문의입니다. [1] | wlsrn | 2016.12.12 |
1027 | 메타분석에서 forest plot 크기 [1] | SumiHan | 2016.05.04 |
1026 | 불충분한 데이터의 생존분석에 관하여 질문드립니다. [2] | fermion503 | 2018.05.14 |
1025 | mytable 문의드립니다. [1] | seyi0918 | 2022.11.30 |
» | ORplot x축 표시값 변경문의 [3] | 영진 | 2017.04.28 |
1023 | mytable 사용 시 결측치의 표시 [1] | twogama2 | 2017.10.30 |
1022 | ggplot2에 관하여 | 쑤니 | 2018.12.30 |
1021 | 변수 변환 결과 해석 관련... [3] | 하늘산책 | 2015.12.11 |
1020 | 세군의 비율에 대한 비교와 사후검정에 대해 질문드립니다. | 통계장님 | 2018.07.11 |
1019 | PSM caliper 문의드립니다. | elsa | 2019.03.28 |
1018 | 로그변환 후 회귀분석 시 결과물 [1] | 반디12 | 2016.07.19 |
1017 | 상호작용효과를 폴리곤 그래프로 만들 때 오류 [3] | 반디12 | 2016.01.12 |
1016 | 변수선택 관련 질문 드립니다. [1] | chamchi | 2019.02.28 |
1015 | stepwise logistic 회귀에서 결측치 문제 질문드립니다. [2] | 매직하마 | 2019.02.10 |
제가 바빠서 moonBook패키지를 업데이트 못했습니다. 죄송합니다.
ggOR 함수를 쓰십시요. 이 함수는 web-r에서 사용하는 것인데 moonBook에는 포함되어 있지 않습니다. 다음과 같이 정의되어 있습니다.
extractOR2=function (x, digits = 2)
{
suppressMessages(a <- confint(x))
if(length(x$coef)==1){
result = c(exp(coef(x)), exp(a))
result = round(result, digits)
result = c(result, round(summary(x)$coefficient[, 4],4))
temp=names(result)[1]
res=data.frame(result)
result=t(res)
result=data.frame(result)
rownames(result)[1]=temp
}
else {
result = data.frame(exp(coef(x)), exp(a))
result = round(result, digits)
result = cbind(result, round(summary(x)$coefficient[, 4],4))
}
colnames(result) = c("OR", "lcl", "ucl", "p")
result
}
extractHR2=function (x, digits = 4)
{
digits = 2
out = summary(x)
a=out$conf.int
b=out$coef
res = data.frame(a[,1],a[,3],a[,4])
res=round(res,2)
res = cbind(res, round(b[,5], max(3, digits)))
colnames(res) = c("HR", "lcl", "ucl", "p")
rownames(res)=rownames(a)
res
}
ggOR<-function(x,pch=15,psize=2,lwd=1,width=0.2,col=NULL,show.p=TRUE,show.intercept=TRUE){
if(length(class(x))>1) {
if(class(x)[1]=="glm") {
res=extractOR2(x)
#if(ncol(res)>1) res=res[-1,]
}
} else if(class(x)=="glm") {
res=extractOR2(x)
#if(ncol(res)>1) res=res[-1,]
} else if(class(x)=="coxph") res=extractHR2(x)
else res=x
colnames(res)[1]="OR"
res$vars<-row.names(res)
res$color=ifelse(res$OR>=1,"pos","neg")
res$label=paste0(res$OR,ifelse(res$p>0.05,"",ifelse(res$p>0.01,"*","**")))
ticks<-c(seq(.2, 1, by =.2), seq(2, 9, by =1), seq(10, 100, by =10))
ticks
res$ORlabel=paste0(res$OR,"(",res$lcl,"-",res$ucl,")")
if(show.intercept) data=res
else data=res[-1,]
p<-ggplot(data, aes(y=OR, x = reorder(vars, OR))) +
geom_point(pch=pch,size=psize) +
geom_errorbar(aes(ymin=lcl, ymax=ucl), size=lwd,width=width) +
scale_y_log10(breaks=ticks, labels = ticks) +
geom_hline(yintercept = 1, linetype=2) +
theme(legend.position="none")+
labs(x="",y="")+
coord_flip()
#if ((!is.null(col)) & (length(col)==2)) p<-p+scale_colour_manual(values=col)
if(show.p) p<-p+geom_text(aes(label=label),vjust=-1.2)
if(FALSE){
p<- p+theme(plot.margin=unit(c(1,8,1,1),"lines"))+
geom_text(aes(label=ORlabel,x=Inf,y=OR),hjust=-0.1)
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)
}
p
}