看板 Statistics 關於我們 聯絡資訊
抱歉 我想我把問題說的更清楚好了
maoc:這要看你怎麼寫 f(x,y) 了, 寫得好的話可以用 sapply ?? 05/17 07:16
diplazium:我想是你產生t(Q)的f(X,Y)寫的方式無法處理X, Y vectors 05/17 09:12
diplazium:以你的例子,可用outer(X, Y, FUN="*")來替代雙重迴圈式 05/17 09:14
rockken:令函數f=function(a,b){a*b+8},outer(x, y, "f")。 05/17 09:28
clickhere:你的f()?? 05/17 13:44
函數 f(x,y) 其實應該是 f(x1 , x2 , x3 , y1, y2) f 蠻複雜的 其中包含積分 微分還有估計nonparametric mean的函數 之前的 X[i], i = 1...n 應該是 X[i,1] , X[i,2], X[i,3] 一個 n ×3 的 matrix Y[j], j = 1...m 應該是 Y[j,1] , Y[j,2] 一個 m ×2 的 matrix 我希望的 P[i,j] <- f( X[i,1] , X[i,2] , X[i,3] , Y[j,1], Y[j,2] ) outer 雖好 不過他似乎不能用在 matrix 上? (d大 r大 提供的指令 outer(x, y, "f") 的確很好 不過似乎 x , y 只能是 vector?? 我嘗試用 split下去拆解 X Y 還是無法作用) m大 我嘗試寫了兩圈apply混在一起 運算時間大概變成原本的1/3 不過還是很慢 如果能用類似outer的指令就會非常快 不知板上前輩能否賜教 <(_ _)> 非常感謝 PS: C大 我的 f(x1 , x2 , x3 , y1, y2) 長很醜 是以下的形式 -[x1 - U(x2 , x3)]*[ g(x3) / g(x2, x3)] * d h(x2, y1, y2)/dx2 + l(x3,y1,y2) U(.,.) 是nonparametric mean function , h(., . ,.) 是 kernel和其他函數相乘 g 是 density kernel , l 是 ∫ U(x2,.)*h(x2,.,.) dx2 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.9.224 ※ 編輯: laba1014 來自: 61.230.9.224 (05/17 17:18) ※ 編輯: laba1014 來自: 61.230.9.224 (05/17 17:19) ※ 編輯: laba1014 來自: 61.230.9.224 (05/17 17:20)
Aqery:R本身就很慢,想要變快的話無非幾種方式,一個是演算法, 05/17 22:03
Aqery:還有就是運用R最大的特性: vectorization 05/17 22:03
Aqery:把你的運算可以vector化的盡量vector化,這樣算起來可改進 05/17 22:04
Aqery:很多,另外,apply系的function我覺得對提升速度可能沒多大 05/17 22:05
Aqery:幫助,因為他們也只是包起來的loop 05/17 22:05
Aqery:原po有試過sweep嗎?我的經驗是他比apply系的更能提升速度 05/17 22:07
clickhere:-[x1 - U(x2 , x3)]*[ g(x3) / g(x2, x3)] 和j無關 05/18 09:26
clickhere:d h(x2, y1, y2)/dx2 和 l(x3,y1,y2) 可以獨立計算. 05/18 09:27
laba1014:嗚嗚嗚 謝謝大家的幫忙 我成功把計算時間壓縮到我理想的 05/19 05:05
laba1014:狀況了 05/19 05:06
laba1014:太感激了 05/19 05:06