Add simulation code of IRR
This commit is contained in:
		
							parent
							
								
									46e2d1fe48
								
							
						
					
					
						commit
						a02bcbb1d4
					
				
							
								
								
									
										43
									
								
								irr/irr.R
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								irr/irr.R
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | ||||
| require(tibble) | ||||
| require(purrr) | ||||
| 
 | ||||
| .emulate_coding <- function(ground_truth, Q = 1) { | ||||
|     if (runif(1) > Q) { | ||||
|         return(sample(c(1,0), 1)) | ||||
|     } else { | ||||
|         return(ground_truth) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| ##irr::kripp.alpha(matrix(c(obs_x, obs_x2), nrow = 2, byrow = TRUE), method = "nominal") | ||||
| ### Which is very close to | ||||
| ## cor(obs_x, obs_x2) | ||||
| 
 | ||||
| .sim <- function(N = 100, P = 0.5, Q = 0.8) { | ||||
|     real_x <- rbinom(N, 1, P) | ||||
|     obs_x <- purrr::map_dbl(real_x, .emulate_coding, Q = Q) | ||||
| ### then learn w from obs_x and k | ||||
|     obs_x2 <- purrr::map_dbl(real_x, .emulate_coding, Q = Q) | ||||
|     ra <- sum(diag(table(obs_x, obs_x2))) / N ## raw agreement | ||||
|     rr <- cor(obs_x, obs_x2) | ||||
|     irr <- irr::kripp.alpha(matrix(c(obs_x, obs_x2), nrow = 2, byrow = TRUE), method = "nominal")$value | ||||
|     return(data.frame(N, P, Q, ra, rr, irr)) | ||||
| } | ||||
| 
 | ||||
| N <- c(50, 100, 300) | ||||
| P <- c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9) | ||||
| Q <- c(0.5, 0.6, 0.7, 0.8, 0.9, 1) | ||||
| conditions <- tibble::tibble(expand.grid(N, P, Q)) | ||||
| colnames(conditions) <- c("N", "P", "Q") | ||||
| res <- list() | ||||
| 
 | ||||
| for (i in seq_len(nrow(conditions))) { | ||||
|     print(i) | ||||
|     res[[i]] <- purrr::map_dfr(rep(NA, 100), ~ .sim(conditions$N[i], conditions$P[i], conditions$Q[i])) | ||||
| } | ||||
| 
 | ||||
| conditions$res <- res | ||||
| 
 | ||||
| require(dplyr) | ||||
| 
 | ||||
| conditions %>% mutate(mra = purrr::map_dbl(res, ~mean(.$ra, na.rm = TRUE)), mrr = purrr::map_dbl(res, ~mean(.$rr, na.rm = TRUE)), mirr = purrr::map_dbl(res, ~mean(.$irr, na.rm = TRUE))) %>% lm(mirr~0+P+poly(Q, 2), data =.) %>% summary | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user