用 t 分数 (2.5 SD) 间隔绘制骨矿物质密度 (BMD) 曲线?
Plot bone mineral density (BMD) curves with t score (2.5 SD) interval?
抱歉,第一次提问。
目的:计算骨矿物质密度 T 值(+/- 2.5 SD,用于性别和年龄特定的 BMD 值)。说一个病人是不是骨质疏松
我正在尝试使用 ggplot 2 和 geom_smooth
以图形方式执行此操作
我正在使用通过 nhanesA 包访问的 NHANES 数据集 (https://wwwn.cdc.gov/Nchs/Nhanes/2013-2014/DXXFEM_H.htm#DXXINBMD)。
r 加载程序:
library(nhanesA)
library(ggplot2)
我只对粗隆间骨密度、年龄和性别感兴趣。
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" 中的级别参数不适用于 2.5 级别。
r 用 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) 有没有办法用数字来做这个?
谢谢
这是绘制均值、-1SD 和 -2SD 的代码。您可以根据自己的喜好添加样式。均值和 SD 的计算是预先在数据框中完成的。
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)))
抱歉,第一次提问。
目的:计算骨矿物质密度 T 值(+/- 2.5 SD,用于性别和年龄特定的 BMD 值)。说一个病人是不是骨质疏松
我正在尝试使用 ggplot 2 和 geom_smooth
以图形方式执行此操作我正在使用通过 nhanesA 包访问的 NHANES 数据集 (https://wwwn.cdc.gov/Nchs/Nhanes/2013-2014/DXXFEM_H.htm#DXXINBMD)。
r 加载程序:
library(nhanesA)
library(ggplot2)
我只对粗隆间骨密度、年龄和性别感兴趣。
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" 中的级别参数不适用于 2.5 级别。
r 用 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) 有没有办法用数字来做这个?
谢谢
这是绘制均值、-1SD 和 -2SD 的代码。您可以根据自己的喜好添加样式。均值和 SD 的计算是预先在数据框中完成的。
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)))