簡體   English   中英

通過 Microsoft Excel 繪制 CDF 圖表

[英]Plot a CDF chart by Microsoft Excel

我不太確定我是否可以在這里或在SuperUser上問這個問題,

我想知道如何從我的 excel 數據中繪制CDF圖表。 我的數據是這樣的(我的真實數據有 22424 條記錄):

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

您可以使用NORMDIST函數並將最后一個參數設置為 true:

例如,假設我有 20 個數據點,從 0.1 到 2.0,增量為 0.1,即 0.1、0.2、0.3...2.0。

現在假設該數據集的平均值為 1.0,標准差為 0.2。

要獲得 CDF 圖,我可以對每個值使用以下公式:

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

替代文字


要從您的數據中刪除重復條目並匯總相同的值,您可以使用以下代碼。

  1. 在excel中,將數據放在sheet1中,從單元格A1開始
  2. ALT + F11打開 VBE
  3. 現在Insert > Module模塊在編輯器中放置一個模塊
  4. 將下面的代碼剪切並粘貼到模塊中
  5. 將光標放在RemoveDuplicates任意位置並按F5運行代碼

因此,您獨特的匯總結果將出現在您工作簿的 Sheet2 中。

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

這個答案是如何創建“經驗分布函數”,這是許多人(包括我自己)在說 CDF 時真正想到的…… https://en.wikipedia.org/wiki/Empirical_distribution_function

假設樣本數據的第二列從單元格 B1 開始,在單元格 C1 中鍵入:

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

然后按 Shift+Enter,將其作為數組公式輸入。 它現在在公式欄中看起來像這樣:

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

向下復制單元格以覆蓋 C1:C14。 然后以 B1:B14 為 X,C1:C14 為 Y 繪制散點圖。它將顯示四個點。

  • 不需要排序或刪除重復項
  • 使用范圍名稱或利用 Excel 表格功能更自動地管理輸入范圍
  • 這是一個單單元格數組公式,因此根據您復制和粘貼的方式,您將收到一條消息“無法更改數組的一部分”。 如果您使用復制粘貼,請復制單元格 C1,然后選擇單元格 C2:c14 並粘貼。
  • 理想情況下,該圖應顯示為階躍函數,但我沒有時間找出任何方法(好或壞)來做到這一點。

讓我們看看我是否理解你的問題。 假設 Excel 2007 及更高版本。 假設您的數據在 A 列和 B 列中。

第 1 步

在單元格 C1 中使用此公式:

=B1*COUNTIF(A:A,A1) 

而單元格 D1 中的這個公式:

=SUM($C$1:C1)  

並將兩個公式復制到數據的末尾。

第 2 步

選擇四列。
在 Ribbon Data->Delete Duplicates 中選擇
取消選中 B、C 和 D 列

第 3 步

選擇A列和D列。在Ribbon Insert-> Scatter-> Line中選擇

這是您想要達到的目標嗎?

哼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM