MASS :: stepAIC-步骤功能参数的赋值

时间:2018-12-04 20:34:50

标签: r

有人可以解释为什么R中的以下代码根据使用=还是<-来分配steps参数而得出不同的结果:

library(MASS)
quine.hi <- aov(log(Days + 2.5) ~ .^4, quine)
quine.nxt <- update(quine.hi, . ~ . - Eth:Sex:Age:Lrn)

quine.stp <- stepAIC(quine.nxt,
                     scope = list(upper = ~Eth*Sex*Age*Lrn, lower = ~1),
                     trace = TRUE,
                     steps = 6)

quine.stp_2 <- stepAIC(quine.nxt,
                       scope = list(upper = ~Eth*Sex*Age*Lrn, lower = ~1),
                       trace = TRUE,
                       steps <- 6)

1 个答案:

答案 0 :(得分:4)

<-=在函数调用中不可互换。当结果相同而不是不同时,应该感到惊讶。 =用于命名函数类中的参数; ->不提供名称。

这意味着您致电时

stepAIC(quine.nxt,
  scope = list(upper = ~Eth*Sex*Age*Lrn, lower = ~1),
  trace = TRUE,
  steps <- 6)

第四个参数未命名。它经过评估,仅返回6(->运算符返回RHS值作为返回值),并被视为未命名的参数。插入所有命名值后,未命名参数将按接收顺序传递给函数。 stepAIC函数签名是

stepAIC(object, scope, scale ,
    direction, trace, keep , steps , use.start ,k = 2, ...)

因此,由于您已指定scope=trace=,因此6的值将进入scale=参数。所以你写的与

相同
stepAIC(quine.nxt,
  scope = list(upper = ~Eth*Sex*Age*Lrn, lower = ~1),
  trace = TRUE,
  6)

相同
stepAIC(quine.nxt, 
  scope = list(upper = ~Eth*Sex*Age*Lrn, lower = ~1),
  scale = 6,
  trace = TRUE)

因此重要的信息是<-仅应用于赋值,=仅应用于命名函数调用中的参数。