Necesito su ayuda. ¿Podría alguien decirme cómo simular datos matriciales basados en la respuesta de la escala Likert (escala Likert de 5 puntos - 1-Extremadamente infeliz, 2-Infeliz,3-Neutral,4-Feliz,5-Extremadamente feliz). Necesito simular datos artificiales para 5 constructos/dominios diferentes con 10 ítems cada uno para el tamaño de la muestra, N=100. También he asumido que cada uno de los ítems tiene una carga factorial de 0,7. Ya he instalado los paquetes fabricatr, likert y psych y estaba intentando crear estos datos simulados pero no he sido capaz de hacerlo. ¿Podría alguien ayudarme a conseguirlo? Gracias de antemano.
Respuesta
¿Demasiados anuncios?
manku
Puntos
111
Creo que se puede utilizar el sample
en R, para rellenar matrices según sus especificaciones.
- El primer argumento de
sample
especifica las opciones de Likert:1:5
; - El segundo argumento especifica el número de valores a devolver;
- El tercer argumento debe ser
rep=T
porque cada una de las opciones de Likert puede ser elegida más de una vez; y - El cuarto argumento es un vector de probabilidad que da la frecuencia con la que se elige cada valor de Likert. (El vector de probabilidad puede dar proporciones; R las convertirá en probabilidades si no suman 1).
Voy a hacer una matriz con 10 columnas y 100 filas. Las cinco primeras columnas tienen vectores de probabilidad diferentes a los de las cinco últimas. Esto es más pequeño que la matriz que necesitas, pero puedes ampliar el procedimiento como sea necesario.
## PROGRAM
set.seed(711) # for reproducibility
A = matrix(sample(1:5, 5*100, rep=T, prob=c(3,3,3,1,1)), byrow=T, nrow=100)
B = matrix(sample(1:5, 5*100, rep=T, prob=c(1,1,2,4,6)), byrow=T, nrow=100)
head(A); head(B) # view first six rows of each matrix
DTA = cbind(A, B) # glue two matrices together to make 10 x 100
head(DTA) # view first six rows of big matrix
.
## OUTPUT
head(A); head(B) # view first six rows of each matrix
[,1] [,2] [,3] [,4] [,5]
[1,] 3 3 3 2 3
[2,] 1 3 1 2 2
[3,] 1 2 5 5 4
[4,] 4 2 2 4 2
[5,] 1 3 3 1 1
[6,] 1 2 2 1 5
[,1] [,2] [,3] [,4] [,5]
[1,] 2 4 5 5 4
[2,] 5 2 5 2 1
[3,] 1 4 5 3 4
[4,] 3 4 3 3 4
[5,] 2 4 4 4 5
[6,] 5 5 4 3 1
DTA = cbind(A, B) # glue two matrices together to make 10 x 100
head(DTA) # view first six rows of big matrix
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 3 3 3 2 3 2 4 5 5 4
[2,] 1 3 1 2 2 5 2 5 2 1
[3,] 1 2 5 5 4 1 4 5 3 4
[4,] 4 2 2 4 2 3 4 3 3 4
[5,] 1 3 3 1 1 2 4 4 4 5
[6,] 1 2 2 1 5 5 5 4 3 1
.
## SUMMARIES
mean(A); mean(B)
[1] 2.406 # grumpier
[1] 3.906 # cheerier
table(A)
A
1 2 3 4 5
141 143 127 50 39
table(B)
B
1 2 3 4 5
41 33 74 136 216