2013-07-20 61 views
7

Tôi phải viết hàm riêng để vẽ hàm mật độ phân phối nhị thức và do đó vẽ biểu đồ thích hợp khi n = 20 và p = 0,1,0,2, ..., 0,9. Ngoài ra tôi cần phải bình luận về đồ thị.R, đồ thị phân phối nhị thức

Tôi đã thử điều này;

graph <- function(n,p){ 
       x <- dbinom(0:n,size=n,prob=p) 
       return(barplot(x,names.arg=0:n)) 
      } 


    graph(20,0.1) 
    graph(20,0.2) 
    graph(20,0.3) 
    graph(20,0.4) 
    graph(20,0.5) 
    graph(20,0.6) 
    graph(20,0.7) 
    graph(20,0.8) 
    graph(20,0.9) 

    #OR 
    graph(20,scan()) 

câu hỏi đầu tiên của tôi: có cách nào để tôi không cần phải viết xuống dòng graph(20,p) nhiều lần ngoại trừ sử dụng scan()?

câu hỏi thứ hai của tôi:

Tôi muốn nhìn thấy biểu đồ trong một thiết bị hoặc muốn nhấn ENTER để xem đồ thị tiếp theo. Tôi đã viết

par(mfcol=c(2,5)) 
    graph(20,0.1) 
    graph(20,0.2) 
    graph(20,0.3) 
    graph(20,0.4) 
    graph(20,0.5) 
    graph(20,0.6) 
    graph(20,0.7) 
    graph(20,0.8) 
    graph(20,0.9) 

nhưng biểu đồ quá nhỏ. Làm thế nào tôi có thể trình bày các đồ thị độc đáo với cho dòng đầu n = 20 và p = giá trị mà tôi sử dụng để vẽ đồ thị? [Mặc dù nó có thể được thực hiện bằng cách viết mtext() sau khi gọi hàm nhưng làm như vậy tôi phải viết một tương tự dòng vài lần. Vì vậy, tôi muốn làm điều này bao gồm cả chức năng . ]

Câu hỏi cuối cùng của tôi:

Giới thiệu về nhận xét. Các đồ thị cho thấy rằng là xác suất thành công, p đang tăng đồ thị đang có xu hướng sang phải, có nghĩa là, đồ thị là đúng sai lệch.

Có cách nào để nhận xét về biểu đồ bằng cách sử dụng program không?

+0

Xem xét vòng lặp hoặc 'lapply' để xem qua một số giá trị của p. – Thomas

Trả lời

4

Đây là công việc của mapply vì bạn lặp qua 2 biến.

graph <- function(n,p){ 
    x <- dbinom(0:n,size=n,prob=p) 
    barplot(x,names.arg=0:n, 
     main=sprintf(paste('bin. dist. ',n,p,sep=':'))) 
} 
par(mfcol=c(2,5)) 
    mapply(graph,20,seq(0.1,1,0.1)) 

enter image description here

+1

'sapply (seq (0,1, 1, 0,1), đồ thị, n = 20)' cũng sẽ hoạt động –

2

Vẽ đồ họa cơ sở là một trong những lần bạn thường muốn sử dụng một vòng lặp for. Lý do là bởi vì hầu hết các chức năng âm mưu trả lại một đối tượng vô hình, nhưng bạn không quan tâm đến những điều này; tất cả những gì bạn muốn là tác dụng phụ của âm mưu. Một vòng lặp bỏ qua các obects bị trả về, trong khi các gia đình *apply sẽ lãng phí nỗ lực thu thập và trả lại chúng.

par(mfrow=c(2, 5)) 
for(p in seq(0.1, 1, len=10)) 
{ 
    x <- dbinom(0:20, size=20, p=p) 
    barplot(x, names.arg=0:20, space=0) 
} 
+0

Xin lỗi, tôi lo lắng điều này là mơ hồ ... "hầu hết các chức năng cơ bản âm mưu trả về một đối tượng vô hình" ? Tôi nghĩ điều đó rất sai lạc và thường không chính xác. Cũng không chính xác khi nghĩ rằng các vòng lặp "bỏ qua các đối tượng được trả về" khi đề cập đến các chức năng vẽ sơ đồ cơ sở. –

+0

Bối cảnh là việc sử dụng đồ họa cơ sở, vì vậy tôi nghĩ rằng OP cần giúp đỡ về việc xác định lề hẹp. –

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