knitr::opts_chunk$set(echo = T, message = F, warning = F, error = F, fig.width=7, fig.height=6)
library(tidyverse) 
library(psych)
install.packages("gtheory")
Error in install.packages : Updating loaded packages
library(gtheory)
task1_data <- read_csv("/Users/cyroasseodechoch/Downloads/asg_3_task_1.csv")
Rows: 12930 Columns: 3
── Column specification ─────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (1): Question
dbl (2): Student, Score

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
task2_data <- read_csv("/Users/cyroasseodechoch/Downloads/asg_3_task_2.csv")
Rows: 1293 Columns: 10
── Column specification ─────────────────────────────────────────────────────────────────────
Delimiter: ","
dbl (10): Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(gtheory)

task1_data <- task1_data %>%
  mutate(Question = as.factor(Question))

formula <- Score ~ (1 | Student) + (1 | Question)

gstudy_results <- gstudy(data = task1_data, formula = formula)
gstudy_results$components
dstudy_results_10 <- dstudy(gstudy_results, facets = "Question", n.facets = c(10), colname.objects = "Student")
round(dstudy_results_10$generalizability, 3)
[1] 0.735
dstudy_results_8 <- dstudy(gstudy_results, facets = "Question", n.facets = c(8), colname.objects = "Student")
round(dstudy_results_8$generalizability, 3)
[1] 0.735
dstudy_results_5 <- dstudy(gstudy_results, facets = "Question", n.facets = c(5), colname.objects = "Student")
round(dstudy_results_5$generalizability, 3)
[1] 0.735
if (!requireNamespace("lavaan", quietly = TRUE)) {
  install.packages("lavaan")
}
library(lavaan)

anxiety_model <- 'anxiety =~ Q1 + Q2 + Q3 + Q4 + Q5 + Q6 + Q7 + Q8 + Q9 + Q10'

cfa_fit <- cfa(anxiety_model, data = task2_data)

