我正在學習R的e1071包來執行樸素貝葉斯分析。根據this教程,該包的naieveBayes方法採用稱爲「公式」的輸入 - 它表示爲「公式的形式類〜x1 + x2 + ..」R中e1071包的「公式」的數據類型是什麼?
如何創建這樣的公式?我有一個包含性別,工作和收入列的數據集,並希望對這些維度/因素中的每一個進行分析。我是否需要以某種方式將它們變成公式對象? (我對R很新,所以我不清楚R是否支持像公式這樣的特定數據類型)。
我正在學習R的e1071包來執行樸素貝葉斯分析。根據this教程,該包的naieveBayes方法採用稱爲「公式」的輸入 - 它表示爲「公式的形式類〜x1 + x2 + ..」R中e1071包的「公式」的數據類型是什麼?
如何創建這樣的公式?我有一個包含性別,工作和收入列的數據集,並希望對這些維度/因素中的每一個進行分析。我是否需要以某種方式將它們變成公式對象? (我對R很新,所以我不清楚R是否支持像公式這樣的特定數據類型)。
只要打字~ 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)
的公式通過使用~
功能的創建。它可以使用,也可以作爲前綴操作者或中綴運算符:
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.formula
。 formula
函數不會創建公式,而是一種通用函數,它具有不同分類對象的特定行爲,通常用於從迴歸對象中提取公式。
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 *
如何將我的參數分配給X和Y? – bernie2436
這不是想法。該公式定義了一組指令,模型將使用該指令來解釋要執行的操作。看看上面的'lm'例子。 'lm'有兩個參數:公式和數據。公式告訴它如何處理數據。 –
B弗裏德曼所以要做一個假想的比喻,如果你想用一個像lm()那樣工作的假裝函數regressionthis()來執行迴歸,那麼如果你想找到一個線性的話,你可以給它一個公式y = mx + b模型? – bernie2436