問題タブ [rollapply]
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 - 移動ウィンドウの曲線下面積の自動計算
一連の連続した時点での日射強度グラフの下の面積を見つけようとしています。基本的に、過去 24 時間の 7 日間の 1 時間ごとの日射量の積分 (過去 24 時間の移動合計) が必要です (土壌の温度は、過去 24 時間の日射量の結果であると思われます)。
ここに私が使用しているコードがありますが、機能しますが、統合の時間枠を簡単に変更できるように自動化したいと思います (12、18、24、36 時間を試してください)。関係があるかどうかを確認するために、時間ごとの温度データに対してプロットする可能性がある値)
ここで: Rg - 10 分間の測定での日射量 num - データフレームのエントリ番号 AUC_xxx - 過去 24 時間の総日射量
私はrollapplyで試しましたが、私は再び立ち往生しています:
助けてくれてありがとう !
r - 動的ウィンドウによる移動平均
次の行のいくつかの平均を含む新しい列をデータ テーブルに追加しようとしています。ただし、平均のために選択される行数は、行のタイム スタンプによって異なります。
ここにいくつかのテストデータがあります:
それぞれの週の 3 週間前までの週 (「Weekstart」) に発生したすべての需要の平均を含む列を追加したいと考えています (実際の週を除いて Art でグループ化)。
Zoo-library の rollapply を使用すると、次のように機能します。
ただし、問題は、一部のデータが欠落していることです。この例では、アート b のデータには 4 週目がなく、4 週目には需要がありません。前の 3 つの行ではなく、前の 3 週間の平均が必要なため、平均は間違っています。代わりに、第 6 週の Art b の結果は次のようになります。
(第 5 週と第 3 週のみがカウントされるため、14/3 ではなく 6: (8+4)/2)
これまでに私が疲れたのは次のとおりです。
次の行の週の最小値をループして、各行の「幅」の幅 (新しい列「ロール幅」) を定義するベクトルを作成することができます。
しかし、それは非常に専門的ではないようです(私の貧弱なスキルを許してください)。残念ながら、幅とロール幅を指定した rollapply は意図したとおりに機能しません (「ロール幅」はテーブル内のすべてのロール幅と見なされるため、警告が生成されます)。
仕事とは何か
しかし、繰り返しになりますが、平均には実際の週が含まれています(私が望むものではありません)。
引数の幅に行数の代わりに基準を適用する方法を知っている人はいますか (つまり、週の差は <= 3 になります)。どんな提案でも大歓迎です!
r - For-Loopの代替:Rでブーストするためにローリングウィンドウを使用する方法は?
ループをなくして計算速度を上げるためにコードを最適化する方法を探しています。私はこの分野と R にかなり慣れていません。ローリング ウィンドウを使用して、線形時系列モデルでコンポーネントごとの勾配ブースティング回帰を実行します。各ウィンドウの X に対する回帰 y の係数を使用して、y の次の「ウィンドウ外」観測を予測します。(後で予測精度を評価します)
私のデータは、約 540 の観測値を持つ 1560 の異なる時系列 (元の系列のラグを含む) です (次元 540x1560 のデータ フレーム)
調べてみましrollapply
たが、うまくいきませんでした。特に、ウィンドウごと (反復ごと) に yhat を予測する方法がわかりません。
ヒントをいただければ幸いです(私のラップトップで実行するには永遠にかかります)!
PS: multicore
orparallel
パッケージの使用も検討しています。特に b/c 後で停止基準に交差検証を使用します。しかし、私はそれを調べ始めたばかりです。ただし、それに関するヒントも大歓迎です。
編集:組み込みデータを使用した最小限の作業例(時系列ではありません):
r - rollapply na.rm = TRUE は、NA の代わりに 0 の値を与えます
Google、stackoverflow、またはstackexchangeで答えが見つからないように見えるという簡単な質問があります。私は現在rollapply
、NAを含むいくつかの値の合計を見つけるための例を扱っています。例えば:
これは以下を出力します:
これは良さそうに見えますが、3 つの NA が連続している場合が 2 つあります。合計機能は、NA を 0 に交換します。残念ながら、0 は意味のある値であるため、これから扱うデータでは機能しません。0 を NA に置き換える方法はありますか?
以下のような出力を探しています。
前もって感謝します!
r - 時系列でのイベントのローリング カウント
一連の時間枠にわたるグループごとのローリングカウント/発生の合計を計算しようとしています。
次のようなサンプルデータを含むデータフレームがあります。
一意の「グループ」ごとに個々のデータ フレームを反復処理します。たとえば、「A」のグループは次のようになります (グループ 1 かグループ 2 かにかかわらず、すべての行に存在します)。
イベントの「日付」(つまり、現在の行の日付) と過去 4 日間の時間範囲内のイベントの発生数を「A」(およびその後の各グループ) でカウントしたいと考えています。それをロールフォワードしたいので、たとえば、行 1 のカウントは 1、行 2 のカウントも 1 (現在の日付を除いて過去 4 日間にイベントはありません)、行 3 のカウントは 2、行4 には 3 などがあります。
行ごとに、基本的に、このイベント日に、現在の日付 (日付列に示されている) と過去 4 日間に発生したイベントが X 個あるという列を作成したいと思います。 .
r - data.tableを使用して、グループ内の最後のn個の観測値のローリング合計でNAを回避する
私が学んだこの脅威によると、次の data.table の変数 b のローリング サムは次のように達成できます。
データ作成 + ローリングサムの計算:
電流 + 必要な出力:
これで、最初の 2 つの obs に対して生成された NA があります。グループごとに。現在の obs のみを合計するように、代替手段の 1 つを調整する必要があります。(最後の 2 つの観測値) グループ インデックスが開始する場合 (位置 2)。これは、最後の n 値のウィンドウを考慮することができ、例外が処理されるように一般化できるはずです。
何か案が?
r - Rで移動ウィンドウ内の平均勾配を計算する方法
私のデータセットには 2 つの変数y と t [05s]が含まれています。y は 05 秒ごとに測定されました。
移動する20 秒ウィンドウ内の平均勾配を計算しようとしています。つまり、最初の 20 秒勾配値を計算した後、ウィンドウは 1 単位時間 (05 秒) 進み、次の 20 秒ウィンドウを計算し、連続して生成します05 秒刻みで 20 秒の勾配値。
rollapply (zoo パッケージ) を使用してローリング回帰を計算するとうまくいくと思いましたが、各ウィンドウで同じ切片と勾配の値が何度も得られます。私に何ができる?
私のデータ:
R コード: