彙總我有類似下面一組數據進行Fisher精確檢驗:使用的Stata
A B C D
1 2 3 4
2 3 4 5
它們是ABCD構成一個2x2的表彙總的數據,我需要做的Fisher精確檢驗每行,併爲該行的Fisher精確檢驗的p值添加一個新列。
我可以使用fisher.exact
和循環做,在R,但我找不到Fisher精確檢驗在Stata的命令。
彙總我有類似下面一組數據進行Fisher精確檢驗:使用的Stata
A B C D
1 2 3 4
2 3 4 5
它們是ABCD構成一個2x2的表彙總的數據,我需要做的Fisher精確檢驗每行,併爲該行的Fisher精確檢驗的p值添加一個新列。
我可以使用fisher.exact
和循環做,在R,但我找不到Fisher精確檢驗在Stata的命令。
您在R項之所想,那就是在Stata(往往無果而終只是因爲它是不可能的Stata的傢伙弄清楚如何在R請勿by ... : regress
;每個包都有自己的模式和自己的優勢)。
有沒有對象將列添加到。可能你會說一點點,以你需要做的,最後,用你的p值是什麼,這樣才能找到一個合適的解決方案,您的Stata合作者將與同情。
如果你真的想添加一個新列(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
代表兩個二進制變量,數字是數據中的頻率。你必須記憶,因爲Stata一次只考慮一個數據集。
然後,你可以tabulate
結果和含P值generate
新的變量,雖然這將是內存的主要廢棄物創建包含一個恆定值的變量:
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存儲的程序結果信息。 THAT'S類似對象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,恕我直言,是除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
建議here的直接命令也會返回值,您可以同樣檢索。
HTH,斯塔斯
深入瞭解cci
命令與exact
選項:
cci 10 15 30 10, exact
這就是所謂的「立竿見影」的命令的一部分。它們允許您直接從參數進行計算,而不是從存儲器中存儲的數據進行計算。看看help immediate
在海報的原題每個觀測顯然是一個傳統的2×2表包括四個計數。斯塔斯的代碼適用於個人觀察數據。 Nick指出-cci-可以分析數據。這裏是對每個表應用-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
請注意,在賦予本地宏名稱與變量同名方面沒有問題。