Vẽ các thanh khoảng tin cậy từ thống kê tóm tắt


8

Một chút giống như một âm mưu hộp. Ý tôi không nhất thiết là khoảng tin cậy trên tiêu chuẩn, khoảng tin cậy thấp hơn, trung bình và các ô hộp hiển thị phạm vi dữ liệu, nhưng ý tôi là giống như một ô hộp chỉ với ba phần dữ liệu: khoảng tin cậy 95% và trung bình .

Đây là một ảnh chụp màn hình của một bài báo có chính xác những gì tôi muốn: nhập mô tả hình ảnh ở đây

Tôi cũng muốn biết làm thế nào tôi sẽ sử dụng phần mềm mà người trả lời đề cập để tạo ra một cốt truyện như vậy.


7
Những gì bạn gọi là "khoảng tin cậy trên tiêu chuẩn, khoảng tin cậy thấp hơn, trung bình và các ô hộp hiển thị phạm vi dữ liệu" hoàn toàn không phải là các ô hộp tiêu chuẩn. Biểu đồ hộp tiêu chuẩn cho thấy trung vị, tứ phân vị, tối thiểu và tối đa và thường là các chi tiết khác.
Nick Cox

1
@Nick Phải: nhưng những gì được đồ họa như vậy thực sự được gọi là? (Tôi không chắc chắn.)
whuber

6
Loại cốt truyện này là tiêu chuẩn (tuy nhiên nó không phải là một hộp hình hộp) và có thể được sản xuất bởi tất cả các gói thống kê chính: Stata, SAS, R , MATLAB. Tôi đoán bạn cũng có thể làm điều đó với Excel.
COOLSerdash

1
@COOLSerdash thật tuyệt! Bạn có thể viết câu trả lời cho MATLAB vì tôi đã có MATLAB không?
BH2017

6
Tôi sẽ gọi các ô khoảng tin cậy này, nhưng không phải mọi âm mưu đều thực sự cần một tên riêng biệt. Mọi cốt truyện đều xứng đáng có chú thích văn bản, tuy nhiên ....
Nick Cox

Câu trả lời:


9

Trong MATLAB, bạn có thể muốn thử errorbar chức năng: http://www.mathworks.de/de/help/matlab/ref/errorbar.html

Ngoài ra, bạn có thể làm điều đó một cách ngu ngốc và thủ công. Ví dụ: được đưa ra một ma trận các điểm dữ liệu "a", bạn có thể tính toán phương tiện của mình bằng cách sử dụng hàm m = mean (a), tính toán các TCTD của bạn (tùy thuộc vào CI bạn cần) và vẽ kết quả bằng tay.

Trình diễn nếu bạn đã biết giá trị trung bình và CI, giả sử các TCTD nằm trong ma trận CI (cột thứ nhất và thứ hai) và phương tiện nằm trong ma trận a :

plot(1:length(CI),a,'o','markersize', 10)           % plot the mean
hold on;
plot(1:length(CI),CI(1,:),'v','markersize', 6)              % plot lower CI boundary
hold on;
plot(1:length(CI),CI(2,:),'^','markersize', 6)              % plot upper CI boundary
hold on;

for I = 1:length(CI)                                        % connect upper and lower bound with a line
line([I I],[CI(1,I) CI(2,I)])
hold on;
end;

axis([0 length(CI)+1 min(CI(1,:))*0.75 max(CI(2,:))*1.25])  % scale axis

Trình diễn trong trường hợp bạn biết các phép đo riêng lẻ, cho một thử nghiệm đo lặp lại, hơn 3 điều kiện, một điều kiện trên mỗi cột, một đối tượng trên mỗi dòng trong ma trận a, không thiếu mẫu, CI 95% như ttest () của MATLAB :

[H,P,CI] = ttest(a);                                        % calculate 95% CIs for every column in matrix a
                                                            % CIs are now in the matrix CI!

