Nothing
"print_psych.omega" <-
function(x,digits=2,all=FALSE,cut=NULL,sort=FALSE,...) {
xx <- x
if(!is.null(x$ci)) {
x <- x$om}
if(is.null(cut)) cut <- .2
cat( x$title,"\n")
cat("Call: ")
print(x$call)
cat("Alpha: ",round(x$alpha,digits),"\n")
cat("G.6: ",round(x$G6,digits),"\n")
cat("Omega Hierarchical: " ,round(x$omega_h,digits),"\n")
cat("Omega H asymptotic: " ,round(x$omega.lim,digits),"\n")
cat("Omega Total " ,round(x$omega.tot,digits),"\n")
cat("\nSchmid Leiman Factor loadings greater than ",cut, "\n")
loads <- x$schmid$sl
nfactor <- ncol(loads)-3
if(sort) {
ord <- sort(abs(loads[,1]),decreasing=TRUE,index.return=TRUE)
loads[,] <- loads[ord$ix,]
rownames(loads) <- rownames(loads)[ord$ix]
loads <- cbind(v=ord$ix,loads)
} #end sort
tn <- colnames(loads)
loads <- data.frame(loads)
colnames(loads) <- tn #this seems weird, but otherwise we lose the F* name
if(sort) {loads[,1] <- as.integer(loads[,1])
load.2 <- loads[,2:(nfactor+1)]} else {load.2 <- loads[,1:nfactor] }
h2 <- round(loads[,"h2"],digits)
u2 <- round(loads[,"u2"],digits)
loads <-round(loads,digits)
fx <- format(loads,digits=digits)
nc <- nchar(fx[1,3], type = "c")
fx[abs(loads)< cut] <- paste(rep(" ", nc), collapse = "")
p2 <- loads[,"p2"]
mp2 <- mean(p2)
vp2 <- var(p2)
p2 <- round(p2,digits)
print(cbind(fx[,1:(nfactor+sort)],h2,u2,p2),quote="FALSE")
numfactors <- dim(x$schmid$sl)[2] -3
eigenvalues <- diag(t(x$schmid$sl[,1:numfactors]) %*% x$schmid$sl[,1:numfactors])
cat("\nWith Sums of squares of:\n")
ev.rnd <- round(eigenvalues,digits)
print(ev.rnd,digits=digits)
maxmin <- max(eigenvalues[2:numfactors])/min(eigenvalues[2:numfactors])
gmax <- eigenvalues[1]/max(eigenvalues[2:numfactors])
cat("\ngeneral/max " ,round(gmax,digits)," max/min = ",round(maxmin,digits))
cat("\nmean percent general = ",round(mp2,digits), " with sd = ", round(sqrt(vp2),digits), "and cv of ",round(sqrt(vp2)/mp2,digits),"\n")
if(!is.null(x$ECV)) cat("Explained Common Variance of the general factor = ", round(x$ECV,digits),"\n")
if(!is.null(x$schmid$dof)) {cat("\nThe degrees of freedom are",x$schmid$dof," and the fit is ",round(x$schmid$objective,digits),"\n")
if(!is.null(x$schmid$n.obs)&&!is.na(x$schmid$n.obs)) {cat("The number of observations was ",x$schmid$n.obs, " with Chi Square = ",round(x$schmid$STATISTIC,digits), " with prob < ", signif(x$schmid$PVAL,digits))}
}
if(!is.null(x$schmid$rms)) {cat("\nThe root mean square of the residuals is ", round(x$schmid$rms,digits),"\n") }
if(!is.null(x$schmid$crms)) {cat("The df corrected root mean square of the residuals is ", round(x$schmid$crms,digits)) }
if(!is.null(x$schmid$RMSEA)) {cat("\nRMSEA index = ",round(x$schmid$RMSEA[1],digits+1), " and the", (1- x$schmid$RMSEA[4])*100,"% confidence intervals are ",round(x$schmid$RMSEA[2:3],digits+1)) }
if(!is.null(x$schmid$BIC)) {cat("\nBIC = ",round(x$schmid$BIC,digits))}
cat("\n\nCompare this with the adequacy of just a general factor and no group factors")
if(!is.null(x$gstats$dof)) {cat("\nThe degrees of freedom for just the general factor are",x$gstats$dof," and the fit is ",round(x$gstats$objective,digits),"\n")
if(!is.null(x$gstats$n.obs)&&!is.na(x$gstats$n.obs)) {cat("The number of observations was ",x$gstats$n.obs, " with Chi Square = ",round(x$gstats$STATISTIC,digits), " with prob < ", signif(x$gstats$PVAL,digits))}
}
if(!is.null(x$gstats$rms)) {cat("\nThe root mean square of the residuals is ", round(x$gstats$rms,digits),"\n") }
if(!is.null(x$gstats$crms)) {cat("The df corrected root mean square of the residuals is ", round(x$gstats$crms,digits),"\n") }
if(!is.null(x$gstats$RMSEA)) {cat("\nRMSEA index = ",round(x$gstats$RMSEA[1],digits+1), " and the", (1- x$gstats$RMSEA[4])*100,"% confidence intervals are ",round(x$gstats$RMSEA[2:3],digits+1)) }
if(!is.null(x$gstats$BIC)) {cat("\nBIC = ",round(x$gstats$BIC,digits),"\n")}
stats.df <- t(data.frame(sqrt(x$stats$R2),x$stats$R2,2*x$stats$R2 -1))
cat("\nMeasures of factor score adequacy \n")
rownames(stats.df) <- c("Correlation of scores with factors ","Multiple R square of scores with factors ","Minimum correlation of factor score estimates")
print(round(stats.df,digits))
#cat("\nMeasures of factor score adequacy ",names(eigenvalues))
#cat("\nCorrelation of scores with factors ",round(sqrt(x$stats$R2),digits))
#cat("\nMultiple R square of scores with factors " ,round(x$stats$R2,digits))
#cat("\nMinimum correlation of factor score estimates ", round(2*x$stats$R2 -1,digits),"\n")
cat("\n Total, General and Subset omega for each subset\n")
colnames(x$omega.group) <- c("Omega total for total scores and subscales","Omega general for total scores and subscales ", "Omega group for total scores and subscales")
print(round(t(x$omega.group),digits))
#now, see if there are any confidence intervals to report
if(!is.null(xx$ci)) {
cat("\n Estimates and bootstrapped confidence intervals\n")
li <- data.frame(lower=xx$ci$ci[,1],estimate=xx$ci$means,upper=xx$ci$ci[,2])
li[1,2] <- x$omega_h
li[2,2] <- x$alpha
li[3,2] <- x$omega.tot
li[4,2] <- x$G6
li[5,2] <- x$omega.lim
print(li,digits=digits)}
}
"print_psych.omegaSem" <-
function(x,digits=2,all=FALSE,cut=NULL,sort=FALSE,...) {
if(is.null(cut)) cut <- .2
cat( x$title,"\n")
if(!is.null(x$Call)) {# we have run this from omegaSem so we should print omega results first
cat("Call: ")
print(x$Call)
print_psych.omega(x$omegaSem,digits=digits,all=all,cut=cut,sort=sort,...)
x <- x$omega.efa
}
loads <- x$cfa.loads
class(loads) <- NULL
nfactor <- ncol(loads)
cat("\n The following analyses were done using the ", x$sem," package \n")
if(nfactor > 1) { cat("\n Omega Hierarchical from a confirmatory model using sem = ", round(x$omega,digits)) } else {
cat("\n With only 1 factor specified in the sem model, we can only calculate omega Total.\n You should probably rerun the sem specifying either a bifactor or hierarchical model.\n") }
cat("\n Omega Total from a confirmatory model using sem = ", round(x$omega.tot,digits),"\n")
cat("With loadings of \n")
loads <- data.frame(loads)
if(nfactor > 1) {
tn <- c("g", paste0("F",1:(nfactor-1),"*"))
colnames(loads) <- tn } #this seems weird, but otherwise we lose the F* name }
load.2 <- as.matrix(loads)
h2 <- round(rowSums(load.2^2),digits)
loads <- round(loads,digits)
fx <- format(loads,digits=digits)
if(nfactor > 1 ) {
nc <- nchar(fx[1,3], type = "c")
fx[abs(loads)< cut] <- paste(rep(" ", nc), collapse = "")}
h2 <- round(rowSums(load.2^2),digits)
u2 <- 1 - h2
p2 <- loads[,1]^2/h2
mp2 <- mean(p2)
vp2 <- var(p2)
p2 <- round(p2,digits)
print(cbind(fx,h2,u2,p2),quote="FALSE")
loads <- as.matrix(load.2)
eigenvalues <- diag(t(loads) %*% loads)
cat("\nWith sum of squared loadings of:\n")
ev.rnd <- round(eigenvalues,digits)
print(ev.rnd,digits=digits)
maxmin <- max(eigenvalues[2:nfactor])/min(eigenvalues[2:nfactor])
gmax <- eigenvalues[1]/max(eigenvalues[2:nfactor])
ECV <- eigenvalues[1]/sum(eigenvalues)
if(!is.null(x$Fit)) {
cat("\nThe degrees of freedom of the confirmatory model are ",x$Fit[[1]]$df, " and the fit is ", x$Fit[[1]]$stat, " with p = ",x$Fit[[1]]$pvalue)
}
cat("\ngeneral/max " ,round(gmax,digits)," max/min = ",round(maxmin,digits))
cat("\nmean percent general = ",round(mp2,digits), " with sd = ", round(sqrt(vp2),digits), "and cv of ",round(sqrt(vp2)/mp2,digits),"\n")
cat("Explained Common Variance of the general factor = ", round(ECV,digits),"\n")
if(nfactor > 1) {
cat("\nMeasures of factor score adequacy \n")
# rownames(stats.df) <- c("Correlation of scores with factors ","Multiple R square of scores with factors ","Minimum correlation of factor score estimates")
fsa.df <- t(data.frame(sqrt(x$gR2),x$gR2,2*x$gR2 -1))
rownames(fsa.df) <- c("Correlation of scores with factors ","Multiple R square of scores with factors ","Minimum correlation of factor score estimates")
colnames(fsa.df) <- tn
print(round(fsa.df,digits))
cat("\n Total, General and Subset omega for each subset\n")
colnames(x$omega.group) <- c("Omega total for total scores and subscales","Omega general for total scores and subscales ", "Omega group for total scores and subscales")
rownames(x$omega.group) <- tn
print(round(t(x$omega.group),digits))
}
cat("\nTo get the standard sem fit statistics, ask for summary on the fitted object")
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.