1

我正在学习 R 的 e1071 包来执行朴素贝叶斯分析。根据教程,包的 naieveBayes 方法接受一个名为“公式”的输入——它说是“表单类的公式 ~ x1 + x2 + ..”

如何创建这样的公式?我有一个包含性别、工作和收入列的数据集,并希望对这些维度/因素中的每一个进行分析。我需要以某种方式将它们变成公式对象吗?(我对 R 很陌生,所以我不清楚 R 是否支持特定的数据类型,如公式)。

4

2 回答 2

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 )
于 2013-10-25T12:51:56.860 回答
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.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] 公式.术语*

于 2013-10-26T23:45:45.243 回答