Google 到底想說什麼?

December 9, 2010

Advertisements

一門英烈

December 9, 2010

鴉片有益論
孔子和平獎
袓孫皆俊傑
磕頭相輝映

BBC 新聞部表示

November 25, 2010

如此配圖, 這立場實在是不言可喻啊

R 打敗 Python?

November 14, 2010

對統計專業又天天說R的人來說, 這篇自high必備文當然是一定要的了。

至於會說不止一種統計計算語言的人,另一件事可能會讓他們更驚訝, Google 大神欽定的 AppEngine 兩種程式語言之一的 Python 竟然上不了全世界最臭屁的新約克時間, 一篇報導也沒有。

這算是新約克的記者程度太差還是, 嗯, 還是 R 己經(至少在統計計算上)把 Python完全比下去了?

zonble那看到的

約193公分

約70公斤

討戰文

June 29, 2010

如果你已經拿到COPSS, 你就可以這樣討戰:

Objection to Bayesian Statistics

記得, 要先拿到COPSS

(續上篇)

說騙錢是太過份了,正確一點的說法是,”高階”的問題從次要敵人變成了主要敵人,那些黑手問題是編譯器, 甚至是IDE(不是指硬碟介面)的問題。 高階問題都很抽象,都很高深,明明是用英文講的, 聽起來都很像拉丁文, 所以需要更多的腦力(及勞力),讓人力用在刀口上。

如何讓人力用在刀口上?

  1. 搞清楚這(些)問題到底是什麼
  2. 如果不只一個問題,哪些是以手頭有的資源下來作比較好解決的?
  3. 在這些比較好解決的問題中,哪一個問題最重要?哪一個問題最簡單?哪一個問題最急迫?, 以補鍋法的精神: 最急迫->最簡單->最重要
  4. 上述步驟遞迴

上法逐件服用,可保頭路,但,可能升不了官,

這跟 R 成不成功有什麼屁關係?

有的,你不信也沒關係,反正這是我的部落格

一個讓你升不了官的工具,代表這玩意只能補鍋,沒法讓你成為劉羅鍋

要當宰相,一定要能升官, 要升官, 就要面面俱到, R 的問題是,它是一堆補鍋工具的集合體,而且這些工具互相重疊,功能重複,大家花了很大的心力的結果,只是得到”嗯,這個算法, 我可以換句話說為….”. 這真的是人力的大浪費。

(待續)

這算是個老哏了,是開源碼商業模式的冷飯.

在我第一天使用R的時候, OS是, “M的,怎麼這麼難用? 還動不動就crash?”

但就跟我用Linux一樣, 也就這麼用下來了

小時候也用過S-plus, 你知道的, 不便宜又比R慢的那個東西, 系上還只有win32的版本, 如果我S-plus那時再用久一點, 可能今天我就完全不會用R了, 因為胃口完全被弄壞了. 任何你想得到的缺點, S-plus都有(其實R也有, 但, 人家是不收錢還送源碼的, 你能抱怨什麼?), 移情作用會讓你想把S語言抄家滅族的, 幸好S家裡面還有個R.

幸而, 有本格派的老黑客讓Emacs會說S, 於是我們有了ESS, 然後, 剩下的都是GNU和Statistical computing 的現代史了.

作為這個現代史的觀察者, 我嘴癢時不免來嘴砲個幾句. 佛家說, 菩薩畏因, 眾生畏果, 翻譯成西諺便是: 蠢問題得到爛答案, 是報應. 像我這種凡夫自然是參不透這種六度波羅密的. 任何的八卦通通是用問句開頭(我說過, 這是嘴砲, 我不會證明這個的), 我自然也要來個大哉問, 最具質報式無知霸氣的一個大哉問便是:”R, 會不會像現在的Java, 或 C#一樣成功?”

要想出能讓質報記者看得懂且難以曲解的解答是頗為耗費精力的大工程, 為了模擬這種情境, 我決定自問自答自殘(腦)一下.

第一個解答是, 會, 但是阿扁必需被關到死, R才會成功. 這樣質報的記者就可以早點下班了, 明天科技版(有這版嗎? 我說過, 這是嘴砲)的新聞: 統計學家表示, 八年遺毒成為國內計算統計學發展的障礙.

既然質報記者滾了, 我們可以開始說點人話了.

正常一點的答案就像你在標題看到的, 會, 但不是像你(我沒說你是憨人)想的那樣.

今天最成功的, 影響我們每天生活的就是組合語言(Assembly language)了, 這是我們和機器溝通的必要工具 , 這個程式語言如此成功, 使得它似乎也只有程式能聽說讀寫, 不是我們凡夫俗子可以口誦耳聞, 退而求其次, 我們在notepad+裡敲打C語言, 如果你比較資深, 則是在打卡機前”寫”Fortran,還有些人, 可能有用過Pascal, 據說是蘆葦聽得懂的人工語言.

這幾個語言是比較容易理解(相較於組合語言), 於是, 他們成了第二幕的主角, 在記憶體還是奢侈品的年代, 老黑客們掙扎地絞盡腦汁, 除了因為那時沒有可以把iphone 4打爛的果菜汁機外, 最主要還是因為一條1mb的記憶體可以買上好幾台現在才有的果菜汁機, 那時候把心力放在如何讓程式極有效率的運作是程設師們一日中最主要的工作. 那時的工作目標都很單純, 因為那時的工具都還很原始, 理性的老闆們自然不會要求你穿涼鞋去爬聖母峰, 那是程設師苦難卻又甘甜的時代, 因為, 這種苦差事不是人人作得來的, 他們也獲得了相當程度的禮敬.

