almost 4 years ago

最近對資料分析 有新的領悟
我把資料分析分成兩大類型 三種議題
第一大類 動態資料分析
第二大類 靜態資料分析
其中靜態資料分析又包含兩種情況:

  1. 低規模高資訊量 2.高規模低資訊量

(1) 第一種議題: 動態資料分析
動態資料與靜態資料的最大差異在於
動態資料分析的情況時間非常非常有限
誰先搶到資料 就算分析方法很爛 也具有絕對的優勢
這在許多商業問題 軍事議題 科學研究 都會碰到
科學上有些研究 只要哪個實驗室先作出某個樣本
就直接可以宣告勝利了
商業上更常看到 只要掌握下一季某些企業的投資策略的資訊
就能夠狠狠吃倒對方一次

另外兩種議題都是靜態資料分析
所謂靜態資料 就表示時間並不急迫
所以我們有相對充裕時間可以慢慢分析
靜態資料分析是統計學主要在研究的對象

隨著資料的規模(資料複雜度or維度還有樣本數)與單位資訊含量
我們可以粗略分成四種:

  1. 高規模高資訊
  2. 低規模高資訊
  3. 高規模低資訊
  4. 低規模低資訊

1 的情況太過美好 也不太可能存在於真實世裡
所以鮮少被討論
4 的情況幾乎沒辦法分析 又少資料 又少資訊 做不出什麼推論

所以2. 3.兩種情況分別對應到靜態資料分析的第二與第三種議題

(2) 第二種議題: 低規模高資訊靜態資料分析
低規模表示 資料的維度都是少量的 並且實際樣本數通常不大
單位資訊含量高表示誤差小 或至少非常符合理想狀態(e.g.獨立)
因此 雖然樣本數不大 但因為符合理想狀態 所以可以做很好的推論
這是古典統計學常常碰到的問題
而這方面的問題已經被大量的研究

(3) 第三種議題: 高規模低資訊靜態資料分析
這是當前統計學還有機械學習 data mining常常在研究的
雖然模型很複雜 並且資訊量低
但同時樣本數非常巨大 所以我們依舊可以得到一些成果

 
almost 4 years ago

今天跟系上老外打保齡球時 我順便跟講我怎麼理解sparsity的
我跟他們說 我第一次打保齡球只得23分(一共投了10局)
因此 超過8成的投擲都拿到0分
只有寥寥無幾的幾次有成功拿到分數 這就是所謂的sparsity

sparsity(稀少性) 是用在統計分析時 對於高維度資料的基本假設
簡而言之 我們可能有幾萬個潛在的相關變數 但卻只有幾百個資料點
sparsity表示說 這幾萬個變數可能只有少數幾十個(甚至個位數個)
真的和我們關注的問題有關係

舉例來說: 基因與過動症
我們量測到的基因通常有上萬個 但我們的病患只有幾百個人
而真正和過動症有關的基因 可能不到10個

學過基礎線性代數的人都知道 變數p如果比方程式n還要多的話
基本上是無解的
但sparsity的條件是 一堆變數其實是完全沒關係的
只要真正有關係的變數數量比n還小得多 我們依舊可以做到統計分析
所以統計上有許多方法 可以得到這種sparse的解
一個經典的就是LASSO方法
想知道詳情的人可以自己google: LASSO(statistics)

note: 實際上sparsity的假設可以更鬆 我們允許這幾萬個變數都和我們關注的變量Y有關係 但絕大多數的關係非常非常之微弱 只有幾個訊號(關係)比較強

 
almost 4 years ago

p值可以說是統計學的重要議題 但p值卻是非常不好理解的東西

p值是一種"無單位"的"通用"指標
用來衡量某個假說(null hypothesis)的顯著性
而p值的"比較對象" 是顯著水準(significance level)

所以p值只跟1. null hypothesis 2. test statistics(測試統計量)
這兩個量有關係
而我們的決策是:拒絕null hypothesis 當p值比給定的顯著水準還要小

