2017-02-27 9 views
0

私は回帰を実行し、結果を所望の方法で返すカスタム関数を持っています。この関数の名前は "reg.fun"です。rollapply内でカスタム関数を使用する方法

results <- dt[ ,reg.fun(.SD, depvar="Y", indepvars=c("X1", "X2")), 
       .SDcols=c("Y", "X1", "X2"), by = id] 

上記のコードは、このような出力を生成します:それはちょうど私の所望の方法での回帰結果を報告している)私は "を使用するために、データテーブルでそれを使用しています。例えば、私はそのようなコードを実行することができますグループ機能によって。

id X1coef X2coef X1tstat X2tstat ...other results... 
A 0.0418 0.1194 2.65  3.56 .... 
B 0.7903 -0.554 2.75  4.59 ..... 

これは完全に動作し、目的のテーブルに結果を表示します。今、rollapply関数を使用して、同じウィンドウをロールウィンドウで実行したいと考えています。私が書くことはこれです:match.funで

エラー(FUN): 「reg.fun(.SD、depvar =「Yここ

regress <- dt[ ,rollapply(.SD, width = 3, 
       reg.fun(.SD, depvar="Y" indepvars=c("X1","X2"))), 
       .SDcols = c("Y", "X1", "X2"), by = id] 

は、私は今、取得エラーです」indepvars = Cの( 『X1』、 『X2』))」関数ではなく、文字や記号

理想的には、私は同じ上記の表を生成するが、現在複数の行とのID Aおよびid B、私は回帰ウィンドウで回帰を実行したいからです。このように気にいら:このコンテキストreg.funにrollapplyための機能として考慮されていない理由

window id X1coef X2coef X1tstat X2tstat ...other results... 
    1-3  A xxx  xxx  xxx  xxx .... 
    2-5  A xxx  xxx  xxx  xxx 
    3-6  A xxx  xxx  xxx  xxx 
    ... 
    1-3  B xxx  xxx  xxx  xxx ..... 
    2-5  B xxx  xxx  xxx  xxx 
    3-6  B xxx  xxx  xxx  xxx 

私は見つけることができません。

これは私の最初のRプロジェクトですので、私は多すぎるかもしれないことを知っています。何か問題があるかどうかを教えてもらえますか?そうでない場合、正しい方向性は何ですか?行く?

+1

小さな再現可能な例と予想される出力を示してください。 – akrun

+0

結果の一部の出力を回帰の期待される出力に投稿できますか? – Llopis

+0

は(かなり明確に見えた)エラーメッセージを再表示するには: 'match.fun'-関数は、関数または関数の名前を与えられていなかったのではなく表現またはコールを与えられました。私はまたあなたがそこに「内装」「SD」を残すことができないと思う。 rollapplyのFUN引数は、 '.SD'の結果から抽出されたデータのパーセルを取得します。私の選択肢では、3行のデータを持つ多くの「回帰」を行うのはむしろ愚かなようです。 –

答えて

0

私が覚えているとして、あなたべきコンマの後に、ではない括弧内rollapply内部のカスタム関数の入力引数。このようなものを印刷する必要がありますrollapply(data, window, function, arg1, arg2)。あなたのケースでは、次のようになります。

rollapply(.SD, 3, reg.fun, depvar="Y", indepvars = c("X1", "X2")), .SDcols = c("Y", "X1", "X2"), by = id)

またrollapply by引数は、最も可能性の高い数値でなければなりません!

また、カスタム関数reg.funにはby引数もありますが、これはあいまいでエラーも発生する可能性があります。

0
regress <- dt[ ,rollapply(.SD, width = 3, reg.fun, depvar="Y", 
       indepvars=c("X1","X2")), .SDcols = c("Y", "X1", "X2"), by = id] 
+0

単にコードのみの回答を提供するのではなく、コードの内容とその理由を説明することをお勧めします。ありがとう –

関連する問題