2015-10-24 32 views
15

Tôi gắn một tỷ lệ cược tỷ lệ mô hình logit tích lũy trên dữ liệu thứ tự sử dụng MASS 's polr chức năng sử dụng (trong trường hợp này trên các số liệu đưa ra các ưu tiên đối với các loại pho mát):R: Vẽ dự đoán của mô hình thứ MASS polr

data=read.csv("https://www.dropbox.com/s/psj74dx8ohnrdlp/cheese.csv?dl=1") 
data$response=factor(data$response, ordered=T) # make response into ordered factor 
head(data) 
    cheese response count 
1  A  1  0 
2  A  2  0 
3  A  3  1 
4  A  4  7 
5  A  5  8 
6  A  6  8 
library(MASS) 
fit=polr(response ~ cheese, weights=count, data=data, Hess=TRUE, method="logistic") 

Để vẽ những dự đoán của mô hình tôi đã thực hiện một âm mưu hiệu quả sử dụng

library(effects) 
library(colorRamps) 
plot(allEffects(fit),ylab="Response",type="probability",style="stacked",colors=colorRampPalette(c("white","red"))(9)) 

enter image description here

Tôi đã tự hỏi, mặc dù từ các phương tiện dự đoán được báo cáo bởi gói effects người ta cũng có thể âm mưu một cái gì đó giống như sở thích trung bình cho từng loại pho mát cùng với khoảng thời gian conf 95% về điều này?

EDIT: ban đầu tôi cũng được hỏi về làm thế nào để có được kiểm tra posthoc Tukey, nhưng trong khi chờ đợi tôi phát hiện ra rằng những người có thể thu được bằng

library(multcomp) 
summary(glht(fit, mcp(cheese = "Tukey"))) 

hoặc sử dụng gói lsmeans như

summary(lsmeans(fit, pairwise ~ cheese, adjust="tukey", mode = "linear.predictor"),type="response") 
+0

Thú vị câu hỏi. Tôi giả định (như bạn làm) rằng vấn đề phát sinh bởi vì bạn dùng các phương tiện * sau * bạn đã tạo ra các xác suất dự đoán. Xem [tại đây] (http://stackoverflow.com/questions/14390080/linear-predictor-ordered-probit-ordinal-clm) và [ở đây] (http://stats.stackexchange.com/questions/41006/predicting- đặt hàng-logit-in-r/41025 # 41025) để biết thêm về điều này trên SE. Ngoài ra, với 9 loại, tôi chỉ đơn giản là đi cho một OLS trên biến phản ứng trong đó sản xuất gần như chính xác cùng một ước tính điểm cho các loại trung bình, cùng w/lỗi tiêu chuẩn hợp lý. Nhưng đó là một câu hỏi thú vị. – Felix

+0

Có, tôi nghĩ rằng nó phải làm với trung bình trên thang điểm logit tích lũy vs trên quy mô backtransformed cuối cùng. Vì vậy, về cơ bản tôi muốn biết làm thế nào để trung bình trên quy mô liên kết và sau đó backtransform để quy mô thứ tự ban đầu. Tôi biết rằng đối với 9 danh mục, tôi cũng có thể chỉ thực hiện OLS, nhưng tôi cũng muốn có giải pháp chung cho ít danh mục hơn, ví dụ: 3 hoặc 4. –

+0

lô động lực (các ô thanh) chỉ là số liệu thống kê không tốt. Bạn không nhận được bất kỳ thông tin chi tiết nào hơn bạn làm từ bảng thống kê tóm tắt 'wmeans'. và do thực tế là _is_ này chỉ là một âm mưu của các thống kê tóm tắt, bạn mất tất cả dữ liệu đi vào làm cho nó. ô nên hiển thị dữ liệu chứ không phải thống kê tóm tắt. Tôi nghĩ rằng điều này giải quyết vấn đề của bạn kể từ khi bạn không nên làm nó ở nơi đầu tiên – rawr

Trả lời

2

Russ Lenth chỉ vui lòng chỉ ra cho tôi rằng sở thích trung bình và khoảng tin cậy 95% có thể thu được đơn giản chỉ với lsmeans với option mode="mean" (?models) (điều tương tự cũng áp dụng cho một clm hoặc clmm mô hình phù hợp sử dụng gói ordinal):

df=summary(lsmeans(fit, pairwise ~ cheese, mode = "mean"),type="response")$lsmeans 
cheese mean.class  SE df asymp.LCL asymp.UCL 
A  6.272828 0.1963144 NA 5.888058 6.657597 
B  3.494899 0.2116926 NA 3.079989 3.909809 
C  4.879440 0.2006915 NA 4.486091 5.272788 
D  7.422159 0.1654718 NA 7.097840 7.746478 

mà mang lại cho tôi những âm mưu tôi đang tìm kiếm:

library(ggplot2) 
library(ggthemes) 
ggplot(df, aes(cheese, mean.class)) + geom_bar(stat="identity", position="dodge", fill="steelblue", width=0.6) + 
    geom_errorbar(aes(ymin=asymp.LCL, ymax=asymp.UCL), width=0.15, position=position_dodge(width=0.9)) + 
    theme_few(base_size=18) + xlab("Type of cheese") + ylab("Mean preference") + 
    coord_cartesian(ylim = c(1, 9)) + scale_y_continuous(breaks=1:9) 

enter image description here

Các vấn đề liên quan