[程式] predict() in R 的疑難

看板Statistics作者 (Logit(odds))時間10年前 (2013/11/30 22:13), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
研究 S3 與 predict() 的關聯 ----------------------------- 我以前的觀念 認為 predict() 的使用 , 是湊齊兩種條件 1. model <- lm(y~x) : 給予 linear model 2. Xpoint <- as.data.fram(x) : 給予 x 向量 在這樣的情況下 model 提供了回歸模型的趨勢線參數 y=ax+b Xpoint 提供了 x 值 , 套入趨勢線的 y=ax+b 得到 predicted y , 異於 real data y ----------------------------- 但我現在在研究一個 R package 作者的程序如下 source(../script/sourcetracker.R) 這個 sourcetracker.R 裡面包有一個 main function , sourcetracker() 還有大約 10 來個小 functions ----------------------------- 作者先用 sourcetracker() , 產生一個 model 變數 model 變數的內容很單純 , 都是 matrix 與 factor 而已 (我有把它拆開來跑過了 , 確定是單純變數) model <- list(NULL) model[[2]] <- 原始矩陣 (training set) [90樣本 & 100features] model[[3]] <- group factors [30 vs 30 vs 30 (total 90 樣本)] model[[1]] <- 根據 model[[3]] 的 factor , 將原始矩陣分成三分取 colSums 然後再 rbind() , 變成 [3混合樣本 & 100 features] 最後作者加了一行 class(model) <- "sourcetracker" ----------------------------------------------------------- 接下來作者進行 predict() predict( model , testSET , alpha1=0.001 , alpha2=0.001 ) 其中 model[[2]] 是 training set , 用來建造 model [資料矩陣維度 : 90 x 100] 而 testSET 是 testing set , 是需要被預測的資料 [資料矩陣維度 :10 x 100] *** 如果把 source(../script/sourcetracker.R) 收進來的小 fuinction 砍掉 , predict() 會跳出錯誤 ----------------------------------------------------------- 關鍵在這行 class(model) <- "sourcetracker" 當宣告了特定 class 後 再套用 predict() , predict() 就能進行計算 (不加就不能算) 但 model 這個變數根本不是 線型模型 所以 predict() 吃入 model 變數後 還需要做一大堆事情才能得到結果 (Gibb`s sampling,cross-validation,貝式 etc.) 但我不明白的是 , predict() 是怎麼知道接下來要做哪些事情? 因為我看其他的 internal function , 並沒有特別宣稱自己是屬於 "sourcetracker" 那 predict() 要怎麼辨認這些 function , 並按照正確的順序使用?? 誠心求教 -- 我用名為真心的卡牌說服你 這是我最後一張牌 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.215.136 ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:13) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:13) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:14) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:15) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:16) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:16) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:17) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:17) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:19) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:20) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:21) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:30) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:32) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:35) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:35) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:37) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:37) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:38) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:38) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:39) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:43) ※ 編輯: gsuper 來自: 114.32.215.136 (11/30 22:43) ※ gsuper:轉錄至看板 R_Language 11/30 22:45

12/01 22:07, , 1F
predict."class name"
12/01 22:07, 1F

12/01 22:09, , 2F
如果是s3的話,就上面了!
12/01 22:09, 2F
OK 我學會了 , 感謝 ※ 編輯: gsuper 來自: 114.32.215.136 (12/02 08:44)
文章代碼(AID): #1IcV9pg3 (Statistics)