上面講起來很複雜 我們先從p值的用途談起
為什麼我們會需要p值?
p質跟所謂的假設檢定相當有關係

假設檢定就是要討論一個null hypothesis 對比上 一個alternative hypothesis
我們是否有充分證據 在給定的顯著水準alpha(significance level, 通常用alpha表示)之下去認定null hypothesis是不合理的
證據來自資料
而我們的決策是根據一個test statistics來進行
這個test statistics完全是透過資料所算出來的數值
當test statistics落在拒絕區rejection regions時(由test statistics的分配 還有顯著水準alpha 所建立出來)
我們就拒絕null hypothesis

舉幾個例子來說
Ex.1. 某甲說狗的平均壽命是10年
在這個問題之下 null hypothesis就是
"狗的平均壽命=10年"
一個常見的test statistics就是隨機抽樣狗狗
然後拿狗狗樣本的[平均壽命(樣本平均)-10]年 作為test statistics

Ex.2. 某乙說 上PTT的鄉民的出國的比率只有10%
在這個問題之下 null hypothesis就是
"PTT的鄉民的出國比率=10%"
這個問題之下 一個test statistics就是對鄉民抽樣調查
如果出國的人 就給1 沒出國的人給0
這樣平均下來的[樣本平均值-0.1] 就是一個test statistics

Ex.3. 某丙說 2013年台大畢業生的平均起薪是 60k
相對應的null hypothesis就是
"2013年台大畢業生的平均起薪=60k"
而test statistics 就是隨機抽樣的台大畢業生的[平均起薪-60k]

這三個例子裡 我們看到三個不同的null hypothesis
對應到三個不同test statistics

不同的test statistics也給出完全不同的rejection regions
並且單位差異非常之大
Ex.1.的單位是"年" 並且值大概都是10左右的數值
Ex.2.的單位是% 值都落在 0%~100%之間
Ex.3.的單位是新台幣 值通常是落在10k這個數量級

當我們今天收集完資料 抽樣跑出結果
Ex.1. 我們得到狗狗平均壽命9年 樣本標準差1年
Ex.2. 我們得到鄉民出國率20% 針對100個樣本
Ex.3. 我們得到平均起薪50k 樣本標準差5k

不同的顯著水準alpha與不同的examples
會給出不同的答案(拒絕/不拒絕null)
並且光是靠著test statistics 實在很難讓人一眼看出null hypothesis在給定的alpha之下是否合理

此時p值的用途就出現了
我們可以直接從資料裡得出不同的p值
Ex.1. p_1 = 0.32
Ex.2. p_2 = 0.0005
Ex.3. p_3 = 0.023

仔細看 這些p值完全"沒有單位"
並且給定不同的顯著水準 我們立馬就可以知道是否要拒絕
e.g. 顯著水準=0.05 則2,3要拒絕; 顯著水準=0.01 則只有2要拒絕
我們也完全不需要知道那個rejection regions在不同顯著水準之下長怎樣

只要有了p值 資料對於null hypothesis的支持度馬上就知道
所以 p值可以看成一種科學上做假說檢定非常好用的通用單位
並且我們的決策 完全只需要比較p還有alpha之間的關係就好

p.s. p值不僅跟null hypothesis有關
也跟test statistics有關
同樣的null hypothesis 給定同樣的資料 我們可以用不同的test statistics去處理 在這種情況 不同的test statistics會有不同的p值

p.s.2. 因為p值的比較對象是顯著水準
因此嚴格的p值定義裡會看到顯著水準的影子:
p(X) = inf{alpha: T(X) in R_alpha}
X是我們的資料(樣本), T是所謂的test statistics, R_alpha是拒絕區在給定alpha之下
這個式子可以詮釋成 透過樣本計算test statistics T(X)
然後我們慢慢地改變alpha 當alpha很小時 T(X)不會落在拒絕區裡面
我們慢慢增加alpha 當到某個alpha時 T(X)會開始總是落在拒絕區裡面
這個讓T(X)從"不在裡面" 轉變到 "在裡面"的那個alpha
就是所謂的p值

 
almost 4 years ago

