通过Microsoft Excel绘制CDF图表

Am1*_*3zA 8 math excel charts plot

我不太确定我是否可以在这里或在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
Run Code Online (Sandbox Code Playgroud)

Ale*_*x P 6

您可以使用该NORMDIST函数并将最终参数设置为true:

例如,假设我有0.1至2.0的20个数据点,以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
Run Code Online (Sandbox Code Playgroud)

替代文字


要从数据中删除重复的条目,并删除相同的值,可以使用以下代码。

  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
Run Code Online (Sandbox Code Playgroud)


小智 5

这个答案是如何创建“经验分布函数”,这是许多人(包括我自己)在说 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)
Run Code Online (Sandbox Code Playgroud)

然后按 Shift+Enter,将其作为数组公式输入。它现在在公式栏中看起来像这样:

{=SUM(IF($B$1:$B$14<=B1,1,0))/COUNT($B$1:$B$14)}
Run Code Online (Sandbox Code Playgroud)

向下复制单元格以覆盖 C1:C14。然后以 B1:B14 为 X,C1:C14 为 Y 绘制散点图。它将显示四个点。

  • 不需要排序或删除重复项
  • 使用范围名称或利用 Excel 表格功能更自动地管理输入范围
  • 这是一个单单元格数组公式,因此根据您复制和粘贴的方式,您将收到一条消息“无法更改数组的一部分”。如果您使用复制粘贴,请复制单元格 C1,然后选择单元格 C2:c14 并粘贴。
  • 理想情况下,该图应显示为阶跃函数,但我没有时间找出任何方法(好或坏)来做到这一点。