目前,唉,isat
不会对分类/字符变量提供相同的功能lm
,也不使用*
和:
。我们希望在未来的版本中解决这个问题。
与此同时,您将不得不在数据集中创建表示交互的不同变量。我想类似下面的...
library(gets)
N <- 100
x <- rnorm(N)
z <- c(rep("A",N/4),rep("B",N/4),rep("C",N/4),rep("D",N/4))
e <- rnorm(N)
y <- 0.5*x*as.numeric(z=="A") + 1.5*x*as.numeric(z=="B") - 0.75*x*as.numeric(z=="C") + 5*x*as.numeric(z=="D") + e
lm.reg <- lm(y ~ x:z)
arx.reg.0 <- arx(y,mxreg=x:z)
data <- data.frame(y,x,z,stringsAsFactors=F)
for(i in z[duplicated(z)==F]) {
data[[paste("Zx",i,sep=".")]] <- data$x * as.numeric(data$z==i)
}
arx.reg.1 <- arx(data$y,mxreg=data[,c("x","Zx.A","Zx.B","Zx.C")])
isat.1 <- isat(data$y,mc=TRUE,mxreg=data[,c("x","Zx.A","Zx.B","Zx.C")],max.block.size=20)
需要注意的是,你会为每个类别中创建虚拟变量,有一个机会,这些假人会导致您的解释变量(矩阵的奇异性,如果像在我的例子,isat
自动使用4个块)。使用参数max.block.size
可以避免此问题。
如果我没有解决您的问题,请告诉我。