Tengo registros de que los usuarios ejecutar programas que, en nuestros sistemas en una universidad. Los datos que muestra el nombre de usuario, tiempo de proceso, y la marca de tiempo de la muestra. También sé que las clases de cada usuario. Teniendo en cuenta estos datos, es posible de forma fiable dicen que los profesores/cursos de utilizar una determinada pieza de software? Me imagino que este método podría ser más fiable que la de pedir a los profesores, que nunca responder a nuestras preguntas! ¿Qué método estadístico, si los hubiere, sería apropiado en este caso? Punteros para la adecuada función de R, se agradecería. Sería un análisis de componentes principales ser apropiado en este caso?
Respuestas
¿Demasiados anuncios?Sólo a partir de una máquina desde la perspectiva del aprendizaje, creo que es posible hacer la inferencia de que desee a partir de estos datos. ¿Qué tan confiable será dependerá de la cantidad de datos que tienen (cuanto más mejor) y en los patrones de uso (hacer que los estudiantes hacen sobre todo relacionado con el curso o el curso, relacionado cosas en estos equipos). Sin embargo, esta no es una tarea trivial. En particular, creo que no hay una única función de R que usted puede simplemente ejecutar y le dará a los resultados. Así es que vale la pena explorar otras opciones (especialmente de ingeniería social) para obtener los datos exactos.
Si usted va para un análisis estadístico, aquí están algunas ideas para probar.
Una opción es usar la regresión. Supongamos que usted está interesado en un programa y los cursos que se utiliza en. Definir las siguientes variables: $s_i$ es 1 si en un determinado plazo de estudiantes $i$ utiliza el programa, 0 en caso contrario (que potencialmente puede reemplazar esto con qué frecuencia lo utiliza); $x_{ij}$ es 1 si el estudiante $i$ está inscrito en una clase de $j$ y 0 en caso contrario; $\beta_j$ es 1 si la clase $j$ utiliza el programa y 0 en caso contrario. Usted puede construir una regresión logística $$logit(s_i) = \sum_j \beta_j x_{ij}.$$ The variables $s_i$ and $x_{ij}$ are known, and the regression will give you the $\beta$'s. If $\beta_j$ es alto, es probable que el curso utiliza el programa.
Otra opción es aplicar el autor-tema modelo con algunas modificaciones. Si el conjunto de datos es lo suficientemente grande, puede funcionar bien. La ventaja, en comparación con el de regresión logística, es que es más versátil, por lo que es fácil incorporar información adicional que usted tenga (tales como de que todos los alumnos el uso de software estándar, como firefox, y habrá un pequeño número de programas que sólo los estudiantes usan 1-2). La desventaja es que es más difícil de implementar.
No creo PCA o LDA funciona bien aquí. Sus clusters sería el conjuntos de los programas de los estudiantes en una clase particular de uso. El problema es que dos clases se pueden solapar en lo que el uso, en el que caso de que el componente no será recogido por la PCA/LDA.
Teniendo en cuenta que observar co-ocurrencias de las variables discretas, yo haría lo siguiente:
num_programs = 3
num_students = 10
num_courses = 5
# How long a given student uses a given program
random_exponential = rexp(num_programs*num_students)
P = matrix(random_exponential, nrow = num_programs)
# Given a student, probability he/she uses the program
P = t(t(P)/apply(P, 2, sum))
# Which student attends which course
random_bernoulli = sample(c(0,1), num_courses*num_students, replace = TRUE)
C = matrix(random_bernoulli, nrow = num_courses)
# Given a course, probability a student attends this course
C = C/apply(C, 1, sum)
# Given a course, probability a program is used
solution = P%*%t(C)
Esto produce:
> random_exponential
[1] 1.19398141 0.67134008 0.09263323 0.38315782 1.54479115 0.32107116 1.33303520 1.33895914
[9] 0.66164138 0.48749235 0.44726465 1.17094483 1.08530260 3.17384173 0.81148181 0.95276800
[17] 1.09086805 0.04151037 0.03336502 1.14701888 0.37769900 0.56155261 0.49287836 1.10332629
[25] 2.54373887 2.32393698 0.44819034 3.46339510 1.24639024 1.36241789
> P
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0.60981053 0.1703666 0.3998743 0.2315106 0.2140372 0.45693098 0.02141415 0.2602483
[2,] 0.34287825 0.6868730 0.4016513 0.2124064 0.6259270 0.52316137 0.73617320 0.2284216
[3,] 0.04731122 0.1427605 0.1984744 0.5560829 0.1600358 0.01990765 0.24241265 0.5113301
[,9] [,10]
[1,] 0.47851823 0.5703688
[2,] 0.43716996 0.2052616
[3,] 0.08431182 0.2243696
> random_bernoulli
[1] 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0
[45] 1 0 0 0 0 0
> C
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0.2000000 0 0.2000000 0.0000000 0.2 0.00 0.0000000 0.2000000 0.2000000 0
[2,] 0.0000000 0 0.0000000 0.2500000 0.0 0.25 0.2500000 0.0000000 0.2500000 0
[3,] 0.0000000 0 0.0000000 0.5000000 0.0 0.50 0.0000000 0.0000000 0.0000000 0
[4,] 0.5000000 0 0.0000000 0.5000000 0.0 0.00 0.0000000 0.0000000 0.0000000 0
[5,] 0.1666667 0 0.1666667 0.1666667 0.0 0.00 0.1666667 0.1666667 0.1666667 0
> solution
[,1] [,2] [,3] [,4] [,5]
[1,] 0.3924977 0.2970935 0.3442208 0.4206606 0.3335627
[2,] 0.4072096 0.4772277 0.3677839 0.2776423 0.3931168
[3,] 0.2002927 0.2256788 0.2879953 0.3016971 0.2733205