ここまたは 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
関数を使用して、finalパラメーターを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
データから重複するエントリを削除し、同じ値を合計するには、次のコードを使用できます。
ALT + F11
を押してVBEを開きますInsert > Module
で、モジュールをエディターに配置します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
サンプルデータの2番目の列がセル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として散布図を作成します。4つのポイントが表示されます。
私があなたの問題を理解したかどうか見てみましょう。 Excel2007以降を想定しています。データが列AとBにあると仮定します。
ステップ1
セルC1でこの数式を使用します。
=B1*COUNTIF(A:A,A1)
そしてセルD1のこの数式:
=SUM($C$1:C1)
両方の数式をデータの最後までコピーします。
ステップ2
4つの列を選択します。
リボンデータで選択->重複を削除
列B、C、Dのチェックを外します
ステップ3
列AとDを選択します。リボン挿入->散布図->線で選択します。
これはあなたが達成したいことですか?
HTH!