plot(1:length(CI),[mean(a)],'o','markersize', 10)           % plot the mean
hold on;
plot(1:length(CI),CI(1,:),'v','markersize', 6)              % plot lower CI boundary
hold on;
plot(1:length(CI),CI(2,:),'^','markersize', 6)              % plot upper CI boundary
hold on;

for I = 1:length(CI)                                        % connect upper and lower bound with a line
line([I I],[CI(1,I) CI(2,I)])
hold on;
end;

axis([0 length(CI)+1 min(CI(1,:))*0.75 max(CI(2,:))*1.25])  % scale axis

Đọc bản chỉnh sửa mới nhất của tôi, tôi xin lỗi nhưng một số người đang làm phiền tôi, đã chỉnh sửa thực tế tôi chỉ biết 95% CI và có nghĩa là không có thêm dữ liệu.
BH2017

@BrentonHorne đã làm liên kết đến chức năng thanh lỗi không giúp đỡ? Nó có vẻ là chính xác những gì bạn muốn.
Peter Ellis

Như Peter đã nói, sử dụng errorbar () rồi. Hoặc sử dụng tập lệnh tôi đã viết, nhưng bỏ qua dòng đầu tiên với ttest và chỉ cung cấp ý nghĩa của nó và CI trực tiếp. Tôi sẽ chỉnh sửa nó trong tôi đoán.
jona

@BrentonHorne Để công bằng, bạn không bao giờ thảo luận rộng rãi hoặc thậm chí đề cập đến nó trong tất cả các nội dung của câu hỏi. Nó được ngụ ý bởi tiêu đề nhưng tiêu đề này cũng đã đề cập nhầm các ô hộp, đó là vấn đề chỉnh sửa đã cố gắng khắc phục. Thật không may là từ chỉ có một số người đã biến mất trong quá trình nhưng không ai cố tình chỉnh sửa nó thành một phần lớn trong câu hỏi của bạn. Ngoài ra, câu trả lời có chứa một giải pháp và phần còn lại của văn bản có thể thú vị với những người đọc khác.
Gala

Tôi đã chạy mã tốt, vấn đề là tôi muốn nó nếu có một số phương tiện để tôi có thể tham gia CI trên và CI thấp hơn với một dòng như trong ảnh chụp màn hình trong câu hỏi của tôi.
BH2017

13

Hãy xem nếu điều này giúp bạn. Giải pháp R:

par(mfrow=c(2,1)) # to stack the charts on column

#Dataset 1

upperlimit = c(10,12,8,14)
lowerlimit = c(5,9,4,7)
mean = c(8,10,6,12)

df = data.frame(cbind(upperlimit,lowerlimit,mean))

plot(df$mean, ylim = c(0,30), xlim = c(1,4))

install.packages("plotrix")
require(plotrix)
plotCI(df$mean,y=NULL, uiw=df$upperlimit-df$mean, liw=df$mean-df$lowerlimit, err="y",      pch=20, slty=3, scol = "black", add=TRUE)

#Dataset 2

upperlimit_2 = upperlimit*1.5
lowerlimit_2 = lowerlimit*0.8
mean_2 = upperlimit_2-lowerlimit_2

df_2 = data.frame(cbind(upperlimit_2,lowerlimit_2,mean_2))

plot(df$mean_2, ylim = c(0,30), xlim = c(1,4))

plotCI(df_2$mean_2,y=NULL, uiw=df_2$upperlimit_2-df_2$mean_2, liw=df_2$mean_2-   df_2$lowerlimit_2, err="y", pch=20, slty=3, scol = "black", add=TRUE)

rm(upperlimit,lowerlimit,mean,df,upperlimit_2,lowerlimit_2,mean_2,df_2) #remove the objects stored from workspace

par(mfrow=c(1,1)) # go back to default (one graph at a time)

nhập mô tả hình ảnh ở đây


và làm thế nào để tôi chạy một mã như vậy? Tôi hoàn toàn mới với R vì vậy bạn sẽ phải hướng dẫn tôi vì tôi không biết gì.
BH2017

