目前,唉,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
可以避免此問題。
如果我沒有解決您的問題,請告訴我。