Looking at how changes in noise and bias parameters affect model-fitting
library(grt)
## Loading required package: MASS
##
## Attaching package: 'grt'
## The following object is masked from 'package:base':
##
## scale
#x <- (function(...)get(data(...,envir = new.env())))("subdemo.cj")
m <- list(c(100,200),c(100,100),c(200,100),c(200,200))
covs <- diag(30^2, ncol=2, nrow=2)
set.seed(1)
CJ <- grtrnorm(n=c(50,20,10,20), np=4, means=m, covs=covs)
CJ$category <- c(1,2,2,2)[CJ$category]
#create ramdom responses with 80% accuracy
CJ$response <- CJ$category
set.seed(1)
incorrect <- sample(1:100, size=20)
CJ$response[incorrect] <- abs(CJ$response[incorrect] - 3)
When equal.noise is set to TRUE, the first value of the noise parameter determines the noise value for both decision bounds, the second noise parameter value is ignored
noise first value FALSE
#these specification gave the same AIC and plot
# 3 df AIC = 126.67
m.cj <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(FALSE,FALSE)))
plot(m.cj, main = "equal.noise=TRUE,noise=c(FALSE, TRUE),bias=c(FALSE,FALSE)", font.main = 1)
m.cj3 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed=list(noise=c(FALSE, FALSE),bias=c(FALSE,FALSE)))
plot(m.cj3, main = "equal.noise=TRUE,noise=c(FALSE, FALSE),bias=c(FALSE,FALSE)", font.main = 1)
noise first value TRUE
#these specification gave the same AIC and plot
# 2 df AIC = 671.94
m.cj1 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed=list(noise=c(TRUE, FALSE),bias=c(FALSE,FALSE)))
plot(m.cj1, main = "equal.noise=TRUE,noise=c(TRUE, FALSE),bias=c(FALSE,FALSE)", font.main = 1)
m.cj2 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed=list(noise=c(TRUE, TRUE),bias=c(FALSE,FALSE)))
plot(m.cj2, main = "equal.noise=TRUE,noise=c(TRUE, TRUE),bias=c(FALSE,FALSE)", font.main = 1)
# 1 df AIC = 165.97
m.cj4 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(TRUE,TRUE)))
plot(m.cj4, main = "equal.noise=TRUE,noise=c(FALSE, TRUE),bias=c(TRUE,TRUE)", font.main = 1)
# 2 df AIC = 124.60
# vertical decision bound doesn't show up
m.cj5 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(FALSE,TRUE)))
plot(m.cj5, main = "equal.noise=TRUE,noise=c(FALSE, TRUE),bias=c(FALSE,TRUE)", font.main = 1)
# 2 DF AIC = 134.48
m.cj24 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(TRUE, FALSE)))
plot(m.cj24, main = "equal.noise=TRUE,noise=c(FALSE, TRUE),bias=c(TRUE, FALSE)", font.main = 1)
# 3 df AIC = 126.67
m.cj6 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(FALSE,FALSE)))
plot(m.cj6, main = "equal.noise=TRUE,noise=c(FALSE, TRUE),bias=c(FALSE,FALSE)", font.main = 1)
# 1 df AIC = 165.97
# m.cj7 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(TRUE,TRUE)))
#Error in lims[1, ] : incorrect number of dimensions
# 1 df AIC = 749.35
m.cj8 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(FALSE,TRUE)))
plot(m.cj8, main = "equal.noise=TRUE,noise=c(TRUE, FALSE),bias=c(FALSE,TRUE)", font.main = 1)
# 1 DF, AIC 685.80
m.cj25 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(TRUE, FALSE)))
plot(m.cj25, main = "equal.noise=TRUE,noise=c(TRUE, FALSE),bias=c(TRUE, FALSE)", font.main = 1)
# 2 df AIC = 671.94
m.cj9 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(FALSE,FALSE)))
plot(m.cj9, main = "equal.noise=TRUE,noise=c(TRUE, FALSE),bias=c(FALSE,FALSE)", font.main = 1)
# 3 df AIC = 131.45
m.cj10 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(FALSE,FALSE)), equal.noise = FALSE)
plot(m.cj10, main = "equal.noise=FALSE,noise=c(FALSE, TRUE),bias=c(FALSE,FALSE)", font.main = 1)
# df 2 AIC = 514.06
m.cj11 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(FALSE,TRUE)), equal.noise = FALSE)
plot(m.cj11, main = "equal.noise=FALSE,noise=c(FALSE, TRUE),bias=c(FALSE,TRUE)", font.main = 1)
# 2 DF AIC = 131.43
m.cj20 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(TRUE, FALSE)), equal.noise = FALSE)
plot(m.cj20, main = "equal.noise=FALSE,noise=c(FALSE, TRUE),bias=c(TRUE, FALSE)", font.main = 1)
# 1 df AIC = 529.02
m.cj12 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, TRUE),bias=c(TRUE,TRUE)), equal.noise = FALSE)
plot(m.cj12, main = "equal.noise=FALSE,noise=c(FALSE, TRUE),bias=c(TRUE, TRUE)", font.main = 1)
### change bias value when noise = c(FALSE, FALSE)
# 4 df AIC = 128.67
m.cj13 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, FALSE),bias=c(FALSE,FALSE)), equal.noise = FALSE)
plot(m.cj13, main = "equal.noise=FALSE,noise=c(FALSE, FALSE),bias=c(FALSE,FALSE)", font.main = 1)
# 3 df AIC = 134.88
m.cj14 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, FALSE),bias=c(FALSE,TRUE)), equal.noise = FALSE)
plot(m.cj14, main = "equal.noise=FALSE,noise=c(FALSE, FALSE),bias=c(FALSE,TRUE)", font.main = 1)
# 3 DF AIC = 132.94
m.cj21 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, FALSE),bias=c(TRUE, FALSE)), equal.noise = FALSE)
plot(m.cj21, main = "equal.noise=FALSE,noise=c(FALSE, FALSE),bias=c(TRUE, FALSE)", font.main = 1)
# 2 df AIC = 167.97
m.cj15 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(FALSE, FALSE),bias=c(TRUE, TRUE)), equal.noise = FALSE)
plot(m.cj15, main = "equal.noise=FALSE,noise=c(FALSE, FALSE),bias=c(TRUE, TRUE)", font.main = 1)
# 3 df AIC = 137.21
m.cj16 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(FALSE,FALSE)), equal.noise = FALSE)
plot(m.cj16, main = "equal.noise=FALSE,noise=c(TRUE, FALSE),bias=c(FALSE,FALSE)", font.main = 1)
# 2 DF AIC = 135.91
m.cj17 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(FALSE,TRUE)), equal.noise = FALSE)
plot(m.cj17, main = "equal.noise=FALSE,noise=c(TRUE, FALSE),bias=c(FALSE,TRUE)", font.main = 1)
# 2 DF AIC = 495.40
m.cj18 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(TRUE, FALSE)), equal.noise = FALSE)
plot(m.cj18, main = "equal.noise=FALSE,noise=c(TRUE, FALSE),bias=c(TRUE,FALSE)", font.main = 1)
# 1 DF AIC = 514.99
m.cj19 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, FALSE),bias=c(TRUE, TRUE)), equal.noise = FALSE)
plot(m.cj19, main = "equal.noise=FALSE,noise=c(TRUE, FALSE),bias=c(TRUE, TRUE)", font.main = 1)
### change bias value when noise = c(TRUE, FALSE)
# 2 df AIC = 671.94
m.cj13 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, TRUE),bias=c(FALSE,FALSE)), equal.noise = FALSE)
plot(m.cj13, main = "equal.noise=FALSE,noise=c(TRUE, TRUE),bias=c(FALSE,FALSE)", font.main = 1)
# 1 DF, AIC 749.35
m.cj22 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, TRUE),bias=c(FALSE,TRUE)), equal.noise = FALSE)
plot(m.cj22, main = "equal.noise=FALSE,noise=c(TRUE, TRUE),bias=c(FALSE,TRUE)", font.main = 1)
# 1 DF, AIC = 685.80
m.cj23 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, TRUE),bias=c(TRUE, FALSE)), equal.noise = FALSE)
plot(m.cj23, main = "equal.noise=FALSE,noise=c(TRUE, TRUE),bias=c(TRUE, FALSE)", font.main = 1)
# m.cj13 <- gcjc(response ~ x1 + x2, data=CJ, config=2, category=CJ$category, zlimit=7, fixed = list(noise=c(TRUE, TRUE),bias=c(TRUE, TRUE)), equal.noise = FALSE)
#ERROR
Conclusions:
When equal.noise = TRUE, only the first noise parameter determine whether noise is fixed or not. The second parameter will be ignored.
When both bias parameters are TRUE, different combinations of noise parameters all have the same results.
Noises only play a role when bias parameter is not TRUE. The TRUE bias parameter all have the boundary in the same position.