Loading, setting up

In this section, we start out by doing:

library(tidyverse)
library(tidyLPA)
library(psych)
usethis::use_git_ignore("*.csv")
## ✔ Setting active project to '/Users/joshuarosenberg/Documents/tetc-analysis'

Read the data:

d <- read_csv("tetcs-survey-export.csv", skip = 0)
## Parsed with column specification:
## cols(
##   .default = col_character()
## )
## See spec(...) for full column specifications.
df <- read_csv("full-tetcs-dataset.csv")
## Parsed with column specification:
## cols(
##   .default = col_character(),
##   StartDate = col_datetime(format = ""),
##   EndDate = col_datetime(format = ""),
##   RecipientLastName = col_logical(),
##   RecipientFirstName = col_logical(),
##   RecipientEmail = col_logical(),
##   ExternalDataReference = col_logical(),
##   Finished = col_double(),
##   Status = col_double(),
##   Q1 = col_double(),
##   Q5_1 = col_double(),
##   Q5_2 = col_double(),
##   LocationLatitude = col_double(),
##   LocationLongitude = col_double(),
##   LocationAccuracy = col_double()
## )
## See spec(...) for full column specifications.
d <- d %>% slice(-c(1:2))

Check that the data loaded:

d
## # A tibble: 337 x 65
##    StartDate EndDate Status IPAddress Progress `Duration (in s… Finished
##    <chr>     <chr>   <chr>  <chr>     <chr>    <chr>            <chr>   
##  1 2018-09-… 2018-0… 0      152.33.5… 100      499              1       
##  2 2018-09-… 2018-0… 0      152.33.6… 100      1569             1       
##  3 2018-09-… 2018-0… 0      152.33.7… 100      667              1       
##  4 2018-09-… 2018-0… 0      134.139.… 100      555              1       
##  5 2018-09-… 2018-0… 0      152.33.1… 100      600              1       
##  6 2018-09-… 2018-0… 0      49.199.2… 100      1006             1       
##  7 2018-09-… 2018-0… 0      120.151.… 100      491              1       
##  8 2018-09-… 2018-0… 0      1.128.10… 100      868              1       
##  9 2018-09-… 2018-0… 0      121.222.… 100      674              1       
## 10 2018-09-… 2018-0… 0      144.133.… 100      616              1       
## # ... with 327 more rows, and 58 more variables: RecordedDate <chr>,
## #   ResponseId <chr>, RecipientLastName <chr>, RecipientFirstName <chr>,
## #   RecipientEmail <chr>, ExternalReference <chr>, LocationLatitude <chr>,
## #   LocationLongitude <chr>, DistributionChannel <chr>,
## #   UserLanguage <chr>, Q2 <chr>, Q3 <chr>, Q3_8_TEXT <chr>, Q4 <chr>,
## #   Q5_1 <chr>, Q5_2 <chr>, Q6 <chr>, Q6_6_TEXT <chr>, Q7 <chr>,
## #   Q7_7_TEXT <chr>, Q8 <chr>, Q8_12_TEXT <chr>, Q9_4 <chr>, Q9_5 <chr>,
## #   Q9_6 <chr>, Q9_7 <chr>, `Q10#1_1` <chr>, `Q10#1_2` <chr>,
## #   `Q10#1_3` <chr>, `Q10#1_4` <chr>, `Q10#1_5` <chr>, Q11_1 <chr>,
## #   Q11_2 <chr>, Q11_3 <chr>, Q11_4 <chr>, Q11_5 <chr>, Q11_6 <chr>,
## #   Q11_7 <chr>, Q11_8 <chr>, Q11_9 <chr>, Q11_10 <chr>, Q11_11 <chr>,
## #   Q11_12 <chr>, Q12 <chr>, Q13 <chr>, Q14 <chr>, Q15 <chr>, Q16 <chr>,
## #   Q17 <chr>, Q18_1 <chr>, Q18_2 <chr>, Q18_3 <chr>, Q18_4 <chr>,
## #   Q18_5 <chr>, Q18_6 <chr>, Q18_7 <chr>, Q18_8 <chr>, Q18_9 <chr>

