2013-10-25 45 views
1

我正在學習R的e1071包來執行樸素貝葉斯分析。根據this教程,該包的naieveBayes方法採用稱爲「公式」的輸入 - 它表示爲「公式的形式類〜x1 + x2 + ..」R中e1071包的「公式」的數據類型是什麼?

如何創建這樣的公式?我有一個包含性別,工作和收入列的數據集,並希望對這些維度/因素中的每一個進行分析。我是否需要以某種方式將它們變成公式對象? (我對R很新,所以我不清楚R是否支持像公式這樣的特定數據類型)。

回答

1

只要打字~ x1 + x2將創建類formula的對象。

查看?lm的基本思想的例子。特定領域的語言非常靈活,所以不同的模型以不同的方式使用它。

例如:

dat <- data.frame(x=runif(10), y=runif(10)) 
lm(y ~ x, data=dat) 
f <- y ~ x 
class(f) 
lm(f, data=dat) 
+0

如何將我的參數分配給X和Y? – bernie2436

+0

這不是想法。該公式定義了一組指令,模型將使用該指令來解釋要執行的操作。看看上面的'lm'例子。 'lm'有兩個參數:公式和數據。公式告訴它如何處理數據。 –

+0

B弗裏德曼所以要做一個假想的比喻,如果你想用一個像lm()那樣工作的假裝函數regressionthis()來執行迴歸,那麼如果你想找到一個線性的話,你可以給它一個公式y = mx + b模型? – bernie2436

0

的公式通過使用~功能的創建。它可以使用,也可以作爲前綴操作者或中綴運算符:

form <- ~ atom 
form <- atomA ~ atomB 
is.function(`~`) 
[1] TRUE 

class(form[[2]]) 
#[1] "name" 
is.language(form) 
#[1] TRUE 
is.language(form[[2]]) 
#[1] TRUE 

就像函數,式對象獲得與環境中創建:

str(form) 
#Class 'formula' length 3 atomA ~ atomB 
# ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 

不同的功能有不同的假設關於哪些形式(前綴或中綴)使用。您可以使用列表索引通過位置號提取組件。第一個元素將始終是代字符運算符。

form[[1]] 
# returns: ~> 
form[[2]] 
# atomA 
form[[3]] 
# atomB 

可以降級式爲字符對象與as.character或促進角色對象的公式與as.formulaformula函數不會創建公式,而是一種通用函數,它具有不同分類對象的特定行爲,通常用於從迴歸對象中提取公式。

methods(formula) 
#----------- 
[1] formula.character*   
[2] formula.data.frame*   
[3] formula.default*    
[4] formula.formula*    
[5] formula.glm*     
[6] formula.lm*     
[7] formula.nls*     
[8] formula.quantmod*    
[9] formula.summary.formula.cross 

對於方法(公式),您的結果將因您當時加載哪些包而有所不同。 [10] formula.terms *

相關問題