summary(cfa_fit, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 26 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        20

  Number of observations                          1293

Model Test User Model:
                                                      
  Test statistic                               733.109
  Degrees of freedom                                35
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                             14210.598
  Degrees of freedom                                45
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.951
  Tucker-Lewis Index (TLI)                       0.937

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -16477.911
  Loglikelihood unrestricted model (H1)     -16111.356
                                                      
  Akaike (AIC)                               32995.822
  Bayesian (BIC)                             33099.117
  Sample-size adjusted Bayesian (SABIC)      33035.586

Root Mean Square Error of Approximation:

  RMSEA                                          0.124
  90 Percent confidence interval - lower         0.116
  90 Percent confidence interval - upper         0.132
  P-value H_0: RMSEA <= 0.050                    0.000
  P-value H_0: RMSEA >= 0.080                    1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.027

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Expected
  Information saturated (h1) model          Structured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  anxiety =~                                                            
    Q1                1.000                               1.282    0.871
    Q2                0.797    0.021   38.422    0.000    1.022    0.810
    Q3                1.008    0.028   35.588    0.000    1.293    0.775
    Q4                1.056    0.023   45.703    0.000    1.353    0.885
    Q5                0.898    0.020   44.856    0.000    1.150    0.877
    Q6                1.016    0.022   47.109    0.000    1.303    0.898
    Q7                1.033    0.024   43.887    0.000    1.324    0.868
    Q8                0.906    0.022   40.625    0.000    1.161    0.834
    Q9                1.028    0.021   49.511    0.000    1.318    0.918
    Q10               1.070    0.024   44.271    0.000    1.372    0.872

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .Q1                0.523    0.023   22.876    0.000    0.523    0.242
   .Q2                0.549    0.023   23.885    0.000    0.549    0.345
   .Q3                1.113    0.046   24.211    0.000    1.113    0.400
   .Q4                0.506    0.022   22.485    0.000    0.506    0.217
   .Q5                0.396    0.017   22.711    0.000    0.396    0.230
   .Q6                0.409    0.019   22.050    0.000    0.409    0.194
   .Q7                0.574    0.025   22.944    0.000    0.574    0.247
   .Q8                0.588    0.025   23.566    0.000    0.588    0.304
   .Q9                0.325    0.015   21.075    0.000    0.325    0.158
   .Q10               0.594    0.026   22.855    0.000    0.594    0.240
    anxiety           1.643    0.083   19.728    0.000    1.000    1.000
if (!requireNamespace("semTools", quietly = TRUE)) {
  install.packages("semTools")
}
library(semTools)

reliability_results <- compRelSEM(cfa_fit)
reliability_results
anxiety 
  0.966 
LS0tCnRpdGxlOiAiSFdJSUkiCmRhdGU6IDExLzEwLzIwMjQKYXV0aG9yOiAiQ3lybyBBc3NlbyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9VH0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBULCBtZXNzYWdlID0gRiwgd2FybmluZyA9IEYsIGVycm9yID0gRiwgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9NikKYGBgCgoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKSAKbGlicmFyeShwc3ljaCkKaW5zdGFsbC5wYWNrYWdlcygiZ3RoZW9yeSIpCmxpYnJhcnkoZ3RoZW9yeSkKYGBgCgpgYGB7cn0KdGFzazFfZGF0YSA8LSByZWFkX2NzdigiL1VzZXJzL2N5cm9hc3Nlb2RlY2hvY2gvRG93bmxvYWRzL2FzZ18zX3Rhc2tfMS5jc3YiKQp0YXNrMl9kYXRhIDwtIHJlYWRfY3N2KCIvVXNlcnMvY3lyb2Fzc2VvZGVjaG9jaC9Eb3dubG9hZHMvYXNnXzNfdGFza18yLmNzdiIpCmBgYAoKYGBge3J9CmxpYnJhcnkoZ3RoZW9yeSkKCnRhc2sxX2RhdGEgPC0gdGFzazFfZGF0YSAlPiUKICBtdXRhdGUoUXVlc3Rpb24gPSBhcy5mYWN0b3IoUXVlc3Rpb24pKQoKZm9ybXVsYSA8LSBTY29yZSB+ICgxIHwgU3R1ZGVudCkgKyAoMSB8IFF1ZXN0aW9uKQoKZ3N0dWR5X3Jlc3VsdHMgPC0gZ3N0dWR5KGRhdGEgPSB0YXNrMV9kYXRhLCBmb3JtdWxhID0gZm9ybXVsYSkKZ3N0dWR5X3Jlc3VsdHMkY29tcG9uZW50cwpgYGAKYGBge3J9CmRzdHVkeV9yZXN1bHRzXzEwIDwtIGRzdHVkeShnc3R1ZHlfcmVzdWx0cywgZmFjZXRzID0gIlF1ZXN0aW9uIiwgbi5mYWNldHMgPSBjKDEwKSwgY29sbmFtZS5vYmplY3RzID0gIlN0dWRlbnQiKQpyb3VuZChkc3R1ZHlfcmVzdWx0c18xMCRnZW5lcmFsaXphYmlsaXR5LCAzKQoKZHN0dWR5X3Jlc3VsdHNfOCA8LSBkc3R1ZHkoZ3N0dWR5X3Jlc3VsdHMsIGZhY2V0cyA9ICJRdWVzdGlvbiIsIG4uZmFjZXRzID0gYyg4KSwgY29sbmFtZS5vYmplY3RzID0gIlN0dWRlbnQiKQpyb3VuZChkc3R1ZHlfcmVzdWx0c184JGdlbmVyYWxpemFiaWxpdHksIDMpCgpkc3R1ZHlfcmVzdWx0c181IDwtIGRzdHVkeShnc3R1ZHlfcmVzdWx0cywgZmFjZXRzID0gIlF1ZXN0aW9uIiwgbi5mYWNldHMgPSBjKDUpLCBjb2xuYW1lLm9iamVjdHMgPSAiU3R1ZGVudCIpCnJvdW5kKGRzdHVkeV9yZXN1bHRzXzUkZ2VuZXJhbGl6YWJpbGl0eSwgMykKYGBgCgpgYGB7cn0KaWYgKCFyZXF1aXJlTmFtZXNwYWNlKCJsYXZhYW4iLCBxdWlldGx5ID0gVFJVRSkpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJsYXZhYW4iKQp9CmxpYnJhcnkobGF2YWFuKQoKYW54aWV0eV9tb2RlbCA8LSAnYW54aWV0eSA9fiBRMSArIFEyICsgUTMgKyBRNCArIFE1ICsgUTYgKyBRNyArIFE4ICsgUTkgKyBRMTAnCgpjZmFfZml0IDwtIGNmYShhbnhpZXR5X21vZGVsLCBkYXRhID0gdGFzazJfZGF0YSkKCnN1bW1hcnkoY2ZhX2ZpdCwgZml0Lm1lYXN1cmVzID0gVFJVRSwgc3RhbmRhcmRpemVkID0gVFJVRSkKYGBgCgoKYGBge3J9CmlmICghcmVxdWlyZU5hbWVzcGFjZSgic2VtVG9vbHMiLCBxdWlldGx5ID0gVFJVRSkpIHsKICBpbnN0YWxsLnBhY2thZ2VzKCJzZW1Ub29scyIpCn0KbGlicmFyeShzZW1Ub29scykKCnJlbGlhYmlsaXR5X3Jlc3VsdHMgPC0gY29tcFJlbFNFTShjZmFfZml0KQpyZWxpYWJpbGl0eV9yZXN1bHRzCmBgYAoK