A. 用Stata如何將一個變數按照取值分組並計算每一組的標准差
1、首先在電腦中打開stata軟體,在command中輸入此ci prop foreign,然後點擊鍵盤上的回車輸入。
B. stata中如何統計一個變數等於某一數值
把這一列數據導入為一個變數x,然後創建一個新變數y來計算大於某個數例如100的個數。如下: gen y=0 replace y=1 if x>100 tab y 這樣,就看到了大於100的數的個數。
C. 請教stata中weight的具體計算方法
stata的命令名是correlate [varlist] [if] [in] [weight] [, correlate_options] eviews中的操作是把相關變數生成一個gruop,然後點擊view下面的covariance,選擇correlation即可
D. stata中如何根據系數求Z值,實證結果中知道系數值,如何求對應的Z值
如何跟女生玩的洗漱里最最熱的時間,結果你總知道這些,如果我們如何去對應這個這行收入還是計算的
E. 如何用stata做穩健回歸
如何用stata做穩健回歸
大量的線性回歸模型是基於最小二乘法實現的,但其仍存在一些局限性。比如說,樣本點出現許多異常點時,傳統的最小二乘法將不再適用,此時則可以使用穩健回歸(robust regression)代替最小二乘法。
操作
下面的穩健回歸使用的是犯罪數據,該數據來自Alan Agresti和Barbara Finlay的《社會科學統計方法》。變數包括美國各州編號(sid)、州名(state)、每10萬人犯罪案件數量(crime)、生活在貧困線以下人口的百分比(poverty)和單親人口百分比(single)等。我們選擇使用貧窮率和單狀況來預測犯罪率。
獲取數據
use https://stats.idre.ucla.e/stat/stata/dae/crime, clear
summarize crime poverty single
導入數據,並描述各個變數的統計結果,輸出表格中包含樣本容量、平均數、標准差、最小值和最大值。
OLS回歸
在穩健回歸之前,我們先進行OLS回歸,輸出結果如下。
regress crime poverty single
樣本點分析
首先我們通過「lvr2plot」繪制殘差杠桿圖,通過識別離群點和高杠桿值點(杠桿點)進而識別強影響點。假如存在杠桿點的話,要確定哪些是bad leverage point,對於這些離群點我們要評估它對擬合模型的影響。
lvr2plot, mlabel(state)
由圖中我們可以看出,dc、ms、fl三個點殘差較大或者杠桿值比較高。庫克距離是杠桿值與殘差大小的綜合效應,一般而言,庫克距離大於1,則可認為該樣本點為強影響點。接下來我們計算各點的庫克距離(Cook』s Distance),並輸出結果。
predict d1, cooksdclist state crime poverty single d1ifd1>4/51, noobs
由結果可以看出,dc點庫克距離大於1,表明dc這一樣本點對於回歸結果會產生較強的影響,在之後的穩健回歸中我們會對dc點進行特殊處理。
接下來我們分析數據的殘差。使用rstandard這一命令,它表示標准化殘差的絕對值。
predict r1, rstandardgen absr1 = abs(r1)gsort -absr1clist state absr1in1/10, noobs
穩健回歸
我們使用「rreg」命令進行穩健回歸,並輸出結果如下。
rreg crime poverty single, gen(weight)
對比最開始的OLS回歸,我們發現兩者差異較大。並且穩健回歸中的樣本點數量是50,OLS回歸中為51,這是因為經過前面的分析,由於dc這一異常值點對回歸結果影響較強,因此在穩健回歸中我們將其捨去。下面的操作表明在穩健回歸中,dc樣本點所佔權重為零。
clist state weightifstate =="dc", noobs
下面的命令展示了其他權重較小的觀察值,一般而言,殘差較大的觀察值權重較小,例如我們之前提到的ms點。在OLS回歸中,所有樣本點的權重都是1,因此穩健回歸中越多的樣本點權重是1,其回歸結果與OLS結果越相近。
sort weightclist sid state weight absr1 d1in1/10, noobs
我們還可以通過繪制圓圈的方式形象地展現這一關系。下圖中橫坐標表示單親率,縱坐標表示犯罪率,每一個圓圈表示一個樣本點,圓心為該樣本點在坐標中的位置,圓圈直徑越大,表示該樣本點權重越大。
twoway (scatter crime single [weight=weight], msymbol(oh))ifstate !="dc"
拓展
我們在穩健回歸分析之後,可以使用許多後續估計命令,比如test、margin等。下面的操作是我們控制貧困率之後,在不同的單親率下預測犯罪率。我們發現,隨著單親率的提高,犯罪率也相應地上升。
margins, at(single=(8(2)22)) vsquish
F. 如何使用stata求alpha值
用stata算集中指數採用Stata系統自帶資料庫auto.dta。
一、集中趨勢的統計描述
以變數price為例進行說明。
均數:採用mean price計算得6165.257。
算術均數、幾何均數和調和均數可以採用means、ameans、gmeans、hmeans計算。
眾數:沒有對應的命令可以直接計算眾數,但是可以通過幾種策略進行變通計算。如通過egen x=mode(price); disp x; drop x,不過本例中price中沒有相同的數值,所以無法計算眾數;另外也可通過preserve; contract price, freq(x); sum x; list price if x==r(max); restore 來顯示。
中位數:centile price或tabstat price, s(med),當然tabstat還可以計算均數、樣本量、標准差,標准誤、方差、極差、四分位間距、變異系數、峰度系數、偏度系數等等很多指標。
不過採用Stata(summarize ,tabstat等命令)計算的峰度系數與Excel、SPSS和SAS計算的結果有所不同,原因是採用的公式不同,大家根據實際情況來選擇。
二、離散趨勢指標
極差(全距):tabstat price, s(r)
標准差:tabstat price, s(sd)
方差:tabstat price, s(v)
四分位間距:tabstat price, s(iqr)
變異系數:tabstat price, s(cv)
採用summarize , detail命令可以計算均數、標准差、峰度系數、偏度系數、多個百分位數。不加detial可以得到最大值、最小值。
G. 如何用stata,由t值算出p值
* t 值的計算 t = 系數/標准誤
use B1_consume, clear
regress consume income
dis %4.2f 0.6848014/0.2487525 /*income 的 t 值*/
dis %4.2f 51.89511/80.84397 /*常數項 的 t 值*/
* 矩陣解析
mat b0 = diag(b)
mat list b0
mat inv_se_b = inv(se_b)
mat list inv_se_b
mat t = hadamard(b0, inv_se_b)
mat list t
mat t = vecdiag(t)
reg consume income
* p 值
* H0 : bj = 0 即,系數估計值是否顯著不等於零
* 由於 t值 服從 t 分布,所以我們很容易計算其 p 值
help density functions
mat list t
local p_income = ttail(11-2, 2.75)*2 /*雙尾*/
local p_cons = ttail(11-2, 0.64)*2
mat pvalue = (`p_income' \ `p_cons')
mat list pvalue
H. stata如何估計參數
一、極大似然估計的原理
極大似然的估計原理可以由下面的程序得到說明。我們首先生成 10 個服從
正態分布的總體,每個總體的均值都不同,依次為 0,1,2,3,4,5,6,7,8,
9。方差相同,均為 1。然後我們隨機地取出一個總體,從中抽出 10 個樣本,因
為事先不知道是從哪一個總體中抽出來的,所以我們分別用已知的 10 個總體參
數值代入似然函數,計算出 10 個似然函數值,取其中最大的似然值,認為該樣
本是從相應的總體中取出的(從而聯合概率密度也最大化)。然後我們讓計算機
告訴我們它是從第幾個總體中取樣的,並與我們的判斷進行對比。
code:================================================================
capt prog drop mle
prog mle
drawnorm double x0-x9,n(8) m(0,1,2,3,4,5,6,7,8,9) clear
global i=int(10*uniform()) //設定一個隨機數,用於隨機取出一個總體
forv j=0/9 {
gen lnf`j' =-0.5*ln(2*_pi)*8-sum(0.5*(x$i-`j')^2) //對取出的總體計算似然值
scalar lnf`j'=lnf`j'[_N] //最終的似然值
}
scalar list // 比較10個似然值哪個最大,猜想是從第幾個總體取出來的?
end
mle
di "所抽中的樣本為" as error "X"$i
二、最小二乘估計 OLS 原理
與極大似然估計尋求樣本密度函數對數值最大不同,最小二乘估計尋求樣本
點與總體參數的距離最小。這種距離通常以平方和來表示,因此稱為最小二乘估
計。最小二乘估計原理可以由下面的程序得到說明。
我們首先生成 10 個服從正態分布的總體,每個總體的均值都不同,依次為
0,1,2,3,4,5,6,7,8,9。但方差相同,均為 1。然後我們隨機地取出一
個總體,從中抽出 10 個樣本,因為不知道是從哪一個總體中抽出來的,所以我
們分別計算樣本點與已知的 10 個總體參數值(均值)之間距離的平方和,然後
取使得平方和最小的哪個參數值,認為該樣本是從哪個總體中取出的。然後我們
讓計算機告訴我們它是從第幾個總體中取樣的。
code:================================================================
capt prog drop ols
prog ols
drawnorm double x0-x9,n(8) m(0,1,2,3,4,5,6,7,8,9) clear
*生成10個總體,每個總體取8個樣本
global i=int(10*uniform()) //設定一個一位數的隨機數,0,1,2,…,9
forv j=0/9 {
gen lnf`j' =sum((x$i-`j')^2) //對某總體計算10個觀察值到總體均值的平方和
scalar lnf`j'=lnf`j'[_N] //取平方和賦給標量
}
scalar list //比較10個平方和哪個最大,猜想是從第幾個總體取出來的?
end
ols
*根據10個平方和,猜想是從第幾個總體取出來的?
di "所抽中的樣本為" as error "X"$i //顯示真正的取樣總體是?
三、矩估計MM原理
矩估計法不需要知道總體的分布,只要知道總體的矩即可。然後直接求出樣
本矩,代替總體矩即可。矩估計原理可以由下面的程序得到說明。
我們首先生成 10 個總體,每個總體的均值都不同,依次為 0,1,2,3,4,
5,6,7,8,9。然後我們隨機地取出一個總體,從中抽出 8 個樣本,因為不知
道是從哪一個總體中抽出來的,所以我們分別計算樣本的一階原點矩,即均值,
然後取該樣本均值作為總體均值的估計值,比較樣本均值與總體均值,認為相距
最近的哪個樣本是從相應總體中取出的。
code:================================================================
cap prog drop mm
drawnorm double x0-x9,n(8) m(0,1,2,3,4,5,6,7,8,9) clear
*生成10個總體,取樣,得到10個樣本
global i=int(10*uniform()) //設定一個一位數的隨機數,0,1,2,…,9
quietly sum x$i
di r(mean)
*根據樣本均值,猜想是從第幾個總體取出來的?
di "所抽中的樣本為" as error "X"$i //顯示真正的取樣總體是?
四、區間估計原理
區間估計與點估計不同,它尋求一個區間,該區間以一定的概率保證真正的總
體參數值包含在其中,當然,對於一個特定的樣本,它可能包含參數真值,也可
能不包含。
code:================================================================
capt prog drop bb
prog bb
drawnorm x,n(100) m(5) sds(10) d clear
quietly sum x
end
***將上述抽樣試驗進行100次,得到100個樣本均值mean和標准差sd
simulate mean=r(mean) sd=r(sd), reps (100) nodots: bb
g n=_n
*在已知總體方差前提下(總體標准差為10),求100個子樣本95%的置信區間
g zlow=mean-invnorm(0.975)*10/sqrt(100)
g gh=mean+invnorm(0.975)*10/sqrt(100)
*在總體方差未知的前提下,用樣本標准差sd替代,需要藉助t統計量
g tlow=mean-invttail(99,0.025)*sd/sqrt(100)
g thigh=mean+invttail(99,0.025)*sd/sqrt(100)
*考察總體均值是否在子樣本的95%置信區間內,如不在則標記為1,否則為零
g zsign=(zlow<5& gh>5)
g tsign=(tlow<5& thigh>5)
*統計沒有包括總體均值的子樣本95%置信區間個數
table zsign
table tsign
*圖示
tw rcapsym thigh tlow n, yline(5) || rcapsym thigh tlow n if thigh<5 | tlow>5
五、假設檢驗原理
由於(1)我們不知道真正的總體均值,(2)只能抽取一個樣本,因此,當
我們根據對樣本的統計結果來對總體均值進行推斷的時候就可能出錯。從一次抽
樣來推斷時,樣本均值的 95%置信區間可能含有總體均值,也可能不含有總體均
值,含有的可能性為 95%,不含有的可能性為 5%。如果本來是不含有的真值的,
我們認為含有,就犯了納偽錯誤;如果本來是含有的真值的,我們認為不含有,
就犯了棄真錯誤。
當總體的方差未知時,用樣本方差來替代總體方差,則樣本均值減總體均值
服從(n-1)的 t 分布。
情形 1:總體均值已知,為 u=5。但我們假裝不知道,卻做出了對總體均值正確
的原假設,認為它等於 u0=5,則抽樣進行假設檢驗如下
code1:=================================================================
drawnorm x,n(100) m(5) sds(10) d clear
*生成一個均值u=5,標准差o=10的正態隨機變數,作為研究總體
quietly sum x
di as text "從樣本計算t統計值為:" as error (r(mean)-5)/(sqrt(100)*r(sd))
di as text "根據t統計量臨界值為:" as error invttail(99,0.025)
di as result "對這次實驗,拒絕還是接受?"
code2:==================================================================
capt prog drop bb
prog bb
drawnorm x,n(100) m(5) sds(10) d clear
quietly sum x
scalar ref=(abs(sqrt(100)*(r(mean)-5)/r(sd))>invttail(99,0.025))
*如果樣本統計量(t)值大於臨界值,則拒絕原假設一次jud=1,否則為0
end
simulate ref,reps(100):bb
tab _sim //其中的1表示在100次中拒絕原假設的次數。
情形 2:總體均值已知,為 u=5。但我們假裝不知道,並做出了對總體均值錯誤
的原假設,如認為它等於 u0=10,則抽樣進行假設檢驗如下
code3:=================================================================
capt prog drop bb
prog bb
drawnorm x,n(100) m(5) sds(10) d clear
quietly sum x
scalar jud=(abs(sqrt(100)*(r(mean)-10)/r(sd))>invttail(99,0.025) ) //比較統計值與臨界值大小
end
simulate jud,reps(100):bb
tab _sim
I. 怎樣用STATA求變數的增長率
gen pergdp=gdp/gdp[_n-1]-1
也可以分幾步實現:
1、先生成gdp變數的滯後1期變數
gen laggdp=gdp[_n-1]
2、再用當期值除以滯後值
gen pergdp=gdp/laggdp-1
3、drop laggdp
如果是時間序列數據,也可以這樣做
tsset id year
gen pergdp=gdp/l.gdp
這里直接用的時間序列的「lag」命令,gen lag1gdp=l.gdp