Process the TETCs variables:

ds <- d %>% 
    select(Q11_1:Q11_12) %>% 
    set_names(1:12) %>% 
    mutate_all(str_extract, "\\(?[0-9,.]+\\)?") %>% 
    mutate_all(as.integer) %>% 
    set_names(str_c("v", 1:12))

Factor analysis

parallel <- fa.parallel(ds, fm = 'minres', fa = 'fa')

## Parallel analysis suggests that the number of factors =  3  and the number of components =  NA
parallel
## Call: fa.parallel(x = ds, fm = "minres", fa = "fa")
## Parallel analysis suggests that the number of factors =  3  and the number of components =  NA 
## 
##  Eigen Values of 
## 
##  eigen values of factors
##  [1]  6.25  0.34  0.30  0.14  0.05 -0.01 -0.06 -0.08 -0.13 -0.15 -0.18
## [12] -0.21
## 
##  eigen values of simulated factors
##  [1]  0.48  0.26  0.19  0.14  0.09  0.05  0.00 -0.05 -0.10 -0.14 -0.19
## [12] -0.26
## 
##  eigen values of components 
##  [1] 6.71 0.85 0.79 0.68 0.57 0.51 0.44 0.38 0.33 0.28 0.25 0.21
## 
##  eigen values of simulated components
## [1] NA

There seems to be just one factor.

Latent Profile Analysis

o <- ds %>% compare_solutions_mplus(v1:v12)

write_rds(o,"compare-solutions-mplus.rds")

x <- ds %>% 
    estimate_profiles_mplus(v1:v12, n_profiles = 3, variances = 'equal', covariances = 'zero')

write_rds(x, "x.rds")
o <- read_rds("compare-solutions-mplus.rds")
x <- read_rds("x.rds")

o[[2]] %>% knitr::kable()
n_profiles model_number variances covariances cluster_ID LL npar AIC BIC SABIC CAIC AWE Entropy LL_replicated cell_size VLMR_val VLMR_p LMR_val LMR_p BLRT_val BLRT_p
2 1 equal zero NA -5380.308 37 10834.616 10975.85 10858.481 10844.05 11302.08 0.918 10/10 159, 177 1579.425 0.0000 1558.812 0.0000 1579.425 0
2 2 varying zero NA -5253.411 49 10604.823 10791.86 10636.427 10621.96 11223.90 0.942 10/10 199, 137 1833.218 0.0004 1820.699 0.0004 1833.218 0
3 1 equal zero NA -5125.000 50 10349.999 10540.85 10382.249 10367.89 10981.71 0.920 10/10 83, 137, 116 510.617 0.0000 503.953 0.0000 510.617 0
4 1 equal zero NA -5066.325 63 10258.651 10499.13 10299.285 10288.30 11054.61 0.916 10/10 18, 74, 115, 129 117.348 0.0591 115.817 0.0616 117.348 0
6 1 equal zero NA -4982.306 89 10142.612 10482.33 10200.016 10207.73 11267.06 0.870 10/10 16, 64, 70, 33, 58, 95 79.371 0.7194 78.335 0.7204 79.371 0
7 1 equal zero NA -4944.716 102 10093.431 10482.78 10159.220 10183.61 11382.12 0.886 5/10 17, 50, 76, 20, 20, 63, 90 75.180 0.2291 74.199 0.2300 75.180 0
2 3 equal equal NA -4917.573 103 10041.146 10434.31 10107.581 10133.49 11342.47 0.862 10/10 97, 239 76.527 0.1675 75.529 0.1721 76.527 0
3 3 equal equal NA -4830.263 116 9892.527 10335.31 9967.346 10016.47 11358.10 1.000 4/10 70, 110, 156 174.620 0.5565 172.341 0.5600 174.620 0
4 3 equal equal NA -4805.529 129 9869.057 10361.47 9952.261 10031.87 11498.87 0.991 2/10 70, 110, 8, 148 49.469 0.4715 48.824 0.4791 49.469 0

The fit statistics don’t suggest a clear pattern.

Perhaps a three profile solution:

plot_profiles_mplus(x, to_center = TRUE)

There really seems to be groups only in terms of overall level of the twelve items; not any combinations of them variables in characteristic ways.

Josh to run content area and grade level

Grade level

Proportion by grade level:

df %>% 
    count(Q7_7)%>% 
    knitr::kable()
Q7_7 n
Other 54
NA 283

There are a number of others, see

df %>% 
    select(Q7_7_TEXT) %>% 
    filter(!is.na(Q7_7_TEXT)) %>% 
    slice(1:25)%>% 
    knitr::kable()
Q7_7_TEXT
K-12 Licensure Area
Specialists
K-12 specialty area and K-12 special education
Special Education
CTE, Special Education, Principals
K-16
Post-Secondary
international teaching assistants
Adults
K-12 special Education teachers
Special Education
Further Education (post high school) but not University/College
I currently work with only in-service teachers.
special education, reading
Higher education/ professors
special education teachers (ages 3-21)
Through our BAES program I also prepare people to work in informal educational settings.
Community College
Informal STEM educators
Special education
Special Education
Special Education
Lateral Entry Beginning Teachers (BT1-BT3)
librarians
parenting educators (licensed)

Let’s look at the counts of the main ones for now:

df %>% 
    select(Q7_1:Q7_4) %>% 
    count(Q7_1, Q7_2,Q7_3, Q7_4) %>% 
    arrange(desc(n))%>% 
    knitr::kable()
Q7_1 Q7_2 Q7_3 Q7_4 n
NA Elementary / primary teachers Middle grades / junior high school teachers Secondary / high school teachers 83
Early childhood teachers Elementary / primary teachers Middle grades / junior high school teachers Secondary / high school teachers 73
NA NA Middle grades / junior high school teachers Secondary / high school teachers 43
NA Elementary / primary teachers NA NA 35
NA NA NA Secondary / high school teachers 32
Early childhood teachers Elementary / primary teachers NA NA 21
NA Elementary / primary teachers Middle grades / junior high school teachers NA 15
NA NA NA NA 13
Early childhood teachers Elementary / primary teachers Middle grades / junior high school teachers NA 7
NA NA Middle grades / junior high school teachers NA 6
Early childhood teachers NA NA NA 3
Early childhood teachers Elementary / primary teachers NA Secondary / high school teachers 2
Early childhood teachers NA Middle grades / junior high school teachers Secondary / high school teachers 2
NA Elementary / primary teachers NA Secondary / high school teachers 2

This is quite messy but I think is instructive; how to process this is a bit tricky.

Content area

There are a bunch of others:

df %>%
    count(Q8_12)%>% 
    knitr::kable()
Q8_12 n
Other 64
NA 273

Some specifics:

df %>% 
    select(Q8_12_TEXT) %>% 
    filter(!is.na(Q8_12_TEXT)) %>% 
    slice(1:25) %>% 
    knitr::kable()
Q8_12_TEXT
Math/science and social-emotional within early childhood, but it’s fairly interdisciplinary
Business
Literacy
ESL/Bilingual Education
educational technology
ESL
Curriculum and Instruction
Some specialism in ICT/Computing
Digital Learning
Pedagogy
LIbrary Media Specialist
Literacy
Ethics
Reading
Teaching English as a Second Language
Leadership
ELL
classroom mangement
Biology
Multicultural
English as a Second Language
Engineering
ESOL
Literacy
I teach child development and family engagement courses within teacher ed programs
df %>%
    select(Q8_1:Q8_11) %>% 
    count( Q8_1,Q8_2,Q8_3,Q8_4, Q8_5,  Q8_6,  Q8_7, Q8_8, Q8_9 ,Q8_10,Q8_11) %>% 
    arrange(desc(n))%>% 
    knitr::kable()
