在R中使用效果包时出错;错误的变量类型

时间:2012-10-24 12:00:42

标签: r mean

在研究多元回归的一些基本原理的同时,我决定尝试将我的手动工作与那些"效果"包裹,约翰福克斯。我已经生成了具有某种关系的变量,并希望在控制连续变量的影响时获得调整因子。

然而,我已经陷入停滞状态,因为效果包中的效果函数会返回错误"变量的无效类型(内置)''""

当我检查变量的类型时,' c'使用typeof(c),我告诉它是double类型,因为我构造它。

  • 导致此错误的原因是什么?
  • 变量是' c'由于某种原因被强迫输入' builtin'?

这是我的代码:

set.seed(1986)
y <- rnorm(100)
f <- sapply(y, function(x) if(x < 0) 1 else 2)
f.f <- as.factor(f)
set.seed(1987)
c <- rnorm(100, 0, .1) + y + f

an3 <- lm(y ~ f.f + c); summary(an3)

ef <- effect("f.f", an3)

2 个答案:

答案 0 :(得分:3)

c不是变量名称的好选择。它是R中非常常用的built-in function

c更改为d对我有用:

set.seed(1986)
y <- rnorm(100)
f <- sapply(y, function(x) if(x < 0) 1 else 2)
f.f <- as.factor(f)
set.seed(1987)
d <- rnorm(100, 0, .1) + y + f

an3 <- lm(y ~ f.f + d); summary(an3)

library(effects)
ef <- effect("f.f", an3)
 ef

 f.f effect
f.f
         1          2 
 0.5504214 -0.3231941 

答案 1 :(得分:0)

另一种选择是将数据存储在data.frame;这也有其他好处,特别是如果一个人正在使用多个数据集。

set.seed(1986)
d <- data.frame(y=rnorm(100))
d <- within(d, {
  f <- sapply(y, function(x) if(x < 0) 1 else 2)
  f.f <- as.factor(f)
  set.seed(1987)
  c <- rnorm(100, 0, .1) + y + f
})

library(effects)

an3 <- lm(y ~ f.f + c, data=d); summary(an3)
ef <- effect("f.f", an3)
ef

# f.f effect
# f.f
#          1          2 
#  0.5504214 -0.3231941