Data entry:
lnHR<-c(0.0953,1.8017,1.2782,1.6351,-0.9676,0.9042,1.2462,1.4351,1.4351,0.4055,0.1301)
seLnHR<-c(2.3828,0.8303,0.7141,0.6841,0.5874,0.481,0.4327,0.3777,0.367,0.2656,0.131)
weights<-1/(seLnHR^2)
HNSCC_OS<-data.frame(lnHR,seLnHR,weights)
Perform linear fit:
Eggers.fit<-lm(lnHR~seLnHR,data=HNSCC_OS,weights=weights)
summary(Eggers.fit)
##
## Call:
## lm(formula = lnHR ~ seLnHR, data = HNSCC_OS, weights = weights)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -3.4122 -0.6526 0.1010 0.8634 2.1077
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.03694 0.27754 0.133 0.8970
## seLnHR 1.70201 0.85816 1.983 0.0786 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.692 on 9 degrees of freedom
## Multiple R-squared: 0.3041, Adjusted R-squared: 0.2268
## F-statistic: 3.934 on 1 and 9 DF, p-value: 0.07864
Confidence interval:
confint(Eggers.fit)
## 2.5 % 97.5 %
## (Intercept) -0.5908923 0.6647766
## seLnHR -0.2392793 3.6432959
Display fit with raw data and make publication-quality plot (for supplements):
library(ggplot2)
#labels:
annotation <- data.frame(x = 1.5, y = 2.8,label = c("Eggers regression"))
metaAnalysisEstimate=1.62
upperMA=1.96
lowerMA=1.33
p<- ggplot(HNSCC_OS, aes(x=seLnHR, y=lnHR))+annotate("rect", xmin=c(0,0), xmax=c(max(seLnHR)+0.01,max(seLnHR)+0.01), ymin=c(log(lowerMA),log(lowerMA)) , ymax=c(log(upperMA),log(upperMA)), alpha=0.2, fill="darkblue") + geom_errorbar(aes(ymin=lnHR-1.96*seLnHR, ymax=lnHR+1.96*seLnHR)) + geom_point() + geom_hline(yintercept=log(metaAnalysisEstimate),color="darkblue") + geom_hline(yintercept=0,color="black")+geom_smooth(method = "lm", fullrange=TRUE,mapping = aes(weight = weights), color = "darkred", show.legend = TRUE)+xlab("Standard error of lnHR estimate")+coord_cartesian(xlim=c(0,max(seLnHR)+0.01),ylim =c(-1,4))+ylab("Log HR estimate")+geom_text(x=annotation$x, y=log(metaAnalysisEstimate)+0.1, label="Meta analysis estimate",color="darkblue",size=4)+theme_bw()
p+geom_text(data=annotation,aes( x=x, y=y, label=label),color="darkred",size=4 , angle=32, fontface="bold" )
## `geom_smooth()` using formula 'y ~ x'
Data entry:
lnHR<-c(3.2867,2.3389,1.6582,1.8718,1.3083,0.8961,1.1314,-1.204,1.0647,-0.1985,0.929,-0.2231,0.8796,0.6419,0.6931,-0.005,0.4055,0.2927,0.0488)
seLnHR<-c(3.0432,1.0778,0.6824,0.6661,0.5947,0.5841,0.519,0.4667,0.4436,0.4222,0.4147,0.4132,0.4054,0.3292,0.2567,0.2506,0.1771,0.1256,0.1109)
weights<-1/(seLnHR^2)
HNSCC_DFS<-data.frame(lnHR,seLnHR,weights)
Perform linear fit:
Eggers.fit<-lm(lnHR~seLnHR,data=HNSCC_DFS,weights=weights)
summary(Eggers.fit)
##
## Call:
## lm(formula = lnHR ~ seLnHR, data = HNSCC_DFS, weights = weights)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -4.0311 -0.6513 0.7236 0.9222 1.3487
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.01578 0.15299 -0.103 0.9191
## seLnHR 1.48506 0.57114 2.600 0.0187 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.474 on 17 degrees of freedom
## Multiple R-squared: 0.2845, Adjusted R-squared: 0.2424
## F-statistic: 6.761 on 1 and 17 DF, p-value: 0.01867
Confidence interval:
confint(Eggers.fit)
## 2.5 % 97.5 %
## (Intercept) -0.3385646 0.3070105
## seLnHR 0.2800510 2.6900676
Display fit with raw data and make publication-quality plot (for supplements):
#labels:
annotation <- data.frame(x = 2, y = 3.105,label = c("Eggers regression"))
metaAnalysisEstimate=1.36
upperMA=1.53
lowerMA=1.20
p<- ggplot(HNSCC_DFS, aes(x=seLnHR, y=lnHR))+annotate("rect", xmin=c(0,0), xmax=c(max(seLnHR)+0.01,max(seLnHR)+0.01), ymin=c(log(lowerMA),log(lowerMA)) , ymax=c(log(upperMA),log(upperMA)), alpha=0.2, fill="darkblue") + geom_errorbar(aes(ymin=lnHR-1.96*seLnHR, ymax=lnHR+1.96*seLnHR)) + geom_point() + geom_hline(yintercept=log(metaAnalysisEstimate),color="darkblue") + geom_hline(yintercept=0,color="black")+geom_smooth(method = "lm", fullrange=TRUE,mapping = aes(weight = weights), color = "darkred", show.legend = TRUE)+xlab("Standard error of lnHR estimate")+coord_cartesian(xlim=c(0,max(seLnHR)+0.01),ylim =c(-1,4))+ylab("Log HR estimate")+geom_text(x=annotation$x, y=log(metaAnalysisEstimate)+0.2, label="Meta analysis estimate",color="darkblue",size=4)+theme_bw()
p+geom_text(data=annotation,aes( x=x, y=y, label=label),color="darkred",size=4 , angle=28, fontface="bold" )
## `geom_smooth()` using formula 'y ~ x'
Data entry:
lnHR<-c(0.2624,1.6864,0.793,0.6729,1.1939,0.9002,1.4351,-0.5108,0.8329,0.9555,-0.1985,0.8329,0.2231,0.7372,1.0296,0.6366,0.0944,0.5878,0.174,0.2311,0.077,0.0488,0.045)
seLnHR<-c(0.8463,0.7771,0.4835,0.4807,0.4422,0.4391,0.4349,0.4222,0.4207,0.4032,0.3744,0.3485,0.341,0.3336,0.312,0.2934,0.2697,0.2636,0.1513,0.1127,0.0393,0.0372,0.0185)
weights<-1/(seLnHR^2)
NSCLC_OS<-data.frame(lnHR,seLnHR,weights)
Perform linear fit:
Eggers.fit<-lm(lnHR~seLnHR,data=NSCLC_OS,weights=weights)
summary(Eggers.fit)
##
## Call:
## lm(formula = lnHR ~ seLnHR, data = NSCLC_OS, weights = weights)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -2.8206 -0.5493 0.3631 0.5970 1.6899
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.01178 0.01981 0.595 0.558
## seLnHR 1.58287 0.27841 5.685 1.21e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.14 on 21 degrees of freedom
## Multiple R-squared: 0.6062, Adjusted R-squared: 0.5874
## F-statistic: 32.32 on 1 and 21 DF, p-value: 1.212e-05
Confidence interval:
confint(Eggers.fit)
## 2.5 % 97.5 %
## (Intercept) -0.02941577 0.05298571
## seLnHR 1.00388803 2.16184907
Display fit with raw data and make publication-quality plot (for supplements):
#labels:
annotation <- data.frame(x = 0.65, y = 1.3,label = c("Eggers regression"))
metaAnalysisEstimate=1.07
upperMA=1.1
lowerMA=1.04
p<- ggplot(NSCLC_OS, aes(x=seLnHR, y=lnHR))+annotate("rect", xmin=c(0,0), xmax=c(max(seLnHR)+0.01,max(seLnHR)+0.01), ymin=c(log(lowerMA),log(lowerMA)) , ymax=c(log(upperMA),log(upperMA)), alpha=0.2, fill="darkblue") + geom_errorbar(aes(ymin=lnHR-1.96*seLnHR, ymax=lnHR+1.96*seLnHR)) + geom_point() + geom_hline(yintercept=log(metaAnalysisEstimate),color="darkblue") + geom_hline(yintercept=0,color="black")+geom_smooth(method = "lm", fullrange=TRUE,mapping = aes(weight = weights), color = "darkred", show.legend = TRUE)+xlab("Standard error of lnHR estimate")+coord_cartesian(xlim=c(0,max(seLnHR)+0.01),ylim =c(-1,4))+ylab("Log HR estimate")+geom_text(x=annotation$x, y=log(metaAnalysisEstimate)+0.2, label="Meta analysis estimate",color="darkblue",size=4)+theme_bw()
p+geom_text(data=annotation,aes( x=x, y=y, label=label),color="darkred",size=4 , angle=10, fontface="bold" )
## `geom_smooth()` using formula 'y ~ x'
Data entry:
lnHR<-c(1.7817,1.026,1.4586,0.9555,0.8755,0.1398,0.6152,0.7514,0.0218,0.131,0.0953,0.2776,0.3001)
seLnHR<-c(0.6906,0.4728,0.442,0.4324,0.4271,0.3882,0.3728,0.3463,0.3109,0.2621,0.1869,0.1192,0.1159)
weights<-1/(seLnHR^2)
NSCLC_DFS<-data.frame(lnHR,seLnHR,weights)
Perform linear fit:
Eggers.fit<-lm(lnHR~seLnHR,data=NSCLC_DFS,weights=weights)
summary(Eggers.fit)
##
## Call:
## lm(formula = lnHR ~ seLnHR, data = NSCLC_DFS, weights = weights)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -1.6525 -1.2318 0.4521 0.5286 1.5917
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.01501 0.13227 0.113 0.9117
## seLnHR 1.67438 0.57191 2.928 0.0137 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.071 on 11 degrees of freedom
## Multiple R-squared: 0.438, Adjusted R-squared: 0.3869
## F-statistic: 8.571 on 1 and 11 DF, p-value: 0.01375
Confidence interval:
confint(Eggers.fit)
## 2.5 % 97.5 %
## (Intercept) -0.2761108 0.3061296
## seLnHR 0.4156187 2.9331354
Display fit with raw data and make publication-quality plot (for supplements):
#labels:
annotation <- data.frame(x = 0.6, y = 1.2,label = c("Eggers regression"))
metaAnalysisEstimate=1.41
upperMA=1.6
lowerMA=1.25
p<- ggplot(NSCLC_OS, aes(x=seLnHR, y=lnHR))+annotate("rect", xmin=c(0,0), xmax=c(max(seLnHR)+0.1,max(seLnHR)+0.1), ymin=c(log(lowerMA),log(lowerMA)) , ymax=c(log(upperMA),log(upperMA)), alpha=0.2, fill="darkblue") + geom_errorbar(aes(ymin=lnHR-1.96*seLnHR, ymax=lnHR+1.96*seLnHR)) + geom_point() + geom_hline(yintercept=log(metaAnalysisEstimate),color="darkblue") + geom_hline(yintercept=0,color="black")+geom_smooth(method = "lm", fullrange=TRUE,mapping = aes(weight = weights), color = "darkred", show.legend = TRUE)+xlab("Standard error of lnHR estimate")+coord_cartesian(xlim=c(0,0.7),ylim =c(-1,4))+ylab("Log HR estimate")+geom_text(x=annotation$x, y=log(metaAnalysisEstimate)+0.2, label="Meta analysis estimate",color="darkblue",size=4)+theme_bw()
p+geom_text(data=annotation,aes( x=x, y=y, label=label),color="darkred",size=4 , angle=10, fontface="bold" )
## `geom_smooth()` using formula 'y ~ x'