绘制t值(2.5 SD)间隔的骨矿物质密度(BMD)曲线?

时间:2018-11-26 09:29:56

标签: r ggplot2 confidence-interval

很抱歉,如果问的不好,第一个问题。

目的:计算骨矿物质密度T分值(性别和年龄特定的BMD值+/- 2.5 SD)。要说出患者是否患有骨质疏松症。

我正在尝试使用ggplot 2和geom_smooth以图形方式完成

我正在使用通过nhanesA软件包访问的NHANES数据集(https://wwwn.cdc.gov/Nchs/Nhanes/2013-2014/DXXFEM_H.htm#DXXINBMD)。

r个加载程序:

library(nhanesA)
library(ggplot2)

我只对转子间BMD,年龄和性别感兴趣。

r个加载数据:

nhanesTableVars('EXAM', "DXXFEM_D")
DXXFEM_D  <- nhanes('DXXFEM_D')
fem_d <- DXXFEM_D
demo_d <- nhanes('DEMO_D')
demo_d <- nhanesTranslate('DEMO_D', 'RIAGENDR', data=demo_d)
DXXFEM_D_vars  <- nhanesTableVars('EXAM', 'DXXFEM_D', namesonly=TRUE)
DXXFEM_D <- nhanesTranslate('DXXFEM_D', DXXFEM_D_vars, data=DXXFEM_D)
FEM_demo <- merge(demo_d, DXXFEM_D)
FEM_demo_1 <- FEM_demo[,c(5,6,55)]

然后,我尝试进行绘制,但是在“ geom_smooth”中使用了level参数时,在2.5级时不起作用。

使用SD绘制BMD:

ggplot(data = FEM_demo_1, aes(x = RIDAGEYR, y = DXXINBMD, group = RIAGENDR, color = RIAGENDR)) + 
  geom_smooth(se = TRUE, level = 2.5) + 
  scale_x_continuous(minor_breaks = seq(0,85,1), breaks = seq(0,85,5))

1)理想情况下,我想要一个显示平均值的图,-1SD(指骨质疏松症)和-2SD(指骨质疏松症的临界值),可用于将BMD转化为临床标准。有办法吗?

2)反正有数字吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这是均值,-1SD和-2SD的情节代码。您可以根据自己的喜好添加样式。均值和标准差的计算是预先在数据帧中完成的。

data <- aggregate(FEM_demo_1$DXXINBMD, by=list(FEM_demo_1$RIAGENDR, FEM_demo_1$RIDAGEYR), FUN=mean, na.rm=TRUE)
names(data) <- c("gender", "age", "mean")
data[,"sd"] <- aggregate(FEM_demo_1$DXXINBMD, by=list(FEM_demo_1$RIAGENDR, FEM_demo_1$RIDAGEYR), FUN=sd, na.rm=TRUE)[3]

ggplot(data=data, aes(x=age, group=gender))+
  geom_smooth(se = FALSE, aes(y=mean))+
  geom_smooth(se = FALSE, aes(y=mean-sd))+
  geom_smooth(se = FALSE, aes(y=mean-(2*sd)))