gpt4 book ai didi

r - 可视化R中优势比的简单方法

转载 作者:行者123 更新时间:2023-12-04 14:23:16 25 4
gpt4 key购买 nike

我需要帮助来创建一个简单的图以可视化老板演示的赔率-这是我的第一篇文章。我是一位真正的R初学者,我似乎无法使它正常工作。我试图改编我在网上发现的一些代码,这些代码显然可以实现以下目的:

我想手动输入我的OR和CI,因为这更加简单,所以这里是:

# Create labels for plot
boxLabels = c("Package recommendation", "Breeder’s recommendations", "Vet’s
recommendation", "Measuring cup", "Weigh on scales", "Certain number of
cans", "Ad lib feeding", "Adjusted for body weight")

# Enter OR and CI data. boxOdds are the odds ratios,
boxCILow is the lower bound of the CI, boxCIHigh is the upper bound.

df <- data.frame(yAxis = length(boxLabels):1, boxOdds = c(0.9410685,
0.6121181, 1.1232907, 1.2222137, 0.4712629, 0.9376822, 1.0010816,
0.7121452), boxCILow = c(-0.1789719, -0.8468693,-0.00109809, 0.09021224,
-1.0183040, -0.2014975, -0.1001832,-0.4695449), boxCIHigh = c(0.05633076,
-0.1566818, 0.2326694, 0.3104405, -0.4999281, 0.07093752, 0.1018351,
-0.2113544))

# Plot
p <- ggplot(df, aes(x = boxOdds, y = boxLabels))

p + geom_vline(aes(xintercept = 1), size = .25, linetype = "dashed") +
geom_errorbarh(aes(xmax = boxCIHigh, xmin = boxCILow), size = .5, height =
.2, color = "gray50") +
geom_point(size = 3.5, color = "orange") +
theme_bw() +
theme(panel.grid.minor = element_blank()) +
scale_y_discrete (breaks = yAxis, labels = boxLabels) +
scale_x_continuous(breaks = seq(0,5,1) ) +
coord_trans(x = "log10") +
ylab("") +
xlab("Odds ratio (log scale)") +
annotate(geom = "text", y =1.1, x = 3.5, label ="Model p < 0.001\nPseudo
R^2 = 0.10", size = 3.5, hjust = 0) + ggtitle("Feeding method and risk of
obesity in cats")

毫不奇怪,它不起作用!任何建议都非常感谢,因为它正在使我进入头脑!谢谢:)

注意我尝试采用CI的指数,现在我得到了:

enter image description here

它看起来更正确吗?将我的x轴标记为对数刻度仍然正确吗?抱歉,我有点困惑!

最佳答案

您的置信区间在对数奇数上,因此您需要对其进行变换以匹配比值比-因此您可以使用exp函数。尽管想一想-使用对数刻度轴绘制这些数据可以有效地逆转您在转换中所做的工作。因此,如果是我,我会将所有数据保持在日志比例中,并使用coord_trans()和scale_x_continuous()进行数据转换工作:

df <- data.frame(yAxis = length(boxLabels):1, 
boxOdds = log(c(0.9410685,
0.6121181, 1.1232907, 1.2222137, 0.4712629, 0.9376822, 1.0010816,
0.7121452)),
boxCILow = c(-0.1789719, -0.8468693,-0.00109809, 0.09021224,
-1.0183040, -0.2014975, -0.1001832,-0.4695449),
boxCIHigh = c(0.05633076, -0.1566818, 0.2326694, 0.3104405,
-0.4999281, 0.07093752, 0.1018351, -0.2113544)
)


(p <- ggplot(df, aes(x = boxOdds, y = boxLabels)) +
geom_vline(aes(xintercept = 0), size = .25, linetype = "dashed") +
geom_errorbarh(aes(xmax = boxCIHigh, xmin = boxCILow), size = .5, height =
.2, color = "gray50") +
geom_point(size = 3.5, color = "orange") +
coord_trans(x = scales:::exp_trans(10)) +
scale_x_continuous(breaks = log10(seq(0.1, 2.5, 0.1)), labels = seq(0.1, 2.5, 0.1),
limits = log10(c(0.09,2.5))) +
theme_bw()+
theme(panel.grid.minor = element_blank()) +
ylab("") +
xlab("Odds ratio") +
annotate(geom = "text", y =1.1, x = log10(1.5),
label = "Model p < 0.001\nPseudo R^2 = 0.10", size = 3.5, hjust = 0) +
ggtitle("Feeding method and risk of obesity in cats")
)

您应该得到:

enter image description here

关于r - 可视化R中优势比的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com