以下のような一連のデータがあります。
A B C D
1 2 3 4
2 3 4 5
これらは、ABCD が 2x2 テーブルを構成する集計データであり、各行でフィッシャーの正確検定を実行し、その行のフィッシャーの正確検定の p 値の新しい列を追加する必要があります。
and loop を使用fisher.exact
して R で実行できますが、Stata で Fisher の正確なテストのコマンドを見つけることができません。
以下のような一連のデータがあります。
A B C D
1 2 3 4
2 3 4 5
これらは、ABCD が 2x2 テーブルを構成する集計データであり、各行でフィッシャーの正確検定を実行し、その行のフィッシャーの正確検定の p 値の新しい列を追加する必要があります。
and loop を使用fisher.exact
して R で実行できますが、Stata で Fisher の正確なテストのコマンドを見つけることができません。
あなたは R の用語で考えていますが、それは多くの場合、Stata では役に立ちません (Stata の専門家by ... : regress
が R でのやり方を理解するのは不可能であるように、すべてのパッケージには独自のパラダイムと独自の強みがあります)。
列を追加するオブジェクトがありません。Stata の共同研究者が共感する適切な解決策を見つけるために、最終的には p 値を使用して何をする必要があるかについて、もう少し詳しく言うことができるかもしれません。
本当に新しい列 (generate
新しい変数、Stata で言えば)を追加したい場合はtabulate
、その戻り値を確認することをお勧めします。
clear
input x y f1 f2
0 0 5 10
0 1 7 12
1 0 3 8
1 1 9 5
end
あなたA B C D
は 2 つのバイナリ変数を表していると思います。数字はデータの頻度です。clear
Stata は一度に 1 つのデータ セットについて考えるため、記憶する必要があります。
次にtabulate
、結果とgenerate
p 値を含む新しい変数を作成できますが、これは定数値を含む変数を作成するためにメモリを大幅に浪費することになります。
tabulate x y [fw=f1], exact
return list
generate p1 = r(p_exact)
tabulate x y [fw=f2], exact
generate p2 = r(p_exact)
ここで[fw=variable]
は、頻度の重みを指定する方法を示します。return list
手順の結果、Stata がどのような情報を保存するかを調べるために入力しました。それがStataが扱うオブジェクトのようなものです。R はコンポーネントでテスト結果を返し、fisher.test()$p.value
Stata はr(component)
単純なコマンドとe(component)
推定コマンドの戻り値を作成します。
ループ ソリューションが必要な場合 (セットが多数ある場合)、次のようにすることができます。
forvalues k=1/2 {
tabulate x y [fw=f`k'], exact
generate p`k' = r(p_exact)
}
これは、Stata、IMHO が R よりもはるかに強力なスクリプト機能です (ただし、これは非常に汚いプログラミングのトリックであると主張できます)。ローカル マクロk
は 1 から 2 までの値を取り、このマクロは中かっこで囲まれたコードのどこでも ``k'` として置き換えられます。
あるいは、結果をスカラーとして Stata 短期記憶に保持することもできます。
tabulate x y [fw=f1], exact
scalar p1 = r(p_exact)
tabulate x y [fw=f2], exact
scalar p2 = r(p_exact)
ただし、スカラーはデータ セットに関連付けられていないため、データと共に保存することはできません。
ここでcci
提案されているような即時コマンドも、同様に取得できる値を返します。
HTH、スタース
オプション付きのcci
コマンドを見てください:exact
cci 10 15 30 10, exact
これは、いわゆる「即時」コマンドの一部です。これらを使用すると、メモリに格納されたデータからではなく、引数から直接計算を行うことができます。見てhelp immediate
投稿者の最初の質問の各観測は、1 つの従来の 2 x 2 テーブルの 4 つのカウントで構成されていたようです。Stas のコードは、個々の観測データに適用されます。Nick は、-cci- が abcd データを分析できることを指摘しました。次のコードは、各テーブルに -cci を適用し、Stas のコードと同様に p 値をデータ セットに追加します。このforvalues i = 1/`=_N'
ステートメントは、最初の観測から最後の観測までループを実行するように Stata に指示します。a[`i']
i 番目のオブザベーションの変数「a」の値を参照します。
clear
input a b c d
10 2 8 4
5 8 2 1
end
gen exactp1 = .
gen exactp2 =.
label var exactp1 "1-sided exact p"
label var exactp2 "2-sided exact p"
forvalues i = 1/`=_N'{
local a = a[`i']
local b = b[`i']
local c = c[`i']
local d = d[`i']
qui cci `a' `b' `c' `d', exact
replace exactp1 = r(p1_exact) in `i'
replace exactp2 = r(p_exact) in `i'
}
list
ローカル マクロに変数と同じ名前を付けても問題ないことに注意してください。