2012-10-29 29 views
7

Làm cách nào để thêm RMSE, độ dốc, chặn và r^2 vào ô bằng R? Tôi đã đính kèm một tập lệnh với dữ liệu mẫu, đó là định dạng tương tự với tập dữ liệu thực của tôi - thật không may, tôi đang ở trạng thái chờ. Có cách nào dễ dàng hơn để thêm các thống kê này vào biểu đồ hơn là tạo đối tượng từ phương trình và chèn đối tượng đó vào text()? Tôi lý tưởng như số liệu thống kê sẽ được hiển thị xếp chồng lên nhau trên đồ thị. Làm thế nào tôi có thể thực hiện điều này?Làm thế nào để thêm RMSE, độ dốc, chặn, r^2 đến ô R?

## Generate Sample Data 
x = c(2,4,6,8,9,4,5,7,8,9,10) 
y = c(4,7,6,5,8,9,5,6,7,9,10) 

# Create a dataframe to resemble existing data 
mydata = data.frame(x,y) 

#Plot the data 
plot(mydata$x,mydata$y) 
abline(fit <- lm(y~x)) 

# Calculate RMSE 
model = sqrt(deviance(fit)/df.residual(fit)) 

# Add RMSE value to plot 
text(3,9,model) 
+0

Xem câu hỏi này http://stackoverflow.com/questions/7549694/ggplot2-adding-regression-line-equation-and-r2-on-graph – mnel

+0

Bất kỳ ý tưởng nào về cách thêm "RMSE = value "ngoài r^2 và eq cho độ dốc và chặn trong một thời trang gọn gàng, định dạng? – Borealis

+0

Bạn chưa cung cấp bất kỳ chi tiết nào về ý nghĩa của "thời trang được định dạng". Trong đồ họa cơ sở, cách bạn thêm văn bản vào một cốt truyện là với 'text' (hoặc' mtext'), và bạn có một liên kết đến một câu trả lời tuyệt vời cho ggplot. Vấn đề gì vẫn còn? – joran

Trả lời

16

Đây là một phiên bản sử dụng đồ họa cơ bản và ?plotmath để vẽ cốt truyện và chú thích nó

## Generate Sample Data 
x = c(2,4,6,8,9,4,5,7,8,9,10) 
y = c(4,7,6,5,8,9,5,6,7,9,10) 

## Create a dataframe to resemble existing data 
mydata = data.frame(x,y) 

## fit model 
fit <- lm(y~x, data = mydata) 

Tiếp theo tính toán các giá trị bạn muốn xuất hiện trong các chú thích. Tôi thích bquote() cho điều này, nơi mọi thứ được đánh dấu trong .(foo) sẽ được thay thế bằng giá trị của đối tượng foo. Trả lời @mnel chỉ cho bạn trong các nhận xét sử dụng substitute() để đạt được điều tương tự nhưng thông qua các phương tiện khác nhau. Vì vậy, tôi tạo đối tượng trong không gian làm việc cho mỗi giá trị mà bạn có thể muốn hiển thị trong chú thích:

## Calculate RMSE and other values 
rmse <- round(sqrt(mean(resid(fit)^2)), 2) 
coefs <- coef(fit) 
b0 <- round(coefs[1], 2) 
b1 <- round(coefs[2],2) 
r2 <- round(summary(fit)$r.squared, 2) 

Bây giờ xây dựng phương trình sử dụng các cấu trúc được mô tả trong ?plotmath:

eqn <- bquote(italic(y) == .(b0) + .(b1)*italic(x) * "," ~~ 
        r^2 == .(r2) * "," ~~ RMSE == .(rmse)) 

Khi đã xong, bạn có thể rút ra những âm mưu và chú thích nó với biểu hiện của bạn

## Plot the data 
plot(y ~ x, data = mydata) 
abline(fit) 
text(2, 10, eqn, pos = 4) 

Mà cho:

enter image description here

+1

Nếu bạn muốn mỗi bộ mô tả trên một dòng mới sử dụng '\ n' thay vì', 'trong phương trình. – MikeRSpencer

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