Q8_1 Q8_2 Q8_3 Q8_4 Q8_5 Q8_6 Q8_7 Q8_8 Q8_9 Q8_10 Q8_11 n
NA NA NA NA NA NA NA NA NA NA NA 79
NA NA NA NA NA NA NA NA NA NA Technology 42
NA NA Science NA NA NA NA NA NA NA NA 37
English / Language Arts NA NA NA NA NA NA NA NA NA NA 34
NA NA NA NA NA NA NA NA Special Education NA NA 24
NA NA NA History / Social Studies NA NA NA NA NA NA NA 23
NA Mathematics NA NA NA NA NA NA NA NA NA 18
NA Mathematics Science NA NA NA NA NA NA NA NA 9
NA NA Science NA NA NA NA NA NA NA Technology 6
English / Language Arts NA NA NA NA NA NA NA NA NA Technology 5
NA NA NA NA NA Music NA NA NA NA NA 4
NA NA NA NA NA NA NA NA NA Career Technical Education NA 4
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health Music Fine Arts World Languages Special Education NA Technology 3
NA NA NA NA Physical Education & Health NA NA NA NA NA NA 3
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health NA NA NA NA NA NA 2
English / Language Arts Mathematics Science History / Social Studies NA NA Fine Arts NA NA NA NA 2
English / Language Arts Mathematics Science History / Social Studies NA NA NA World Languages NA NA NA 2
English / Language Arts NA NA NA NA NA NA NA Special Education NA NA 2
NA Mathematics Science NA NA NA NA NA Special Education NA NA 2
NA NA NA History / Social Studies NA NA NA NA NA NA Technology 2
NA NA NA NA NA NA NA NA Special Education NA Technology 2
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health Music Fine Arts World Languages Special Education Career Technical Education Technology 1
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health Music Fine Arts World Languages Special Education NA NA 1
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health Music Fine Arts World Languages NA NA NA 1
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health Music NA World Languages Special Education Career Technical Education Technology 1
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health Music NA World Languages Special Education NA NA 1
English / Language Arts Mathematics Science History / Social Studies Physical Education & Health NA Fine Arts NA Special Education NA Technology 1
English / Language Arts Mathematics Science History / Social Studies NA NA NA World Languages Special Education NA NA 1
English / Language Arts Mathematics Science History / Social Studies NA NA NA NA NA NA NA 1
English / Language Arts Mathematics Science NA Physical Education & Health NA NA NA NA NA NA 1
English / Language Arts Mathematics Science NA NA NA NA NA Special Education NA NA 1
English / Language Arts Mathematics NA History / Social Studies NA NA NA NA NA NA NA 1
English / Language Arts Mathematics NA NA Physical Education & Health NA NA NA NA NA Technology 1
English / Language Arts Mathematics NA NA NA NA NA NA Special Education NA NA 1
English / Language Arts Mathematics NA NA NA NA NA NA NA NA NA 1
English / Language Arts NA NA History / Social Studies NA NA Fine Arts NA Special Education NA NA 1
English / Language Arts NA NA History / Social Studies NA NA NA World Languages NA NA Technology 1
English / Language Arts NA NA History / Social Studies NA NA NA NA Special Education NA NA 1
English / Language Arts NA NA History / Social Studies NA NA NA NA NA NA Technology 1
English / Language Arts NA NA History / Social Studies NA NA NA NA NA NA NA 1
English / Language Arts NA NA NA NA Music Fine Arts NA NA NA NA 1
English / Language Arts NA NA NA NA NA NA NA Special Education NA Technology 1
NA Mathematics Science History / Social Studies NA NA NA NA NA NA NA 1
NA Mathematics Science NA NA NA NA NA NA NA Technology 1
NA Mathematics NA NA NA NA NA NA Special Education NA Technology 1
NA Mathematics NA NA NA NA NA NA NA NA Technology 1
NA NA Science NA NA NA NA NA Special Education NA NA 1
NA NA NA History / Social Studies NA NA NA NA Special Education NA Technology 1
NA NA NA NA Physical Education & Health NA NA NA NA NA Technology 1
NA NA NA NA NA Music Fine Arts NA NA NA NA 1
NA NA NA NA NA NA Fine Arts NA NA NA NA 1
NA NA NA NA NA NA NA World Languages NA NA NA 1
NA NA NA NA NA NA NA NA NA Career Technical Education Technology 1

A big mess, but perhaps instructive, still.