然後進入了PC時代, 市場的力量讓記憶體價格變得比較親民一點. 飽煖思…發展, 科學工作者開始想讓電腦作他們幾十年前只敢想的事, 比如說計算一個1000×1000矩陣的inverse. 其他要處理多平台的人則想弄個Virtual Machine. 然後有了 MatLab, Java….到了後來, 有了R和Python .

這些東西是用來處理複雜的問題, 滿足複雜的需求的, 從計算慧星的軌道到替無良政客湊統計數字.到了後來, 這些工具自己也演化出了自己的複雜性, 讓程式設計師從茹毛飲血的bype operation苦幹實幹進化到用一堆術語(refactoring, …. etc, 太多了, 請詳參軟體工程的教科書)騙錢的優雅時代.

(待續)

作個很簡單的R實驗:

beta1 <- rnorm(4)
C <- cbind(rexp(30, 3.2), abs(rnorm(30, 3.2, 1.4)), rgamma(30, 3.2, 1.4))
lambda <- abs(cbind(rep(1, 30), C)%*%beta1) + rnorm(30)
y <- rep(NA, 30)
for (j in 1:30) y[j] <- rpois(1, lambda[j])
glm(y~C, family="poisson")

你可以看到結果有多離譜。

這代表其實GLM不是那麼可靠的方法。 只要在mean的部份,有那一點點小小的變動,結果就會整個跑掉,這對想要套套公式生paper的學者們,(尤其是那些非physics, mathematics, engineering的學者們), 這真是一個壞消息:每天用來套的公式原來是那麼的不可靠

可惜東榮公司並沒有投資統計方法論的研究,我只好自己來了,特聘我自己開設巫毒統計學專欄,以饗那些時間多到殺不完的待業,失業或結業人士。

The model: (A, B, C are fixed effects)
\[ y_{ijkh} = \mu + \tau_i + \beta_j + (\tau\beta)_{ij} + \gamma_k + (\tau\gamma)_{ik} + (\beta\gamma)_{jk} + (\tau\beta\gamma)_{ijk} + \] \[ \delta_h + (\tau\delta)_{ih} + (\beta\delta)_{jh} +(\tau\beta\delta)_{ijh} + (\gamma\delta)_{kh} + (\tau\gamma\delta)_{ikh} + (\beta\gamma\delta)_{jkh} + (\tau\beta\gamma\delta)_{ijkh} + \epsilon_{ijkh} \]
where $1\leq i\leq r$, $1\leq j\leq a$, $1\leq k\leq b$ $1\leq h\leq c$.

then(whole plot part):
\[E(MS_R) = \sigma^2 + abc\sigma_\tau^2\]
\[E(MS_A) = \sigma^2 + \sigma_{\tau\beta}^2 + \frac{rbc\sum_{j=1}^b\beta_j^2}{(a-1)}\]
\[E(MS_{RA}) = \sigma^2 + bc\sigma_{\tau\beta}^2\]
(subplot part):
\[E(MS_B) = \sigma^2 + ac\sigma_{\tau\gamma}^2 + \frac{rb\sum_{k=1}^b\gamma_k^2}{b-1}\]
\[E(MS_{RB}) = \sigma^2 + ac\sigma_{\tau\gamma}^2 \]
\[E(MS_{AB}) = \sigma^2 + c\sigma_{\tau\beta\gamma}^2 + \frac{rc\sum_{j=1}^a\sum_{h=1}^c(\beta\gamma)_{jh}^2}{(a-1)(b-1)}\]
\[E(MS_{RAB}) = \sigma^2 + c\sigma_{\tau\beta\gamma}^2\]
(sub-subplot part):

\[E(MS_C) = \sigma^2 + ab\sigma_{\tau\beta}^2 + \frac{rab\sum_{k=1}^c\delta_k^2}{(c-1)}\]
\[E(MS_{RC}) = \sigma^2 + ab\sigma_{\tau\delta}^2\]
\[E(MS_{AC}) = \sigma^2 + b\sigma_{\tau\beta\delta}^2 + \frac{rb\sum_{j=1}^a\sum_{h=1}^c(\beta\delta)_{jh}^2}{(a-1)(c-1)}\]
\[E(MS_{RAC}) = \sigma^2 + b\sigma_{\tau\beta\gamma}^2\]
\[E(MS_{BC}) = \sigma^2 + a\sigma_{\tau\gamma\delta}^2 + \frac{ra\sum_{k=1}^b\sum_{h=1}^c(\gamma\delta)_{kh}^2}{(b-1)(c-1)}\]
\[E(MS_{RBC}) = \sigma^2 + a\sigma_{\tau\gamma\delta}^2 \]
\[E(MS_{ABC}) = \sigma^2 + \sigma_{\tau\beta\gamma\delta}^2 + \frac{r\sum_{j=1}^a\sum_{k=1}^b\sum_{h=1}^c(\beta\gamma\delta)_{jkh}^2}{(a-1)(b-1)(c-1)}\]
\[E(MS_{RABC}) = \sigma^2 + \sigma_{\tau\beta\gamma\delta}^2 \]
\[E(error) = \sigma^2 \]
where $\sigma^2$ is not estimable.