37.5 Traiettorie di sviluppo

Possiamo visualizzare le traiettorie previste dei punteggi fattoriali nel modo seguente.

# extract predicted factor scores
pred <- as.data.frame(lavPredict(fit_growth))

# define function to fit factor trajectories
fit.line <- function(xi1, xi2, t) {
  xi1 + xi2 * t
}
time <- c(0, .524, 1)

# fit trajectories using estimated factor scores
out <- NULL
temp <- NULL
for (i in 1:nrow(pred)) {
  temp <- fit.line(pred$xi_1[i], pred$xi_2[i], time)
  out <- rbind(out, temp)
}
out <- as.data.frame(out)
colnames(out) <- c("pred3", "pred5", "pred8")
out$ID <- dat$id

# reshape estimated scores to long format (for plotting)
outlong <- reshape(out,
  varying = c("pred3", "pred5", "pred8"),
  timevar = "grade",
  idvar = "ID",
  direction = "long", sep = ""
)
outlong <- outlong[order(outlong$ID, outlong$grade), ]

# fit average trajectory (for plotting)
avg <- as.data.frame(fit.line(0, 1.947, time))
avg$grade <- c(3, 5, 8)
avg$ID <- 1
colnames(avg) <- c("fit", "grade", "ID")

# plot predicted common factor trajectories (average in red)
ggplot(data = outlong, aes(x = grade, y = pred, group = ID)) +
  ggtitle("Predicted Trajectories: Second Order Growth Model") +
  xlab("Grade") +
  ylab("Predicted Academic Achievement Factor Score") +
  geom_line() +
  geom_line(data = avg, aes(x = grade, y = fit, group = ID), color = "red", size = 2)