2 votos

Cómo simular una matriz de datos basada en una respuesta Likert de 5 puntos en R

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.

1voto

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X