1

foreach条件付きの合計をシミュレートするために、ネストされたループの値を循環するコードがあります。残念ながら、これは私が使用して確認できる欠損値を作成しているようです

display `var'

Stataで演算子を検索しようとし+=ましたが、見つかりません。私もこの行動に混乱しています。0 の代わりに10 を代入しtopTermて、変数がフロア化されているかどうかを確認しようとしましたが、そうではありませんでした。

tempname topTerm bottomTerm controlledContrast
scalar `topTerm' = 0

foreach … numlist {
  foreach … numlist {
    foreach … numlist {
              display `delta', `topTerm'
              scalar `topTerm'= `topTerm' + `delta'*`cc_difference_in_means'*`cc_vet_n'
              display `topTerm'
}}}

編集:ローカル/グローバルを使用してみましたが、まだ値がありません。スコープの問題のようですが、ローカルで修正できると思っていたので、本当に混乱しています…</p>

これはコマンドラインから機能することに注意してください。

local x = 10
local x = `x' + 10
display `x'
>> 20
4

2 に答える 2

2

@ refp16はこの状況で優れた回答をしていますが、あなたの質問は要約すると

  1. 一連のネストされたループでスカラーを合計しています。
  2. 答えがありません。
  3. これは私を驚かせます。

ここでは一般に、「データとコードをもう一度見てください」という形式の回答のみが可能です。詳細には、追加できるものはあまりありませんが、

  • Stata には+=演算子がありません。これは、Stata が C のような構造を好むことを考えると、おそらく驚きですが、ここでは重要ではありません。+=コードを少し短くすることはできますが、問題は変わりません。

  • 合計が欠落するためには、その合計に与えられた値の少なくとも 1 つが欠落している必要があります (そして十分です)。負の数の平方根 (c) 存在しないものを参照し、Stata が欠落していると評価します。

これをデバッグする最善の方法は、display追加される各用語を調べて、どれが欠けているかを見つけることです。あなたはこれをやっているようですが、なぜ欠落している用語を特定できないのですか?

長期的には、Stata にはsummarize, meanonly、変数の合計を として残すr(sum)や、sum()Mata でベクトルや行列に使用できる関数など、ループなしで合計を取得する方法がいくつかあることを知っておいてください。

于 2013-10-30T09:00:11.043 に答える
2

あなたが何をしようとしているのか、私には想像することしかできません。ローカルを使用すると、次のように機能します。

local topterm 0
local delta 5
local cc_difference_in_means 10
local cc_vet_n 25

foreach num1 of numlist 1/10 {
        local topterm = `topterm' + `delta' * `cc_difference_in_means' * `cc_vet_n'
        display `topterm'
}

「ローカル/グローバル」以外は使用していないことは認めますが、以下も機能します。それはあなたのセットアップに似ています。

tempname topTerm
scalar `topTerm' = 0
disp `topTerm'

foreach num1 of numlist 1/10 {
        scalar `topTerm' = `topTerm' + 5
        display `topTerm'
}

しかし、同じ(表示された)結果を与えるこれを行うこともできます:

scalar topTerm = 0

foreach num1 of numlist 1/10 {  
        scalar topTerm = topTerm + 5
        display topTerm
}

繰り返しますが、あなたが何をしようとしているのかわかりません。

于 2013-10-30T05:05:44.193 に答える