題:
進行大規模統計分析需要哪些技能?
bit-question
2011-03-03 01:05:46 UTC
view on stackexchange narkive permalink

許多統計工作要求獲得有關大規模數據的經驗。處理大型數據集需要哪些統計和計算技能。例如,在給定包含一千萬個樣本的數據集的情況下,如何構建回歸模型?

同樣有趣的是有關使用大量數據進行假設檢驗的相關討論:http://stats.stackexchange.com/q/2516/919
[這裡](http://www.quora.com/How-do-I-become-a-data-scientist)的一些很好的指針。
如果您總結自己認為最好的方法,將會很有幫助。
五 答案:
whuber
2011-03-07 04:16:42 UTC
view on stackexchange narkive permalink

好的答案已經出現。因此,我將根據個人經驗分享一些想法:根據需要使相關想法適應您的情況。

對於背景和背景-您可以考慮任何個人這種信息可能會產生偏見-我的大部分工作一直在幫助人們根據相對較小的數據集做出重要決策。它們之所以很小,是因為收集數據的成本可能很高(例如,地下水監測井的第一個樣本需要1萬美元,而分析異常化學物質則需要數千美元)。我習慣於從可用數據中獲取盡可能多的信息,將其探索至死,並在必要時發明新的方法來對其進行分析。但是,在過去的幾年中,我一直從事一些相當大的數據庫的工作,例如在普查數據塊級別(850萬條記錄,300個字段)覆蓋整個美國的社會經濟和工程數據之一,以及各種大型GIS數據庫(

擁有非常龐大的數據集,人們的整個方法和思維方式都會發生變化。現在有太多數據需要分析。一些直接的(以及回顧的)明顯的影響(著重於回歸建模)包括

  • 您認為進行的任何分析都會花費大量的時間和計算量。您將需要開發二次採樣方法並處理部分數據集,以便在使用整個數據集進行計算時可以規劃工作流程。 (子採樣可能會很複雜,因為您需要與整個數據集一樣豐富的代表性數據子集。並且不要忘記使用保留的數據對模型進行交叉驗證。)

    • 因此,您將花更多時間記錄所做的事情,並對所有內容進行腳本編寫(以便可以重複)。

    • 正如@dsimcha剛剛指出的那樣,良好的編程技巧非常有用。實際上,您不需要太多的編程環境經驗,但是您需要編程的意願,能夠識別編程時間的能力(實際上幾乎在每個步驟中都將有所幫助)以及對以下方面的基本要素的充分理解計算機科學,例如適當數據結構的設計以及如何分析算法的計算複雜性。這對於提前了解 計劃要編寫的代碼是否可以擴展到整個數據集很有用。

    • 某些數據集很大,因為它們具有很多變量(成千上萬,每個都不同)。 期望花費大量時間來匯總和理解數據密碼本數據字典以及其他形式的元數據變得至關重要。

  • 您的大部分時間都花在只是移動數據並重新格式化它們上。您需要處理大型數據庫的技能,以及匯總和繪製大量數據的技能。 ( Tufte的Small Multiple在這裡脫穎而出。)

  • 某些您喜歡的軟件工具將會失敗。例如,忘記電子表格。許多開放源代碼和學術軟件都不能完全處理大型數據集:處理將永遠花費,否則軟件將崩潰。期望這一點並確保您有多種方式來完成關鍵任務。

  • 幾乎所有運行的統計測試都將如此強大,以至於幾乎可以肯定確定“重大”效果。 您必須更加關注統計上的重要性 ,而不是重要性。

  • 類似地,模型選擇很麻煩,因為幾乎所有變量和您可能考慮的任何交互作用都將顯得很重要。 您必須更多地關注選擇分析的變量的有意義

  • 信息以識別變量的適當非線性變換。知道怎麼做。

  • 您將有足夠的數據來檢測非線性關係,趨勢變化,不穩定,異方差等。

    >
  • 您將永遠不會完成。有太多數據,您可以永遠研究它們。因此,重要的是要一開始就建立分析目標,並始終牢記在心。

我將以簡短軼事結尾這說明與較小的數據集相比,使用大型數據集的回歸建模之間存在一個意外的差異。在具有人口普查數據的項目結束時,我開發的回歸模型需要在客戶端的計算系統中實現,這意味著在關係數據庫中編寫SQL代碼。這是一個常規步驟,但是數據庫程序員生成的代碼涉及數千行SQL。這幾乎不可能保證它沒有錯誤-儘管我們可以檢測到錯誤(它在測試數據上給出了不同的結果),但是找到它們是另一回事。 (您所需要的只是一個係數中的印刷錯誤...)解決方案的一部分是編寫一個程序,該程序直接從模型估計中生成SQL命令。這確保了從統計信息包中出來的正是RDBMS中輸入的內容。另外,編寫此腳本花費了幾個小時,從而替代了可能需要數週的SQL編碼和測試。這只是統計學家能夠傳達其結果的意義的一小部分。

+1,我將分享這個精彩的回复(並將其打印為附近的^ _ ^)
+1,這是我肯定會在很多年後復述學生的內容。
軼事使我想起了我必須將模型從Eviews轉移到R的時候。原始模型是在Eviews中完成的,結果大約有20個方程。我必須在具有交互界面的網頁上顯示結果。由於該模型尚在開發中,因此我編寫了一個將Eviews輸出轉換為R代碼的代碼,其目的與在Eviews和R中都使用確切的模型相同。R工作得非常好,我什至最終使用了差異化的翻譯後代碼用於計算分析梯度。
您能否詳細說明統計重要性/效應大小與統計顯著性?
@sugar.panda請先在本網站上搜索這些術語,因為它們經常被討論。如果找不到您想要的東西,請隨時提出一個新問題。
如果在評論中證明不贊成投票,通常將其視為更具建設性的(如果不是簡單的禮貌),除非有明顯的理由不這樣做(例如,單行含糊的答复,對更新錯誤答案的請求沒有答复,攻擊行為)。當提出有效的論據時,這有助於提高響應的質量。在這種特殊情況下,我認為沒有理由投票贊成!
自動化+1可以減少錯誤:“ _編寫一個直接從模型estimates_生成SQL命令的程序_”。
rolando2
2011-03-03 01:27:51 UTC
view on stackexchange narkive permalink

您的問題應該給出一些好的答案。這是一些起點。

  1. 一種能夠在精度和對計算能力的需求之間進行權衡的功能。

  2. 具有數據挖掘技術的設施,可用作進行回歸之前的初步篩選工具。例如,chaid,car或神經網絡。

  3. 對統計意義和實際意義之間的關係有深刻的理解。各種各樣的變量選擇方法。

  4. 交叉驗證的本能。

  5. ol>
我還將#4和#1結合起來:了解如何交叉驗證而又不浪費您的計算資源很重要。
您能解釋一下第二點嗎?您將如何使用CHAID / CART /神經網絡作為回歸的篩選工具?
@raegtin-我最熟悉CHAID,它帶有所謂的“交互”,通常是偽裝成交互的主要效果,因為這是該過程“讓它們進入”的唯一方法。 (在CHAID中,只能這樣識別出一種主要效果,因此所有其他主要效果都被壓縮到“交互”單元中。)但是CHAID的優點是能夠檢查許多交互。因此,一旦確定了一些有前途的組件,就可以將它們的所有低階成分合併到回歸或方差分析中,並可以測試哪些組件真正有用。
+1我對使用數據挖掘(尤其是CHAID)來探索潛在影響的可能性深感興趣。看到一個應用程序會很有趣,例如http://stats.stackexchange.com/q/10363/919上的人工(小型)數據集
dsimcha
2011-03-07 03:38:25 UTC
view on stackexchange narkive permalink

必須具備良好的編程技能。您需要能夠編寫能夠處理大量數據而不會阻塞的高效代碼,並且可能能夠並行處理所述代碼,以使其在合理的時間內運行。

編碼是必須的,但也要知道如何在不違背它的情況下使用操作系統。您必須了解,有時拆分工作會帶來額外的成本,因為訪問磁盤和網絡會帶來額外的成本。您將了解阻止和等待以及進行進程間通信的不同方式。我已經看到了很棒的科學代碼,這些代碼大部分時間都在等待某些系統調用完成。與您的系統的sysadmin成為朋友,通過為他們提供咖啡,您可以在優化系統方面獲得很多幫助;)
有時最好編寫“效率低下的代碼”,這將有助於創建可預見可能會提出的其他問題的數據結構。
@Ralph: +1,我絕對同意,並親自學習了這一點。我並不是要申請,無論權衡如何,都應該始終編寫高效的代碼,而只是應該知道如何做。
highBandWidth
2011-03-03 08:00:04 UTC
view on stackexchange narkive permalink
  1. Map-reduce框架中構圖該問題。
  2. 該問題的 Engineering 端,例如,執行了多少操作使用較低精度的參數或基於通用性以及存儲和計算成本的模型選擇會造成傷害。
  3. ol>
您能否為您提到的Map-reduce框架提供相關鏈接?
@sugar.panda,添加了Wiki鏈接!
+1代表較低的精度,儘管這遠不是令人著迷的特權。精度越低,我們做出錯誤決定的可能性就越大。這與I / II型錯誤密切相關,涉及多個學科,但主要與統計,決策科學和經濟學有關。應當提前考慮效用功能,並在思想過程的一部分中加以考慮,以識別合適的方法。
Ralph Winters
2011-03-07 02:31:51 UTC
view on stackexchange narkive permalink

我還要補充一點,大規模數據還引入了潛在的“不良數據”問題。不僅丟失數據,而且接觸過數據的每個系統部件都會引入數據錯誤和不一致的定義。因此,除了統計技能之外,您還需要成為專家級的數據清理人員,除非其他人正在為您這樣做。

-拉爾夫·溫特斯

這些都是好點。異常值和其他數據問題困擾* any *數據集,無論大小。以我的經驗,在大型數據集中,它們實際上更易於識別和處理,因為您有能力將它們與大量數據區分開,尤其是如果使用可靠的方法,則它們不太可能影響結果。順便說一句,您在所有分析中都*總是*進行“數據清理”。這不是一個孤立的問題,而是要交給專家一勞永逸地處理。 *離群值只是特定模型中的離群值。*
查看[google優化](http://code.google.com/p/google-refine/)作為一種半自動化的數據清除器,它有助於避免手工編輯的陷阱。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...