做研究之前如何用Stata進行數據清理?

2021-02-20 量化研究方法

一、數據的邏輯清理

在數據清理時,我們會根據常識及專業知識對連續變量間的關係進行核對,以識別可能的錯誤。如調查對象的出生日期應小於或等於調查日期(常識),婦女的生育年齡肯定不能小於月經初潮年齡(專業知識)。還有一些具有經濟意義的數據,如個人年消費總額肯定不能為負,數據樣本中我國省級行政單位數目肯定不能超過34等等。這些需要學術研究者認真研究和比對,可以採用list命令列舉的方式,或者scatter命令看散點圖等簡單處理後運用專業知識或者常識來判別。

 

二、缺失值的識別與處理

對於調查數據來說,缺失值是司空見慣的。缺失值的產生的原因多種多樣,主要分為機械原因和人為原因。機械原因是由於機械原因導致的數據收集或保存的失敗造成的數據缺失,比如數據存儲的失敗,存儲器損壞,機械故障導致某段時間數據未能收集(對於定時數據採集而言)。人為原因是由於人的主觀失誤、歷史局限或有意隱瞞造成的數據缺失,比如,在市場調查中被訪人拒絕透露相關問題的答案,或者回答的問題是無效的,數據錄入人員失誤漏錄了數據每種缺失都會對統計分析產生不同的影響,數據清理時需要對每種缺失值採用不同的處理方式。那麼,Stata中有哪些命令可以快速查看數據的缺失值呢?這裡為大家簡單介紹幾個與查看缺失值相關的命令。

命令1:misstable

命令misstable可以快速查看變量的缺失值,它會以表格的形式呈現數據缺失的樣本量,該命令的語法結構為:

 misstable summarize[varlist][if][in][, summarize_options]

運行命令misstable和選項all可以直接輸出指定變量串中所有變量的缺失情況。如果變量本身沒有缺失值,表格結果顯示為空;由於misstable只能識別數值型變量的缺失值,無法識別字符型變量的缺失值,所以,對於字符型變量來說,表格結果顯示為「(string variable)」。

命令2:nmissing

nmissing是第三方用戶寫的命令,該命令的語法結構為:

nmissing [varlist] [if exp] [in range] [, min(#) obs piasm trim]

運行命令nmissing不僅可以給出指定變量串中的數值型變量的缺失值的個數,還可以給出字符型變量的缺失值的個數。選項min(#)可以顯示缺失值個數超過#的變量及其缺失值情況。

命令3:mdesc

命令mdesc也是一個查看變量缺失情況的第三方命令,它的語法結構為:

mdescvarlist [if] [in] [, abbreviate(#) any all none]

該命令可以識別數值型變量和字符型變量,它不僅可以查看變量缺失值的樣本量,還可以看其分布。

 

對於數據中的異常值,我們通常的處理方式有以下幾種:

方法一:直接刪除----適合缺失值數量較小,並且是隨機出現的,刪除它們對整體數據影響不大的情況。

方法二:使用一個全局常量填充---譬如將缺失值用「Unknown」等填充,但是效果不一定好,因為算法可能會把它識別為一個新的類別,一般很少用。

方法三:使用均值或中位數代替----優點:不會減少樣本信息,處理簡單。缺點:當缺失數據不是隨機數據時會產生偏差.對於正常分布的數據可以使用均值代替,如果數據是傾斜的,使用中位數可能更好。

方法四:插補法

隨機插補法----從總體中隨機抽取某個樣本代替缺失樣本

多重插補法----通過變量之間的關係對缺失數據進行預測,利用蒙特卡洛方法生成多個完整的數據集,在對這些數據集進行分析,最後對分析結果進行匯總處理

熱平臺插補----指在非缺失數據集中找到一個與缺失值所在樣本相似的樣本(匹配樣本),利用其中的觀測值對缺失值進行插補。

這樣做的優點是:簡單易行,準去率較高。缺點:變量數量較多時,通常很難找到與需要插補樣本完全相同的樣本。但我們可以按照某些變量將數據分層,在層中對缺失值實用均值插補

拉格朗日差值法和牛頓插值法(簡單高效,數值分析裡的內容)

方法五:建模法可以用回歸、使用貝葉斯形式化方法的基於推理的工具或決策樹歸納確定。例如,利用數據集中其他數據的屬性,可以構造一棵判定樹,來預測缺失值的值。

 

以上方法各有優缺點,具體情況要根據實際數據分分布情況、傾斜程度、缺失值所佔比例等等來選擇方法。一般而言,建模法是比較常用的方法,它根據已有的值來預測缺失值,準確率更高

 

三、異常值的識別與處理

異常值(outlier)是指一組測定值中與平均值的偏差超過兩倍標準差的測定值,與平均值的偏差超過三倍標準差的測定值,稱為高度異常的異常值。通常面對樣本時需要做整體數據觀察,以確認樣本數量、均值、極值、方差、標準差以及數據範圍等。其中的極值很可能是異常值,此時如何處理異常值會直接影響數據結果。那麼我們在Stata中應該如何識別異常值呢?、

方法一:簡單的統計分析

拿到數據後可以對數據進行一個簡單的描述性統計分析,譬如最大最小值可以用來判斷這個變量的取值是否超過了合理的範圍,如客戶的年齡為-20歲或200歲,顯然是不合常理的,為異常值。這種方法我們可以在Stata中summarize命令來實現。summarize命令用來計算及展示一組單變量的概要統計,若後面不指定變量,則計算當前數據集中所有變量的概要統計。若覺得某個變量的極值不符合常識,可選擇detail選項,則顯示變量的額外統計量,包括skewness、kurtosis、4個最小值、4個最大值,以及各種百分比。這就很容易以查看極值找到異常值。

方法二:簡單畫圖

我們也可以在Stata中採用scatter命令,通過畫散點圖的方法,直接觀察是否存在異常值。

方法三:箱形圖

相關焦點

  • Stata計量回歸之前進行數據清理的步驟
    數據清理就把「髒」的「清理掉」,指發現並糾正數據文件中可識別的錯誤的最後一道程序,包括檢查數據一致性,處理無效值和缺失值等。數據清理是對數據進行重新審查和校驗的過程,目的在於刪除重複信息、糾正存在的錯誤,並提供數據一致性,然後進行必要的權重調整等,以滿足後續的計量回歸的需要。
  • 應用Stata在計量回歸之前,你真的會進行數據清理麼?
    數據清理就是把「髒」的「清理掉」,指發現並糾正數據文件中可識別的錯誤的最後一道程序,包括檢查數據一致性,處理無效值和缺失值等。數據清理是對數據進行重新審查和校驗的過程,目的在於刪除重複信息、糾正存在的錯誤,並提供數據一致性,然後進行必要的權重調整等,以滿足後續的計量回歸的需要。目前國內各大研究機構釋放出來的數據很多,如CHNS、CGSS、CFPS、CHFS等等,那麼數據清理需要進行哪些步驟呢?
  • 統計計量丨應用Stata在計量回歸之前,進行數據清理的步驟
    如果在數據分析前,沒有把這些問題清理好,很有可能導致後面數據分析不出真實的結果。數據清理就把「髒」的「清理掉」,指發現並糾正數據文件中可識別的錯誤的最後一道程序,包括檢查數據一致性,處理無效值和缺失值等。數據清理是對數據進行重新審查和校驗的過程,目的在於刪除重複信息、糾正存在的錯誤,並提供數據一致性,然後進行必要的權重調整等,以滿足後續的計量回歸的需要。
  • 數據清理思路及Stata命令
    如果在數據分析前,沒有把這些問題清理好,很有可能導致後面數據分析不出真實的結果。數據清理就是把「髒」的「清理掉」,指發現並糾正數據文件中可識別的錯誤的最後一道程序,包括檢查數據一致性,處理無效值和缺失值等。數據清理是對數據進行重新審查和校驗的過程,目的在於刪除重複信息、糾正存在的錯誤,並提供數據一致性,然後進行必要的權重調整等,以滿足後續的計量回歸的需要。
  • 零基礎的同學如何用stata做一元線性回歸模型?
    stata軟體越來越受研究生的喜歡,很多研究生在做統計研究、學術分析的時候,也多選用此軟體。網上有關stata的教程有很多,但對於沒有基礎的同學來說,學起來稍微就有些吃力了。那麼,零基礎的同學應該如何學習呢?如何用stata做出滿意的一元線性回歸模型呢 ?
  • 零基礎的同學如何用stata做多元線性回歸模型?
    上一期,我們分享了如何用stata做一元線性回歸模型,不知道同學們學的怎麼樣呢?有沒有自己動手操作一遍呢?這一期:我們將學習如何用stata做多元線性回歸模型!這些是小王(邀請者)最近學習計量時的一些心得和體會,希望能與大家一起分享。
  • 零基礎的同學如何用Stata做logistic回歸?
    同學們在做統計研究時,時常聽到身邊的朋友會提及一個詞:logistic回歸。聽的次數久了,同學們多半會思考:什麼是logistic回歸?如何在Stata中做logistic回歸呢?做logistic回歸時應注意什麼?在做logistic回歸之前,一定要對數據變量進行檢查,要滿足相應的條件。第一個條件:Y是二分類的分類變量。第二個條件:Y的發生率要要小於15%。
  • 【Stata教程】如何用Stata分析面板數據
    在計量研究中,用於實證分析的數據主要有時間序列數據、橫截面數據以及面板數據。
  • 零基礎的同學如何用Stata做廣義估計模型(GEE)?
    在縱向數據中如何進行統計分析?如何得出一個正確的估計值?什麼是廣義估計模型?廣義估計方程的打開方式又是怎樣的?在Stata中如何選取合適的變量、合適的代碼進而做出廣義估計模型(GEE)?今天,我們將學習如何在stata軟體中進行廣義估計模型(GEE)的操作,希望大家都能有所收穫。
  • stata編程初步+三種數據類型​
    具有「橫截面」和「時間序列」兩個維度,當這類數據按兩個維度進行排列時,數據都排在一個平面上,與排在一條線上的一維數據有著明顯的不同,整個表格像是一個面板,所以稱為面板數據(Panel Data)。它是截面上個體在不同時間點的重複測量數據。
  • 零基礎學Stata 數據分析再不怕
    自從Hamilton(1990)出版Statistics with Stata後,一系列將計量理論與軟體操作結合起來的書籍開始相繼面世,而在此之前,人們似乎都認為軟體操作是件非常簡單的事情
  • Python與Stata在數據處理區別
    來源:Pandas中文網本節旨在演示如何在 pandas 中做各種類似Stata的操作。
  • NBA與Stata
    今天,小編通過nba2stata這個命令,拿到NBA球員的賽場數據,來感受球隊領袖那殺手般的意志。nba2stata是外部命令,需要使用search nba2stata查找並安裝。nba2stata共有四個語法結構,分別是:(1)抓取球員比賽數據。
  • 【stata系列】——事件研究法
    有關以上內容的其他解釋,可根據以下參考連結自行查閱:1-B站學習視頻:手把手教你事件研究法(eventstudy2)https://www.bilibili.com/video/BV1dT4y1g7u5?
  • 如何利用stata進行匹配操作(以1:1匹配為例)
    大概是10個行業利用四個變量指標按照1:1進行配對。這在流行病學中處理較大數據時候配對(case-controlstudy,retrospective nested case-control study,某些prospective study應該也是可以的吧,不過我們應該用的比較少~。
  • 用Stata搞實證之面板模型入門
    其中下方命令窗口可以直接輸入我們要做的指令,左邊為歷史窗口可以看到我們已經進行過的處理,而變量窗口則可以顯示我們輸入數據後產生的變量由於城市變量是字符數據,因此在處理之前需要採用encode命令將其改為數值型數據
  • 【學習記·第38期】stata常見問題及解決辦法
    如何輸出STATA的圖,和保存?先輸入數據(1)Twoway connected 變量1 變量2 //劃出折線圖   (2)twoway scatter 變量1 變量2 //劃出散點圖2. 怎樣在stata中做HAUSMAN檢驗?
  • Stata語言中的常用函數及其用法解釋, 在附上42篇Stata相關學習資料
    高級計量經濟學及Stata應用"和"Stata十八講"配套數據,13.數據管理的Stata程序功夫秘籍,14.非線性面板模型中內生性解決方案以及Stata命令,15.把動態面板命令講清楚了,對Stata的ado詳盡解,16.半參數估計思想和Stata操作示例,17.Stata最有用的points都在這裡,無可替代的材料,18.PSM傾向匹配Stata操作詳細步驟和代碼,乾貨十足,19.隨機前沿分析和包絡數據分析
  • 如何讓Stata按照四分位數間距分組某變量「技巧」
    如何讓Stata按照四分位數間距分組某變量【技巧】做數據分析的時候,有時我們需要把變量進行等分,如按中位數進行二等分,或根據四分位數進行四等分。我們一起看看通過stata如何實現四等分。首先,安裝astile命令:ssc install astileastile的完整命令為:astile newvar=exp [if] [in] [, nquantils(#) qc(string) by(varlist)]其中,nquantils(#)表示將變量取值由小到大分為#個組,如nq(2)表示按中位數進行二等分
  • Stata:機器學習分類器大全
    而在學術研究中,諸多研究都離不開分類的影子:識別經濟周期,判斷未來經濟形勢;研究上市公司財務信息,對其財務困境或危機進行預警……此外,計算機視覺、垃圾郵件分類、醫學診斷等也與分類問題密切相關。一般地,對於線性可分的數據,存在無窮多個劃分超平面可以將兩類數據正確地分開,那麼如何獲得一個唯一的最優劃分超平面呢?