最近被問到不少次我研究的領域
"Non-parametric Statistics"(無母數統計學)
今天來跟大家簡單介紹我研究的領域
一個經典的non-parametric statistics就是histogram (直方圖)
我們都知道當你收集到一堆資料時 histogram是個呈現密度的快速方法(至少可以讓你對整個分配有個概念)

但histogram在應用上有個經典的議題: 如何選擇寬度(bin size)
寬度如果太寬 那根本呈現不了密度
寬度如果太窄 那每格可能都才1~2個點 這樣也呈現不了密度
寬度選擇其實統計上已經有許多文獻探討
也是為什麼大多數軟體會能夠幫你選擇一個適當的寬度的原因

-----給有學過一些統計/ML的人:
這背後理論的基礎 跟統計學上的bias-variance tradeoff有關

也和所謂 overfitting v.s. underfitting有關係

基本上 non-parametric的原理就是 我不做參數化(parametrized)的模型
什麼是參數化模型?

舉例來說 我們要估計密度 (density estimation)
我們常常會假設密度是常態分配
然後估計平均值還有標準差
常態分配就是一個參數化模型 因為這個分配被兩個參數所決定--平均值 還有標準差

另一個例子是迴歸分析 (regession)
我們常常會假設線性模型 認為Y和X的關係是 Y= aX+b+誤差
這樣 我們就用兩個參數 a,b 描述了Y和X之間的關係

再舉一個例子:分類問題 (classification)
假設資料來自兩個不同的族群 我們用0和1表示兩個不同族群
一個常見參數化的分析方法 就是假設來自0這個族群的資料 是一個常態分配 平均值u0 標準差s0
而來自1的族群 則是另一個常態分配 平均值u1 標準差s1
我們用已知的資料去估計這四個參數 u0,u1,s0,s1 並建立所謂的decision boundary
給定一個點 看看這個點在boundary的哪一端 就分到哪一個族群

上述三個問題 都作了參數化的假設

non-parametric的方法 就是不作參數化假設 但依然要做到資料分析
對於密度估計 我們看到histogram是個常見方法
另外常見的方法還有所謂的kernel density estimation:
給定一個點x 我去看附近的點數量多寡
如果附近很多點 我就增加x這個點的密度估計
附近很少點 我就降低x這個點的密度估計
所謂的kernel function 就是決定你增加與降低密度的程度

對於迴歸分析 一個經典方法就是所謂的local regression
回歸的問題基本上就是要找出Y和x之間的關係
所以對任何一個給定的x 我去看附近幾個點的Y值
對附近點的Y值用加權平均 越靠近x的點
我給比較多的權重 越遠離x的點 我降低權重
這樣我就能夠不做到參數化模型 一樣也能做回歸分析

note: 這個加權方法 其實也是一個kernel function

最後對於分類問題
很常見的方法就是kNN (k-nearest neighbor)
簡單來說 就是對一個點x 我看附近k個點主要是哪個族群
我就把x分類到那個族群

上述這幾個方法 被稱為smoothing non-parametric method
(by我老闆Larry Wasserman)
因為我們都是透過一個點附近其他點的資訊 來作為推論
很類似影像資料上所謂的smoothing


最後我想提的是另一大類的non-parametric statistics
我和我老闆稱為 Classical non-parametric statistics
因為這類型的方法很早被提出來 並且和我們剛剛提過的那些方法很不同

