2016-04-05 17 views
0

私は、会社ごとに過去90日間の私の変数(price)のローリング手段を計算したい3つの識別子(日付、会社、人物)日付。パネルにtssetを割り当てると、エラーメッセージrepeated time values within panelが表示されます。私のパネルの各個人は複数の企業に所属しているので、私は各日付ごとにいくつかの会社と個人のペアを持っています。ここ は、これまでの私のコードです:Stataの3つの識別子を持つパネルのローリング平均

tsset company_id date_id 
tsegen Mean_90days = rowmean(L(0/90).price)  

は、このような計算を行うためにどのようにする方法はありますか?

私のソリューションは、各company_person_id date観察のために意味やby (company_id date_id)を集約する平均egen=mean()を使用するように計算する、group(company_id person_id)を使用してcompany_person_idを生成することでした。しかし、私はそれが妥当かどうかまだ分かりません。

+0

あなたの2ステップの解決策は、道が働くためには健全だと思われますが、より直接的なルートがあります。私の答えを見てください。 –

+0

実際には、異なる数の測定値に基づいて(会社、人)のペアが異なる可能性があるという事実を考慮しない限り、回避策は問題になります。正しい回避策は重み付けされた平均です。 –

+0

はい、あなたは正しいです@Nick Cox - 私の場合は加重平均が良いです。 – In777

答えて

5

あなたはその機械で両方の方法を使用することはできません。企業がパネルであると宣言すれば、同じパネルと時間の複製のために洗い流されません。 tssetが失敗し、tsegen(SSC、説明する必要があります)が跳ねません。 tssetフレームワークが拒否した場合、それに基づいているものは何も助けてくれません。

(会社、人)のペアがパネルであると宣言すると、計算を進めることができますが、同じ会社の異なる人物の値をプールすることはありません。それはあなたが望むものと思われる。

しかし、良いニュースがあります。

rangestat(SSC)(発表済みhere)が役立ちます。

あなたのコマンドは、私は、これはあなたの呼び出しのように、前の90日存在のために計算されていることを

rangestat (mean) price, interval(date_id -90 0) by(company) 

注意に似ていると思うだろう。

+0

ありがとう、私は 'rangestat'は私がここに必要なものだと思います。 – In777

関連する問題