R Under development (unstable) (2024-02-29 r86017 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > # Tests here only compare against values computed previously with this code, > # to ensure there was no accidental change. It would be better to have > # comparisons with known correct values. > > # Test for oblimax is commented out as it appears to be unstable. > > > Sys.getenv("R_LIBS") [1] "D:\\temp\\Rtmpqiwotp\\RLIBS_256f87557c21" > library() > require("GPArotation") Loading required package: GPArotation > search() [1] ".GlobalEnv" "package:GPArotation" "package:stats" [4] "package:graphics" "package:grDevices" "package:utils" [7] "package:datasets" "package:methods" "Autoloads" [10] "package:base" > Sys.info() sysname release version nodename machine "Windows" "Server x64" "build 20348" "CRANWIN3" "x86-64" login user effective_user "CRAN" "CRAN" "CRAN" > > require("stats") > require("GPArotation") > > fuzz <- 1e-6 > all.ok <- TRUE > > > data(ability.cov) > L <- loadings(factanal(factors = 2, covmat=ability.cov)) > > > if( 0.001 < max(abs(varimax(L, normalize=FALSE)$loadings - + Varimax(L, normalize=FALSE)$loadings))) { + cat("Calculated difference exceeds tolerance\n") + cat("difference:\n") + print(varimax(L, normalize=FALSE)$loadings - + Varimax(L, normalize=FALSE)$loadings, digits=18) + all.ok <- FALSE + } > > if( 0.01 < max(abs(varimax(L, normalize=TRUE)$loadings - + Varimax(L, normalize=TRUE, eps=1e-5)$loadings))) { + cat("Calculated difference exceeds tolerance\n") + cat("difference:\n") + print(varimax(L, normalize=TRUE)$loadings - + Varimax(L, normalize=TRUE, eps=1e-5)$loadings, digits=18) + all.ok <- FALSE + } > > > v <- oblimin(L, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.3863615904740822504, 0.4745127741495974161, + -0.0110059418769087539, 0.6458720769633764514, + -0.0262926272350604423, 0.8961141105684561348, + -0.0180200526810754824, 0.4882928281695405048, + 0.9900944939102318543, -0.0370718282544326011, + 0.7905657274265397438, 0.0526109550054999417 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 1. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > v <- oblimin(L, gam = 1, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.2160827, 0.5403732, + -0.4787025, 1.0224006, + -0.6800410, 1.4244177, + -0.3758706, 0.7781390, + 1.4517362, -0.5873946, + 1.1002585, -0.3396290 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 1-gam=1. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > v <- oblimin(L, gam = .1, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.37893531, 0.47408606, + -0.02465543, 0.65257986, + -0.04530330, 0.90557045, + -0.02840333, 0.49349573, + 0.99740452, -0.05088932, + 0.79467442, 0.04241284 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 1-gam=.1. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > > v <- quartimin(L, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.3863615904740822504, 0.4745127741495974161, + -0.0110059418769087539, 0.6458720769633764514, + -0.0262926272350604423, 0.8961141105684561348, + -0.0180200526810754824, 0.4882928281695405048, + 0.9900944939102318543, -0.0370718282544326011, + 0.7905657274265397438, 0.0526109550054999417 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 2. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- targetT(L, Target=matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + eps=1e-5)$loadings > tst <- t(matrix(c( + 0.551529228817982942, 0.4905002767031292898, + 0.217748645523411000, 0.6027046291262584399, + 0.291173432863349457, 0.8348885228488550636, + 0.154994397662456290, 0.4544843569140373241, + 0.969702339393929247, 0.0850652965070581996, + 0.803390575440818822, 0.1448091121037717866 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 3. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > v <- targetT(L = L, Target=matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + eps=1e-5)$loadings Use of 'L=' is deprecated. Please use 'A='. > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 3L. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- targetQ(L, Target=matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + eps=1e-5)$loadings > tst <- t(matrix(c( + 0.735795682866631218, 0.565351705145453853, + 0.433590223819374398, 0.664644550038417159, + 0.589924557708411568, 0.920006940799857786, + 0.317543426981046928, 0.500590650032113116, + 1.021758247914384077, 0.155121528590726393, + 0.872521244896209747, 0.208735706420634437 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 4. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > v <- targetQ(L = L, Target=matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + eps=1e-5)$loadings Use of 'L=' is deprecated. Please use 'A='. > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 4L. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > # Does not converge even with maxit=10000, but the loadings matrix is not > # changing. Possibly the gradient is extremely large even very close to opt. > v <- pstT(L, W = matrix(c(rep(.4,6),rep(.6,6)), 6,2), + Target= matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + maxit=1000, eps=1e-5)$loadings Warning message: In GPForth(A, Tmat = Tmat, normalize = normalize, eps = eps, maxit = maxit, : convergence not obtained in GPForth. 1000 iterations used. > tst <- t(matrix(c( + 0.37067889993474656407, 0.638257130653133720, + 0.01855112570739854416, 0.640564749523800270, + 0.01576132191496706567, 0.884065831441111172, + 0.00524531003824213384, 0.480158078874985073, + 0.89458633399812259590, 0.383762977265515448, + 0.71793428958051475064, 0.388556883222951677 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 5. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > v <- pstT(L = L, W = matrix(c(rep(.4,6),rep(.6,6)), 6,2), + Target= matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + maxit=1000, eps=1e-5)$loadings Use of 'L=' is deprecated. Please use 'A='. Warning message: In GPForth(A, Tmat = Tmat, normalize = normalize, eps = eps, maxit = maxit, : convergence not obtained in GPForth. 1000 iterations used. > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 5L. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > > # Does not converge even with maxit=10000, but the loadings matrix is not > # changing. Possibly the gradient is extremely large even very close to opt. > v <- pstQ(L, W = matrix(c(rep(.4,6),rep(.6,6)), 6,2), + Target= matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + maxit=1000, eps=1e-5)$loadings Warning message: In GPFoblq(A, Tmat = Tmat, normalize = normalize, eps = eps, maxit = maxit, : convergence not obtained in GPFoblq. 1000 iterations used. > tst <- t(matrix(c( + 0.573125161748393785, 0.700868331877288475, + 0.214899397066479453, 0.681727425525818886, + 0.286558275327103040, 0.940272379393286339, + 0.152257795885557295, 0.510481967637567036, + 1.029289798076480578, 0.462598702071116141, + 0.850691132520651205, 0.456859727346562328 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 6. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > v <- pstQ(L = L, W = matrix(c(rep(.4,6),rep(.6,6)), 6,2), + Target= matrix(c(rep(1,3),rep(0,6),rep(1,3)), 6,2), + maxit=1000, eps=1e-5)$loadings Use of 'L=' is deprecated. Please use 'A='. Warning message: In GPFoblq(A, Tmat = Tmat, normalize = normalize, eps = eps, maxit = maxit, : convergence not obtained in GPFoblq. 1000 iterations used. > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 6L. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > # oblimax > # this is test value on one computer > # tst <- t(matrix(c( > # -8111059.94622692652, 8111060.62253121007, > # 1495036.43465861562, -1495035.79614594672, > # 2331634.63904705830, -2331633.75893370388, > # 1356735.91680212389, -1356735.43916810025, > # -23187491.19758165255, 23187491.68068471923, > # -18357040.58573083207, 18357041.05348757654 > # ), 2, 6)) > # > # this is test value on another computer > # tst <- t(matrix(c( > # 2694770.06630349346, -2694769.38999920478, > # -496701.45733913727, 496702.09585180727, > # -774647.63529061736, 774648.51540397422, > # -450753.43529273639, 450753.91292676108, > # 7703672.48495316971, -7703672.00185009185, > # 6098832.71036116872, -6098832.24260441773 > # ), 2, 6)) > # > # this does not converge on all platforms and has large differences possible a mistake ??? > # v <- oblimax(L, eps=1e-5)$loadings > # if( fuzz < max(abs(v - tst))) { > # cat("Calculated value is not the same as test value in test rotations 7. Value:\n") > # print(v, digits=18) > # cat("difference:\n") > # print(v - tst, digits=18) > # all.ok <- FALSE > # } > > > v <- entropy(L, maxit=3000, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.528292107548243184, 0.515443945340967824, + 0.189686511729033253, 0.612116304198454975, + 0.252311894464850861, 0.847442931117894815, + 0.133843268148035738, 0.461156452364903380, + 0.964740133927989407, 0.129750551769587635, + 0.795847094000000532, 0.181751199795689433 + ), 2, 6)) > > if( 0.01 < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 8. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- quartimax(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.534714740804540178, 0.508778102568043678, + 0.197348140750149392, 0.609689309353509956, + 0.262919828098457153, 0.844212045390758559, + 0.139616102327241837, 0.459441658926639795, + 0.966291466215733252, 0.117641548844535412, + 0.798063848020893585, 0.171756193883937508 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 9. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- Varimax(L, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.515866523962843160, 0.527879475961036904, + 0.175054634278874244, 0.616460231981747930, + 0.232057748479543163, 0.853211588623112749, + 0.122822468397975171, 0.464213243286899446, + 0.961376376417989453, 0.152689863976982837, + 0.791292800869773050, 0.200653429940987366 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 10. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- simplimax(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.3384175759313114429, 0.508414890494446547464, + -0.0654601124161610648, 0.670992229004664153535, + -0.1016231721735353366, 0.930535379393095940515, + -0.0589933707274080121, 0.506904360351960181497, + 0.9733094402675376289, 0.000234046050254643859, + 0.7702037184085044341, 0.085651123319384916965 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 11. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- bentlerT(L, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.523583611303327312, 0.520226117818945788, + 0.184113022124463677, 0.613815719643687197, + 0.244596116053327067, 0.849702038129718673, + 0.129644684715025493, 0.462354355134084738, + 0.963520501269179652, 0.138517057902201340, + 0.794161628656258278, 0.188979901644201559 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 12. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- bentlerQ(L, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.3801726240258240241, 0.4741208368044214638, + -0.0223632969057368826, 0.6514196922540864687, + -0.0421105927111659756, 0.9039359851665277334, + -0.0266594447192576613, 0.4925968005718689424, + 0.9961524457620027917, -0.0485973498906049697, + 0.7939648477384558811, 0.0440983921679098251 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 13. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- tandemI(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.615424480780047745, 0.4074649925368262759, + 0.300894306348887419, 0.5658002819054848143, + 0.406455233467338028, 0.7852483408305571677, + 0.217785179074990981, 0.4279590047675180808, + 0.971977129465111611, -0.0530960591067626969, + 0.815800376450207976, 0.0295946184147908228 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 14. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > > v <- tandemII(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.512160139332842212, 0.531476249107136312, + 0.170736763115044710, 0.617670057812827134, + 0.226081850628144149, 0.854814488884392154, + 0.119571200821562001, 0.465061309851099225, + 0.960284416460420398, 0.159413208985883820, + 0.789869387186175276, 0.206185467095899383 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 15. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- geominT(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.572197044101002361, 0.4662247895688098054, + 0.243573415560656120, 0.5927388411683653935, + 0.326956608263186954, 0.8215352639437966120, + 0.174476792179181994, 0.4473668997335142894, + 0.972471249855535680, 0.0431091626026945812, + 0.808894688433769660, 0.1099794466209375043 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 16. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- geominQ(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.39672053553904490508, 0.4713295988080449250, + 0.00424452688463150020, 0.6389466007374070555, + -0.00510976786312981532, 0.8864521406378518265, + -0.00646959173137159373, 0.4830101828530461994, + 0.98709860078485589518, -0.0318959930081098297, + 0.79011178369962709045, 0.0558689642678330683 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 17. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- bigeominT(L, eps = 1e-5, delta = 0.01)$loadings > tst <- t(matrix(c( + 0.735864675930537948, 0.0572554836159610558, + 0.537832587849186305, 0.3484299786828288781, + 0.736693622718023078, 0.4889819217894930681, + 0.398234350199199783, 0.2683070932862005598, + 0.823835376232448180, -0.5185113350380095021, + 0.727481839163037991, -0.3703731487890759011 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 16-bigeominT. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- bigeominQ(L, eps = 1e-5, delta = 0.01)$loadings > tst <- t(matrix(c( + 0.735864459785110725, 0.0572566968425438083, + 0.537831272508815683, 0.3484308654124375071, + 0.736691776787216535, 0.4889831363831567135, + 0.398233337326754422, 0.2683077498589007681, + 0.823837333630433988, -0.5185099767738823306, + 0.727483237333638733, -0.3703719493837349663 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 17-bigeominQ. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- cfT(L, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.534721263659975854, 0.508771247100584523, + 0.197355957387199576, 0.609686779159006154, + 0.262930651479430233, 0.844208674501022327, + 0.139621992686633722, 0.459439868910532512, + 0.966292974385164483, 0.117629160286744874, + 0.798066049992627313, 0.171745962120156664 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 18. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- cfQ(L, eps=1e-8)$loadings > tst <- t(matrix(c( + 0.3863615904740822504, 0.4745127741495974161, + -0.0110059418769087539, 0.6458720769633764514, + -0.0262926272350604423, 0.8961141105684561348, + -0.0180200526810754824, 0.4882928281695405048, + 0.9900944939102318543, -0.0370718282544326011, + 0.7905657274265397438, 0.0526109550054999417 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 19. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- infomaxT(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.495330443338021176, 0.547195361446864537, + 0.151384273205308784, 0.622695868320644275, + 0.199304253086364791, 0.861451466010626055, + 0.105004533733904976, 0.468565194910632365, + 0.954843809781045660, 0.189293503899924942, + 0.783052579543945471, 0.230726576980168713 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 20. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- infomaxQ(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.39327554287862442894, 0.4693137508305071925, + -0.00319802321222481794, 0.6422985517185823001, + -0.01549245038490981718, 0.8912279460026399924, + -0.01214605901641467763, 0.4856544522916727002, + 0.99260028929193111491, -0.0433225495465055510, + 0.79356458059567791530, 0.0471559021503157039 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 21. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- mccammon(L, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.4293472299617892007, 0.600363196582340275, + 0.0790140496845253004, 0.635943490060206229, + 0.0992523811009183854, 0.878618107277518656, + 0.0506062164774049028, 0.477512622702450096, + 0.9268544198491108776, 0.297488850382792269, + 0.7514463663627769519, 0.318958389348199534 + ), 2, 6)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 22. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > ###### ADDED IN NOVEMBER 2022 FOR EQUAMAX, PARSIMAX, VARIMIN, OBLIMAX > > data(Thurstone) > v <- equamax(box26, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.511813618717971597, 0.1252460667724786814, 0.835031881099661200, + 0.211275278125612587, 0.9469860693462274215, 0.024701038786419674, + 0.923671387190205140, 0.1861505968810791833, -0.278366886980007111, + 0.414270797796799317, 0.7243752493532077397, 0.530526346393166759, + 0.927099794400001564, 0.1710560637343615797, 0.314400690653154735, + 0.685509679739711331, 0.6873945075387188908, -0.212674093365320949, + 0.500975325417812756, 0.4985944480056956341, 0.693100497576226382, + 0.350251174602310256, 0.8631423492204841619, 0.303299191676876356, + 0.809196181501955492, 0.1468111894018074293, 0.540855816747015439, + 1.051940508364259674, 0.2023337382785123650, 0.126016765617061266, + 0.528246625368315792, 0.8145581663496035407, -0.154555803579673606, + 0.791784749686200273, 0.5353191515116044741, -0.254010464723911089, + 0.283760830721282831, -0.7132278971933163625, 0.633221728633476699, + -0.283760830721282831, 0.7132278971933163625, -0.633221728633476699, + -0.351981708826951678, 0.0145585781278812498, 0.920862598031950474, + 0.351981708826951678, -0.0145585781278812498, -0.920862598031950474, + -0.641238077659381234, 0.7340358583767647715, 0.211813801195267382, + 0.641238077659381234, -0.7340358583767647715, -0.211813801195267382, + 0.370916272566192251, 0.7781992933002486179, 0.457012011497068604, + 0.943267697340363864, 0.1458935486092693412, 0.269085717994103968, + 0.683769139477491628, 0.6932804480935084168, -0.193612975261152009, + 0.375506314902942506, 0.7683789003013250518, 0.444462454027040654, + 0.921697465732450816, 0.1542330203892136042, 0.244709944799956780, + 0.664806997738585315, 0.6918110118942031317, -0.165931249557543792, + 0.748952844572093657, 0.5985308972371030656, 0.239842451746804020, + 0.716556890444816297, 0.6343221919993241587, 0.139425892477791219 + ), 3, 26)) > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 22. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > ### SAME FOR CRAWFORD FERGUSON WITH KAPPA = m / (2 * p) = 3 / (2 * 26) > v <- cfT(box26, kappa = (3 / (2 * 26)), eps=1e-5)$loadings > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 22. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- parsimax(box26, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.7201835790622810318, -0.2820790149262949464, 0.6137467244615277817, + -0.0679423851913938670, 0.6010788795762025405, 0.7590243822315081434, + 0.6707172136894012926, 0.7174085874409354968, -0.0277909684381195121, + 0.3564975652920873705, 0.2169149780725644350, 0.8964682806594965747, + 0.8905375652375422391, 0.2961288407436278303, 0.3269136806262873951, + 0.3419238671745732927, 0.8395902605853544642, 0.4072361273101923196, + 0.5551801796495600128, 0.0181442676741417341, 0.8193941381745735164, + 0.1791815177720131602, 0.4232257028261393605, 0.8651329309165379788, + 0.8735154515073240145, 0.0707778916688399651, 0.4481498031114935499, + 0.9254209439635597834, 0.5018907196720771013, 0.2347334274887991901, + 0.1871266535649374341, 0.7975561080494565358, 0.5434380093797205324, + 0.4642991413806251688, 0.8329607560592182658, 0.2619421428072832847, + 0.6793187635833454197, -0.7070938474525871875, -0.1694942722875707464, + -0.6793187635833454197, 0.7070938474525871875, 0.1694942722875707464, + 0.0126413340577520572, -0.7959999181796318934, 0.5816488003350992475, + -0.0126413340577520572, 0.7959999181796318934, -0.5816488003350992475, + -0.7005089039174136056, -0.0349340740508546910, 0.7091733821870598309, + 0.7005089039174136056, 0.0349340740508546910, -0.7091733821870598309, + 0.2764675266718980007, 0.2782887989292237019, 0.8933946782281918519, + 0.8957285854821546156, 0.3212930506383097073, 0.2790825626255922787, + 0.3455615085575033385, 0.8287155760723180498, 0.4236528505493507568, + 0.2788032457489866833, 0.2837361452757249936, 0.8779069142135194070, + 0.8654448252950356357, 0.3331277242202841382, 0.2706070467039994321, + 0.3390107603224090660, 0.7999236919074760310, 0.4396564471388281214, + 0.5855440811683275681, 0.5029973433114328651, 0.6171108503586539840, + 0.5106729412991620753, 0.5782224406112924653, 0.5832066153589001711 + ), 3, 26)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 22. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > ### SAME FOR CRAWFORD FERGUSON WITH KAPPA = (m - 1) / (p + m - 2) = (3 -1) / (26 + 3 - 2) > v <- cfT(box26, kappa=( (3-1)/(26+3-2) ), eps=1e-5)$loadings > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 22. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > data(Harman, package= "GPArotation") > v <- varimin(Harman8, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.800626657046876855, -0.452452158825595752, + 0.783606930490612252, -0.524447498313301397, + 0.742635936060292656, -0.522609669324872517, + 0.768357486963803682, -0.455227165519225097, + 0.818696625686402668, 0.444445536696790211, + 0.702064973637186673, 0.410429985249392060, + 0.623283524595303340, 0.401857745935120247, + 0.668480210595655877, 0.287458184858228272 + ), 2, 8)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 22. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > > > v <- oblimax(Harman8, eps=1e-5)$loadings > tst <- t(matrix(c( + 0.93395421734409445058, -0.0302013026726007383, + 0.99243032312927881300, -0.1121899246869615951, + 0.96509469978483286567, -0.1322258547171115683, + 0.91647702431117861188, -0.0502569243958834178, + 0.08441855308346873921, 0.8875309317276611765, + 0.04427084251510177149, 0.7907585046311147448, + 0.00332736511424391868, 0.7399752420126202157, + 0.14133359391312094733, 0.6483050831171799366 + ), 2, 8)) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 22. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > # TAKEN FROM THE EXAMPLES IN THE DOCUMENTATION OF echelon > > data(WansbeekMeijer) > fa.unrotated <- factanal(factors = 2, covmat=NetherlandsTV, rotation="none") > v <- echelon(fa.unrotated$loadings)$loadings > tst <- matrix(c( + 0.7910866, 0.000000000, + 0.8356693, 0.086562877, + 0.7732175, 0.003599155, + 0.4712891, 0.520430204, + 0.4716313, 0.596050663, + 0.4340904, 0.693182608, + 0.3934293, 0.610972389 + ), ncol = 2, nrow = 7, byrow=7) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 23. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > # TAKEN FROM THE EXAMPLES IN THE DOCUMENTATION OF eiv > > v <- eiv(fa.unrotated$loadings)$loadings > tst <- matrix(c( + 1.0000000, 0.0000000, + 0.0000000, 1.0000000, + 0.9334902, 0.0415785, + -5.7552381, 6.0121639, + -6.6776277, 6.8857539, + -7.9104168, 8.0078509, + -6.9585766, 7.0581340 + ), ncol = 2, nrow = 7, byrow=7) > > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations 24. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > # BIFACTOR > > data(WansbeekMeijer) > fa.unrotated <- factanal(factors = 3, covmat=NetherlandsTV, rotation="none") > v <- bifactorT(fa.unrotated$loadings)$loadings > > tst <- matrix(c( + 0.605259846207760410, 0.50926282550276680272, -0.0326441696928007064, + 0.674848533008883589, 0.49892997353743967492, 0.0360559565502543422, + 0.585307624074672961, 0.50452427555859225006, -0.0116655363009391944, + 0.569143997010692737, 0.07907134469847305891, 0.4496106087464453172, + 0.639591951170676909, -0.00317621525167442742, 0.3903956610664964244, + 0.644285080202307459, -0.06194060671151470354, 0.4889273316625122323, + 0.894466584777320994, -0.44135797428894490979, -0.0115183403900823399 + ), ncol = 3, nrow = 7, byrow=7) > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations bifactorT. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > v <- bifactorQ(fa.unrotated$loadings)$loadings > > tst <- matrix(c( + 0.639628269247016989, 0.4617887681341789063, -0.03408526722627130967, + 0.708202536330854282, 0.4531948277009248405, 0.03509478386512845938, + 0.619356995328652293, 0.4604997427039814184, -0.01303680319918767982, + 0.572539420889668138, 0.0819716834028682007, 0.45225086629811012129, + 0.637128483915923693, -0.0107264127434737802, 0.39334646255480443244, + 0.637511978242973232, -0.0601392817604798208, 0.49259101012935263553, + 0.861232867683719872, -0.5044079449050349329, -0.00751942773799910234 + ), ncol = 3, nrow = 7, byrow=7) > if( fuzz < max(abs(v - tst))) { + cat("Calculated value is not the same as test value in test rotations bifactorQ. Value:\n") + print(v, digits=18) + cat("difference:\n") + print(v - tst, digits=18) + all.ok <- FALSE + } > > > > cat("tests completed.\n") tests completed. > > > if (! all.ok) stop("some tests FAILED") > > proc.time() user system elapsed 2.50 0.14 2.62