View source: R/network.predictability.R
network.predictability | R Documentation |
General function to compute a network's predictive power on new data, following Haslbeck and Waldorp (2018) and Williams and Rodriguez (2022)
This implementation is different from the predictability
in the mgm
package
(Haslbeck), which is based on (regularized) regression. This implementation uses
the network directly, converting the partial correlations into an implied
precision (inverse covariance) matrix. See Details for more information
network.predictability(network, original.data, newdata, ordinal.categories = 7)
network |
Matrix or data frame. A partial correlation network |
original.data |
Matrix or data frame.
Must consist only of variables to be used to estimate the |
newdata |
Matrix or data frame.
Must consist of the same variables in the same order as |
ordinal.categories |
Numeric (length = 1).
Up to the number of categories before a variable is considered continuous.
Defaults to |
This implementation of network predictability proceeds in several steps with important assumptions:
1. Network was estimated using (partial) correlations (not regression like the
mgm
package!)
2. Original data that was used to estimate the network in 1. is necessary to apply the original scaling to the new data
3. (Linear) regression-like coefficients are obtained by reserve engineering the
inverse covariance matrix using the network's partial correlations (i.e.,
by setting the diagonal of the network to -1 and computing the inverse
of the opposite signed partial correlation matrix; see EGAnet:::pcor2inv
)
4. Predicted values are obtained by matrix multiplying the new data with these coefficients
5. Dichotomous and polytomous data are given categorical values based on the original data's thresholds and these thresholds are used to convert the continuous predicted values into their corresponding categorical values
6. Evaluation metrics:
dichotomous — "Accuracy"
or the percent correctly predicted for the 0s and 1s
and "Kappa"
or Cohen's Kappa (see cite)
polytomous — "Linear Kappa"
or linearly weighted Kappa and
"Krippendorff's alpha"
(see cite)
continuous — R-squared ("R2"
) and root mean square error ("RMSE"
)
Returns a list containing:
predictions |
Predicted values of |
betas |
Beta coefficients derived from the |
results |
Performance metrics for each variable in |
Hudson Golino <hfg9s at virginia.edu> and Alexander P. Christensen <alexpaulchristensen@gmail.com>
Original Implementation of Node Predictability
Haslbeck, J. M., & Waldorp, L. J. (2018).
How well do network models predict observations? On the importance of predictability in network models.
Behavior Research Methods, 50(2), 853–861.
Derivation of Regression Coefficients Used (Formula 3)
Williams, D. R., & Rodriguez, J. E. (2022).
Why overfitting is not (usually) a problem in partial correlation networks.
Psychological Methods, 27(5), 822–840.
Cohen's Kappa
Cohen, J. (1960). A coefficient of agreement for nominal scales.
Educational and Psychological Measurement, 20(1), 37-46.
Cohen, J. (1968). Weighted kappa: nominal scale agreement provision for scaled disagreement or partial credit. Psychological Bulletin, 70(4), 213-220.
Krippendorff's alpha
Krippendorff, K. (2013).
Content analysis: An introduction to its methodology (3rd ed.).
Thousand Oaks, CA: Sage.
# Load data
wmt <- wmt2[,7:24]
# Set seed (to reproduce results)
set.seed(42)
# Split data
training <- sample(
1:nrow(wmt), round(nrow(wmt) * 0.80) # 80/20 split
)
# Set splits
wmt_train <- wmt[training,]
wmt_test <- wmt[-training,]
# EBICglasso (default for EGA functions)
glasso_network <- network.estimation(
data = wmt_train, model = "glasso"
)
# Check predictability
network.predictability(
network = glasso_network, original.data = wmt_train,
newdata = wmt_test
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.