我正在嘗試使用自定義函式在兩組百分比之間創建 Bland-Altman 圖,該函式在其中使用 ggplot 來生成圖。
Perc1 <- sample(1:100, 100)
Perc2 <- sample(1:100, 100)
d <- data.frame(Perc1, Perc2)
bland <- function(dat, x, y){
df <- subset(dat[ ,c(x, y)])
df$avg <- rowMeans(df)
df$diff <- df[[1]] - df[[2]]
mean_diff <- mean(df$diff)
lower <- mean_diff - 1.96 * sd(df$diff)
upper <- mean_diff 1.96 * sd(df$diff)
p <- ggplot(df, aes(x = avg, y = diff))
geom_point(size=2)
geom_hline(yintercept = mean_diff)
geom_hline(yintercept = lower, color = "red", linetype="dashed")
geom_hline(yintercept = upper, color = "red", linetype="dashed")
ggtitle("Bland-Altman Plot")
ylab("Difference Between Measurements")
xlab("Average Measurement")
plot(p)
}
bland(d, Perc1, Perc2)
但是,當我運行該函式時,圖表不會生成任何線條,但會生成標題和 x/y 標簽。如果有人能解釋為什么會這樣,那就太好了,在此先感謝。
uj5u.com熱心網友回復:
試試這個:
(另請注意,p <-andplot(p)不是必需的,因為該函式無論如何都會回傳最后一個物件。)
library(tidyverse)
Perc1 <- sample(1:100, 100)
Perc2 <- sample(1:100, 100)
bland <- function(x, y){
df <- data.frame(x, y)
df$avg <- rowMeans(df)
df$diff <- df[[1]] - df[[2]]
mean_diff <- mean(df$diff)
lower <- mean_diff - 1.96 * sd(df$diff)
upper <- mean_diff 1.96 * sd(df$diff)
p <- ggplot(df, aes(x = avg, y = diff))
geom_point(size=2)
geom_hline(yintercept = mean_diff)
geom_hline(yintercept = lower, color = "red", linetype="dashed")
geom_hline(yintercept = upper, color = "red", linetype="dashed")
ggtitle("Bland-Altman Plot")
ylab("Difference Between Measurements")
xlab("Average Measurement")
plot(p)
}
bland(Perc1, Perc2)

由reprex 包創建于 2022-05-17 (v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/476648.html