3
Tôi có thể giúp bạn chụp ảnh, nhưng trước tiên bạn cần làm theo hai bước: i) cài đặt R Studio trên máy tính của bạn, ii) cung cấp một ví dụ có thể tái tạo: stackoverflow.com/questions/5963269/ trộm
Andre Silva

@AndreSilva, tôi nghĩ bạn đã đi thêm một dặm nữa. Hỗ trợ và tư vấn tuyệt vời!
doug.numbers

Đây là những gì tôi nhận được khi chạy mã của bạn i.stack.imgur.com/yrZaJ.png
BH2017

@BrentonHome. Lạ thật. Tôi chỉ thử nghiệm và nó đã làm việc. Các thanh "lỗi" cũng không xuất hiện. Bạn đã cài đặt plotrixgói? Tôi đã thêm một dòng lệnh chương trình trong mã cài đặt gói plotrix. Xin vui lòng, thử lại và cho biết.
Andre Silva

7

Loại cốt truyện này trong R sử dụng ggplot2, mặc dù bạn có thể phải thực hiện một số thay đổi với kích thước phông chữ trục:

library(ggplot2)
data.estimates = data.frame(
  var   = c('1', '2', '3', '4', '5', '6', '7', '8', '9'),
  par = c(1.12210,0.18489,1.22011,1.027446235,0.43521,0.53464,1.93316,-0.43806,-0.12029),
  se = c(0.42569,0.32162,0.58351,0.771608551,0.24803,0.65372,0.92717,0.45939,0.51558))
data.estimates$idr <- exp(data.estimates$par)
data.estimates$upper <- exp(data.estimates$par + (1.96*data.estimates$se))
data.estimates$lower <- exp(data.estimates$par - (1.96*data.estimates$se))

p2 <- ggplot(data.estimates, aes(var,idr, size=10)) + theme_bw(base_size=10)
p2 + geom_point() +geom_errorbar(aes(x = var, ymin = lower, ymax = upper, size=2), width = 0.2) + scale_y_log10(limits=c(0.1, 50), breaks=c(0.1, 0.5, 1, 5, 10, 25, 50)) + xlab("Site") + ylab("RR")

nhập mô tả hình ảnh ở đây


2

Trong Stata sử dụng serrbarhoặc ciplot(SSC) hoặc eclplot(Tạp chí Stata, SSC).


2

Giả sử bạn có quyền truy cập vào dữ liệu gốc, bạn có thể thực hiện việc này trong R với hàm lineplot.CI trong thư viện sciplot

Ví dụ với tập dữ liệu mtcars:

lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars)

Lưu ý rằng lineplot.CI theo mặc định các ô SE (nó có thể được thay đổi khi xác định hàm mới với đối số ci.fun để vẽ các khoảng 95% CI)

lineplot.CI(x.factor=gear, response=mpg, group=vs, data=mtcars, ci.fun=function(x) c(mean(x)-1.96*se(x), mean(x)+1.96*se(x)))

1

Điều này có thể được thực hiện trong R với points()(hoặc plot(..., type="p")) và segments(). Cũng có thể có các hàm R được thiết kế để tạo CI cho bạn, nhưng chúng có thể yêu cầu dữ liệu gốc. Nhiều bảng trong cùng một hình được tạo ra với par(mfrow=c(4,1)). Nếu bạn không biết bất kỳ R nào, điều này sẽ khó thực hiện một cách dễ dàng (như trong, bạn sẽ phải học thêm một chút R hoặc nhờ ai đó giúp đỡ với bộ dữ liệu cụ thể của bạn).


1

GraphPad Prism có thể dễ dàng tạo ra loại biểu đồ này, vẽ các thanh lỗi từ các giá trị lỗi bạn nhập. Tạo một bảng được nhóm được định dạng cho entery of mean, - error và + error.


Có thể nhận được một bản sao miễn phí không chỉ là phiên bản dùng thử 30 ngày?
BH2017

1
@BrentonHorne: Không. Nó không phải là phần mềm miễn phí.
Harvey Motulsky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.