Classical non-parametric 關注的是所謂的統計檢定問題
舉我們分類的例子來說
今天你有兩筆資料 你不曉得這兩筆資料是否來自同樣的分配
(e.g. 根本是同一筆資料 但意外被分成兩筆)
而你坐直方圖 發現這兩筆資料的分配 非常畸形!! 根本不像我們常見的分配
一個經典的non-parametric方法就是 你把這兩筆資料先混在一起
然後坐排序 從最小的值排到最大的值
如果很明顯發現 rank小的集中在某一筆資料
那就很明顯這兩組資料是來自不同分配
因為同樣分配的話 應該rank和兩筆資料的標簽(是第1筆資料還是第2筆資料)沒有關係才對
或你發現rank和資料標籤有明顯關係 例如某一段通通都是第1筆資料
那這樣也很明顯這兩筆資料是不同分配的
上述的方法 稱為Wilcoxon rank-sum test

利用rank的方法還有許多 這是早期non-parametric常常研究的課題
許多數理統計的課程 還會提到這些方法
只是當前研究比較少用 但在資料分析上這些方法還是很有用

最後我想說的是
non-parametric statistics在近代研究越來越常見
像我目前在做一個關於星系分配(galaxy distribution)的問題
就很難用parametric model
相對的 密度估計就變成相當好用

而目前還有許多未解的non-parametric的問題
歡迎大家有空加入這個大家庭來作研究

 
almost 4 years ago

今天學校來了明星等級的教授Michael I. Jordan來演講
他講的真的很精彩 我特別喜歡第二部分關於Bootstrap的地方

Bootstrap許多人可能都有聽過 一言以蔽之
Bootstrap: a statistical data simulation

所謂的Bootstrap 就是我們根據現有的資料
去產生分配與原本相似的資料 用以進行統計推論(特別是信賴區間與誤差估計)

舉例來說 給你X_1,...X_n n個數值
你的估計式是個非常複雜的函數 例如exp(X_1*X_2*...X_n)
在這種狀況下 你可以得到一個估計值
但你沒辦法計算估計的誤差
(因為這不是常見的樣本平均數估計之類的問題 你沒有辦法計算樣本標準差等等)

但你還是想進行統計推論 該如何是好呢?

--

想像一個狀況 假如你有台神奇機器 可以重新這n筆資料
並且產生的分配是根據"真正的資料分配"
那你就可以產生好幾"組"額外的樣本 每組樣本都有n筆資料

這樣你第一組樣本可以得到第一個估計值
第二組樣本可以得到第二個估計值
...
你有m組樣本 就有m組估計值

因此 這"m"個估計值的分配 就是真正你那個複雜估計式的分配

--

在現實生活中 我們沒有這樣的機器
因此我們只能靠著simulation的方式 期望這套simulation和真正的分配很相近

Bootstrap的基本方法就是
我們根據現有的n個數值 重新抽樣出另外的n個數值
但這個抽樣的方式是所謂的"sample with replacement"
也就是 我們每個新的數值彼此間獨立
而抽到各個原本n個數值的機會都是相等的(1/n)

因此 我們可能會同樣的數值抽到很多次 但這在一些情況下不礙事

這看起來有點神奇的抽樣方法
就是所謂的Bootstrap(或稱 Non-parametric Bootstrap)
意外的在許多情況下擁有良好的漸進性質

從累積分配函數(Cumulated distribution function, CDF)的觀點來看
原本的樣本是來自某個未知的 F
Bootstrap的樣本則是來自樣本的CDF: F_n
統計上可以證明F_n會以非常強的方式去收斂到F 當樣本數夠大時

因此 Bootstrap可以看成一種統計的simulation
而這種simulation的分配函數會以某種方式收斂到真實的分配函數

Bootstrap還有許多可愛的兄弟
例如: multiplier bootstrap, smoothed bootstrap, wild bootstrap...
基本原理都是 想辦法製造一筆資料 其分配會和原本的分配相當類似

但Bootstrap並不一定絕對會收斂
在一些情況下這套方法不會收斂
探討Bootstrap收斂的理論 是所謂的empirical process
這部分數學頗為艱深 有興趣者可以去查查相關資料
關鍵字: Donsker's class, empirical process