This function fits a factor analysis model or SEM, by maximum weighted likelihood.

svyfactanal(formula, design, factors,
n = c("none", "sample", "degf","effective", "min.effective"), ...)

## Arguments

formula

Model formula specifying the variables to use

design

Survey design object

factors

Number of factors to estimate

n

Sample size to be used for testing: see below

...

Other arguments to pass to factanal.

## Details

The population covariance matrix is estimated by svyvar and passed to factanal

Although fitting these models requires only the estimated covariance matrix, inference requires a sample size. With n="sample", the sample size is taken to be the number of observations; with n="degf", the survey degrees of freedom as returned by degf. Using "sample" corresponds to standardizing weights to have mean 1, and is known to result in anti-conservative tests.

The other two methods estimate an effective sample size for each variable as the sample size where the standard error of a variance of a Normal distribution would match the design-based standard error estimated by svyvar. With n="min.effective" the minimum sample size across the variables is used; with n="effective" the harmonic mean is used. For svyfactanal the test of model adequacy is optional, and the default choice, n="none", does not do the test.

## Value

An object of class factanal

factanal

The lavaan.survey package fits structural equation models to complex samples using similar techniques.

## Examples

data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)

svyfactanal(~api99+api00+hsg+meals+ell+emer, design=dclus1, factors=2)
#>
#> Call:
#> svyfactanal(~api99 + api00 + hsg + meals + ell + emer, design = dclus1,     factors = 2)
#>
#> Uniquenesses:
#> api99 api00   hsg meals   ell  emer
#> 0.009 0.058 0.978 0.230 0.005 0.865
#>
#>       Factor1 Factor2
#> api99 -0.990   0.108
#> api00 -0.959   0.151
#> hsg           -0.143
#> meals  0.877
#> ell    0.727   0.683
#> emer   0.367
#>
#>                Factor1 Factor2
#> Proportion Var   0.556   0.087
#> Cumulative Var   0.556   0.642
#>
#> The degrees of freedom for the model is 4 and the fit was 0.0898

svyfactanal(~api99+api00+hsg+meals+ell+emer, design=dclus1, factors=2, n="effective")
#>
#> Call:
#> svyfactanal(~api99 + api00 + hsg + meals + ell + emer, design = dclus1,     factors = 2, n = "effective")
#>
#> Uniquenesses:
#> api99 api00   hsg meals   ell  emer
#> 0.009 0.058 0.978 0.230 0.005 0.865
#>
#>       Factor1 Factor2
#> api99 -0.990   0.108
#> api00 -0.959   0.151
#> hsg           -0.143
#> meals  0.877
#> ell    0.727   0.683
#> emer   0.367
#>
#>                Factor1 Factor2
#> Proportion Var   0.556   0.087
#> Cumulative Var   0.556   0.642
#>
#> Test of the hypothesis that 2 factors are sufficient.
#> The chi square statistic is 2.94 on 4 degrees of freedom.
#> The p-value is 0.567

##Population dat for comparison
factanal(~api99+api00+hsg+meals+ell+emer, data=apipop, factors=2)
#>
#> Call:
#> factanal(x = ~api99 + api00 + hsg + meals + ell + emer, factors = 2,     data = apipop)
#>
#> Uniquenesses:
#> api99 api00   hsg meals   ell  emer
#> 0.024 0.023 0.799 0.005 0.392 0.732
#>
#>       Factor1 Factor2
#> api99  0.839  -0.522
#> api00  0.864  -0.480
#> hsg   -0.272   0.357
#> meals -0.471   0.879
#> ell   -0.468   0.623
#> emer  -0.433   0.284
#>
#>                Factor1 Factor2