2010-12-30 34 views
6

Tôi không hoàn toàn chắc chắn nếu tôi có thể đặt câu hỏi này ở đây hoặc trên SuperUser,Lô một biểu đồ CDF bởi Microsoft Excel

Tôi muốn biết làm thế nào tôi có thể vẽ một biểu đồ CDF sản lượng của tôi trong excel.

dữ liệu của tôi là một cái gì đó như thế này (dữ liệu thật của tôi có 22.424 hồ sơ):

1 2.39E-05 
1 2.39E-05 
1 2.39E-05 
2 4.77E-05 
2 4.77E-05 
2 4.77E-05 
4 9.55E-05 
4 9.55E-05 
4 9.55E-05 
4 9.55E-05 
4 9.55E-05 
4 9.55E-05 
8 0.000190931 
8 0.000190931 
+0

Các cột là gì? –

+0

@belis cột đầu tiên: mức độ đầu ra của đồ thị của tôi, Cột thứ hai: outputDegree/AllOutPutDegree – Am1rr3zA

+0

Xin lỗi tôi không hiểu ý bạn là gì "độ" –

Trả lời

3

Bạn có thể sử dụng NORMDIST chức năng và thiết lập các thông số chính thức là true:

Như một ví dụ, giả sử tôi có 20 điểm dữ liệu từ 0,1 đến 2,0 theo gia số là 0,1, 0,2, 0,3 ... 2,0.

Giả sử rằng trung bình của tập dữ liệu đó là 1.0 và độ lệch chuẩn là 0,2.

Để có được âm mưu CDF tôi có thể sử dụng công thức sau đây cho mỗi giá trị của tôi:

=NORMDIST(x, 1.0, 0.2, TRUE) -- where x is 0.1, 0.2, 0.3...2.0 

alt text


Để loại bỏ các mục trùng lặp từ dữ liệu của bạn và các giá trị tổng giống nhau bạn có thể sử dụng mã sau đây.

  1. Trong excel, đặt cho bạn dữ liệu trong sheet1, bắt đầu từ ô A1
  2. Nhấn ALT + F11 để mở VBE
  3. Bây giờ Insert > Module để đặt một module trong trình soạn thảo
  4. Cắt và dán mã dưới đây vào mô-đun
  5. Nơi con trỏ bất cứ nơi nào trong RemoveDuplicates và Press F5 để chạy mã

Kết quả là, kết quả tổng hợp duy nhất của bạn sẽ xuất hiện trong Sheet2 trong sổ làm việc của bạn.

Sub RemoveDuplicates() 
    Dim rng As Range 
    Set rng = Range("A1:B" & GetLastRow(Range("A1"))) 

    rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets("Sheet2").Range("A1"), Unique:=True 

    Dim filteredRng As Range 
    Dim cl As Range 

    Set filteredRng = Worksheets("Sheet2").Range("A1:A" & GetLastRow(Worksheets("Sheet2").Range("A1"))) 

    For Each cl In filteredRng 
     cl.Offset(0, 1) = Application.WorksheetFunction.SumIf(rng.Columns(1), cl.Value, rng.Columns(2)) 
    Next cl 
End Sub 

Function GetLastRow(rng As Range) As Long 
    GetLastRow = rng.End(xlDown).Row 
End Function 
+0

Làm thế nào bạn đoán phân phối là Bình thường? –

+0

Trong ví dụ của tôi tôi đã chỉ đơn giản là hiển thị một ví dụ cách điệu làm thế nào để làm cốt truyện CDF với giả định có nghĩa là và sd ... trong thế giới thực bạn w cần phải kiểm tra tính bình thường, giả định phương sai, vv –

+0

@Remn như bạn có thể thấy trong dữ liệu mẫu của tôi được đăng Tôi có một số dữ liệu lặp lại trong cột giá trị của mình làm cách nào để xử lý trước chúng? và tôi cũng không phân phối bình thường trong dữ liệu của tôi – Am1rr3zA

4

Hãy xem tôi có hiểu vấn đề của bạn hay không. Giả sử Excel 2007 trở lên. Giả sử dữ liệu của bạn trong cột A và B.

Bước 1

Sử dụng công thức này trong ô C1:

=B1*COUNTIF(A:A,A1) 

Và công thức này trong tế bào D1:

=SUM($C$1:C1) 

và sao chép cả hai công thức xuống cuối dữ liệu.

Bước 2

Chọn bốn cột.
Chọn trong Ribbon đĩa dữ liệu> Xóa Duplicates
Bỏ chọn Cột B, C và D

Bước 3

Select Columns A và D. Chọn trong Ribbon Insert-> Scatter-> Dòng

Đây có phải là điều bạn muốn đạt được không?

HTH!

+0

@belis nó chính xác những gì tôi muốn ngoại trừ việc tôi muốn của tôi có 3 "1 2.39E-05" Tôi phải có một "1 7.17e-05" (có nghĩa là tôi không muốn chỉ đơn giản là loại bỏ trùng lặp cần một quá trình nhỏ quá :() – Am1rr3zA

+0

@ Am1rr3zA chỉnh sửa. Hãy xem –

+0

@Belis ở Bước 2 nó nói với tôi rằng không tìm thấy bất kỳ trùng lặp là nó phải không? Hoặc tôi phải chọn một số cột thay vì tất cả 4? – Am1rr3zA

2

Câu trả lời này là làm thế nào để tạo ra một 'chức năng thực nghiệm phân phối, đó là những gì nhiều người thực sự có trong tâm trí (trong đó có tôi) khi họ nói CDF ... https://en.wikipedia.org/wiki/Empirical_distribution_function

Giả sử cột thứ hai của dữ liệu mẫu bắt đầu trong ô B1, trong ô C1, loại:

=SUM(IF($B$1:$B$14<=B1,1,0))/COUNT($B$1:$B$14) 

sau đó nhấn Shift + Enter, để nhập nó làm công thức mảng. Giờ đây, nó sẽ trông giống như thế này trong thanh công thức:

{=SUM(IF($B$1:$B$14<=B1,1,0))/COUNT($B$1:$B$14)} 

Sao chép ô xuống để che C1: C14. Sau đó làm cho âm mưu Scatter với B1: B14 là X, C1: C14 là Y. Nó sẽ hiển thị bốn điểm.

  • Không cần phải sắp xếp hoặc gỡ bỏ bản sao
  • Sử dụng tên dãy, hoặc tận dụng khả năng bảng tính Excel, để quản lý đầu vào dao động tự động hơn
  • Đó là một công thức mảng đơn bào, vì vậy tùy thuộc vào cách bạn sao chép và dán, bạn sẽ nhận được thông báo "Không thể thay đổi một phần của mảng". Nếu bạn sử dụng Sao chép-Dán, sao chép ô C1, sau đó chọn các ô C2: c14 và Dán.
  • Lý tưởng nhất, biểu đồ phải được trình bày dưới dạng hàm bước, nhưng tôi không có thời gian để tìm ra cách nào (tốt hay xấu) để làm điều đó.
Các vấn đề liên quan