xmu_topo_sort: Topologically sort a graph based on from and to paths

View source: R/xmu.R

xmu_topo_sortR Documentation

Topologically sort a graph based on from and to paths

Description

Performs a topological sort on a set of nodes based on directional paths. In structural equation modeling, processing sources (exogenous variables) first and sinks (endogenous variables) last often ensures the A matrix is strictly lower triangular (Recursive (acyclic) models are those whose path matrix can be arranged lower triangular). This both speeds optimization (a triangular A inverts as a finite series (Bollen, 1989; Kahn, 1962; Neale et al., 2016). OpenMx detects when A is strictly lower-triangular and uses a finite series to invert (I - A) rather than (slower) general inversion.

However, it also improves discovery: small but real path weights (such as we encounter in umxGSEM()) get clean gradient signal instead of stalling at local minima in the dense coupled inverse. umx implements this rearrangement in umxRAM() and umxRAM_DE().

Usage

xmu_topo_sort(from, to, nodes)

Arguments

from

Character vector of source nodes.

to

Character vector of destination nodes.

nodes

Character vector of all nodes to sort.

Value

A character vector of the nodes sorted topologically. Nodes not involved in paths are appended.

References

  • Bollen, K. A. (1989). Structural Equations with Latent Variables. Wiley.

  • Kahn, A. B. (1962). Topological sorting of large networks. Communications of the ACM, 5, 558-562. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1145/368996.369025")}

  • Neale, M. C., Hunter, M. D., Pritikin, J. N., Zahery, M., Brick, T. R., Kirkpatrick, R. M., Estabrook, R., Bates, T. C., Maes, H. H., & Boker, S. M. (2016). OpenMx 2.0: Extended structural equation and statistical modeling. Psychometrika. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/s11336-014-9435-8")}.

See Also

Other xmu internal not for end user: mx_make(), umxModel(), umxRenameMatrix(), umx_APA_pval(), umx_fun_mean_sd(), umx_get_bracket_addresses(), umx_make(), umx_standardize(), umx_string_to_algebra(), xmuHasSquareBrackets(), xmuLabel_MATRIX_Model(), xmuLabel_Matrix(), xmuLabel_RAM_Model(), xmuMI(), xmuMakeOneHeadedPathsFromPathList(), xmuMakeTwoHeadedPathsFromPathList(), xmuMaxLevels(), xmuMinLevels(), xmuPropagateLabels(), xmuRAM2Ordinal(), xmuTwinSuper_Continuous(), xmuTwinSuper_NoBinary(), xmuTwinUpgradeMeansToCovariateModel(), xmu_CI_merge(), xmu_CI_stash(), xmu_DF_to_mxData_TypeCov(), xmu_PadAndPruneForDefVars(), xmu_WLS_align_jacobian(), xmu_WLS_align_weight(), xmu_WLS_polycor_names(), xmu_ace_de_apply_censor_thresholds(), xmu_ace_de_parse_censor_meta(), xmu_ace_de_parse_censor_rule(), xmu_ace_de_release_binary_v1(), xmu_bracket_address2rclabel(), xmu_catml_df3_diagnostic(), xmu_catml_discrepancy_at_WLS(), xmu_catml_eval_model(), xmu_catml_implied_correlation(), xmu_catml_wls_v(), xmu_cell_is_on(), xmu_check_levels_identical(), xmu_check_needs_means(), xmu_check_variance(), xmu_clean_label(), xmu_compare_constraint_note(), xmu_compare_robust_ML(), xmu_data_missing(), xmu_data_swap_a_block(), xmu_describe_data_WLS(), xmu_dot_make_paths(), xmu_dot_make_residuals(), xmu_dot_maker(), xmu_dot_move_ranks(), xmu_dot_rank_str(), xmu_extract_column(), xmu_get_CI(), xmu_has_summary_mxData(), xmu_invert_matrix(), xmu_is_ordinal_WLS(), xmu_lavaan_process_group(), xmu_make_TwinSuperModel(), xmu_make_bin_cont_pair_data(), xmu_make_mxData(), xmu_match.arg(), xmu_mxData_summary(), xmu_mxRefModels(), xmu_name_from_lavaan_str(), xmu_path2twin(), xmu_path_regex(), xmu_print_algebras(), xmu_ram_de_apply_censor_thresholds(), xmu_ram_de_parse_censor_meta(), xmu_rclabel_2_bracket_address(), xmu_relevel_factors(), xmu_require_summary_mxData(), xmu_robust_ML_fit(), xmu_safe_run_summary(), xmu_savalei_fit_cfi(), xmu_savalei_fit_rmsea(), xmu_savalei_fit_tli(), xmu_savalei_null_scaling_factor(), xmu_savalei_polycor_blocks(), xmu_savalei_scaling_factor(), xmu_set_sep_from_suffix(), xmu_show_fit_or_comparison(), xmu_simplex_corner(), xmu_standardize_ACE(), xmu_standardize_ACEcov(), xmu_standardize_ACEv(), xmu_standardize_CP(), xmu_standardize_IP(), xmu_standardize_LISREL(), xmu_standardize_RAM(), xmu_standardize_SexLim(), xmu_standardize_Simplex(), xmu_start_value_list(), xmu_starts(), xmu_summary_RAM_group_parameters(), xmu_threshold_id_RAM(), xmu_threshold_id_twin_check(), xmu_twin_add_WeightMatrices(), xmu_twin_check(), xmu_twin_get_var_names(), xmu_twin_make_def_means_mats_and_alg(), xmu_twin_upgrade_selDvs2SelVars(), xmu_update_covar(), xmu_wls_display_chi(), xmu_wls_extract_WV()


umx documentation built on Oct. 11, 2026, 5:07 p.m.