問題タブ [cumsum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - グループごとの累積
データが次のように見えるとします
a <- cumsum(data[,"num"]) # 1 3 7 10 17
グループごとに蓄積されたものが必要です。実際には、グループ化指標として複数の列があります。定義したサブグループごとに累計を取得したいと考えています。
例えば
のみでグループ化するgroup1
と、出力は次のようになります
2 つの変数でグループ化するとgroup1,group2
、出力は次のようになります。
r - R では、なぜ -1 + 1 = 0 ではないのですか?
-1 + 1 <> 0 の理由を理解するのを手伝ってもらえますか?
組み込み関数 consum()、関数 ct()、および Excel がすべて同じことをしているのに、3 つの異なる値を取得する理由を誰かが理解するのを手伝ってくれますか?
さて、答えは「ラウンド」の問題であると確信していますが、この問題のその部分がどこから来ているのかわかりません。つまり、これはすべて非常に簡単に思えます。
R では、シーケンス 'a' を作成してから cumsum(a) を実行すると、期待どおりに 0 の結果が得られません。関数を使用して同じ値を計算しようとすると、別の答えが得られます。最後に、Excel を使用して同じ値を計算しようとすると、3 番目の答えが得られます。
これは、cumsum() を使用して取得したものです。
これをテストするための簡単な関数を作成し、同じ答え (または 0) が得られることを期待していましたが、まったく異なる答えが得られました。私の関数とその結果は次のとおりです。
for ループの最後の行を次のように変更すると、予想される答えが 0 になります。
Excel で、ct() 関数と同じロジックを使用すると、最終結果は -2.886580E-15 になります (値を丸めません)。
r - R の特定の累積和 (または確率) でのベクトル インデックスまたは値を識別します。
これは単純な問題のように思えますが、何らかの理由で解決策を見つけることができませんでした。
合計が 1 になる確率の行列があり、どの値で累積合計がたとえば 0.5 になるかを知りたいとします。言い換えれば、この行列を並べ替えられたベクトルに変換した場合、累積合計が 0.5 になるには、最高値からどれだけ離れなければならないかということです。
行列を値のベクトルに変換し、plot(cumsum(x)) を使用して次のグラフを作成しました。
私は次のようなことができます
0.00001 の x 値で累積合計を取得しますが、別の方向に進みたい、つまり、0.5 の累積合計での x 値は何ですか?
quantile() は、順序付けされた値の 50% の値を提供します (たとえば、上のグラフの sort(x)[4e+05] の値を提供します)。これは、私が求めているものではありません。
この一見単純な質問にご協力いただきありがとうございます。
乾杯、ジョシュ
解決:
もっと簡単な方法があるはずですが、累積合計が 0.5 の値が得られます (@plafort に感謝)。
arrays - アルゴリズム: 数値の配列 A を指定して、B[i] = sum(A[j]: A[j] <= A[i]) の配列 B を作成します。
例: A = [4, 1, 3, 2, 3, 3]. 次に、B = [16, 1, 12, 3, 12, 12] を取得します。
アプローチ 1: 各 i について、A を検索し、A[i] 以下の数値を合計します。大雑把に言えば、これには A を n 回横断する必要があるため、O(n^2) 時間かかります。
アプローチ 2: A を並べ替えて A' を取得し、A' の累積和を求めるだけです。これには、A' を 1 回だけ横断する必要があります。したがって、全体の実行時間は、O(n log n) のようなものです。
ただし、これは関係がある場合には機能しません。上記の例では、A' = [1, 2, 3, 3, 3, 6] となるため、cumsum(A') = [1, 3, 6, 9, 12, 16] となりますが、これは同じではありません。 B(ソート済み)として。
O(n log n) で引き続き実行されるようにこれを修正する方法はありますか?
r - 選択した行番号までの行の累積合計に続いて、R の列行列を合計します
行列で次のような合計を実行しようとしています:
行列が次のようになっているとしましょう:
列番号1、2、3の行番号5、7、10までの行をそれぞれ累積合計したい。(実際のデータには、任意の数の行と列を含めることができます)。
今のところ、次のコードを使用しています。
まず、matrix と row_index があります。データには多くの列があるため、ループの使用を避けたいです。それを行う方法があるかどうか疑問に思っています。
python - 効率的な 2d cumsum
このような配列があるとします
a
の各アイテムについて、「次の4つのアイテムの累積」を作成したいと思います。つまり、私の期待される出力は
つまり、次を含む行列
最後の 3 項目については cumsum 操作を正しく実行できないため、あると予想され0
ます。私は単一の絶頂を行う方法を知っています。実際、配列は
水平に積み上げます。ただし、これを効率的な方法で行う方法がわかりません。これを行うための素晴らしいベクトル化されたnumpyの方法は何でしょうか? また、効率性や読みやすさの点でscipy
優勢である限り、パッケージにもオープンです。numpy
python - numpy の逆累積和
A は ((d,e)) numpy 配列です。((d,e)) numpy 配列 B を計算し、エントリ B[i,j] を次のように計算します。
言い換えると、B[i,j] は、すべてのインデックス k>i、l>j で取得された A[k,l] の合計です。これは、両方の軸に適用される通常の cumsum の反対のようなものです。これを行うためのよりエレガントで高速な方法 (np.cumsum を使用するなど) があるかどうか疑問に思っています。