R語言隨手筆記
用R語言遇到的一些問題。
經常看到rcs()函式,不知道什麼意思。比如擬合迴歸時:f <- cph(S ~ rcs(age,4) + sex, x=T, y=T)
對此,丁香園裡有人給出這樣的看法:
-------------------------------------------------------------
rcs全稱是restricted cubic spline 即限制立方樣條函式。為什麼用它呢?我們在做迴歸擬合數據時,經常對因變數和自變數的假定是:自變數和因變數呈線性關係,logistic迴歸是自變數和logitP,cox是指自變數和一個h(t)變換的一個東東(記不清了,抱歉),這些假定就叫線性假定。我們做迴歸的時候自變數包括連續變數和ordinal variable(等級有序變數)和因變數不成線性的時候,我可以轉化為分類,也可以變數log變換,還有就是spline技術,也就是引入多項式,但rcs又不是簡單的引入多項式,簡單的說就是引入3次方的項,這和你選擇的節點有關,這樣處理的結果就是可以和好的擬合數據有限制了引入項的自由度,所以Harrell (rms包的作者)推崇這種建模方法。說的很概括,具體的內容搜尋rcs就可以瞭解。Harrell的論文也可以參考,他認為節點的位置不那麼重要,而節點數目很重要。
-------------------------------------------------------------
SVM的調參,關於e1071包,好像如果把資料“尺度化”(scaling)後,使用預設的引數就能訓練出較好的模型。
R語言裡,迴歸的引數,如果傳formula,比如Y~X,那麼這裡的X不應該是dataframe或matrix,而應該用向量比如Y~x1+x2。如果向量太多,那麼可以這樣傳兩個引數:formula和data,比如glm(Y~., data=X)。這是在Logistics迴歸中被坑過,在predict時解決了將newdata用dataframe形式傳入的問題後,總是報錯說變數數不對(一方面可能fit 時有問“glm傳引數data可能沒傳好”,另一方面newdata的dataframe可能需要轉置一下)。
R語言的向量、矩陣、資料框、陣列、列表等等,有點煩人,和我之前的C語言系列思維差別太大。
R的e1701中都在svm中,僅當y變數是factor型別時構建SVC,否則構建SVR