Attachment | Size |
---|---|
LCA_Example Separate Items Plan C.R [6] | 8.8 KB |
The attached file runs fine under 1.3 but fails unpleasantly under the current svn trunk (2484).
> LCA2 <- LCAfun(data[4:8], 2, 5, 3)
Error in as.character.default() :
no method for coercing this S4 class to a vector
In addition: Warning messages:
1: In mxFIMLObjective(covariance = "R", means = "M", dimnames = nameList[1], :
Objective functions have been deprecated. Please use mxExpectationNormal() and mxFitFunctionML() instead.
2: In mxFIMLObjective(covariance = "R", means = "M", dimnames = tempVar, :
Objective functions have been deprecated. Please use mxExpectationNormal() and mxFitFunctionML() instead.
3: In is.na(x) : is.na() applied to non-(list or vector) of type 'S4'
The error comes as a result of:
temp$objective <- mxFIMLObjective(covariance = "R", means = "M", dimnames = tempVar, thresholds = paste("ThresholdClass", i, "Item", j, sep = "_"), vector = TRUE)
which can be avoided easily enough with:
temp <- mxModel(temp,mxFIMLObjective(covariance="R", means="M", dimnames=tempVar, thresholds=paste("ThresholdClass",i,"Item",j,sep="_"),vector=TRUE))
However, it does mean that we are losing a bit of backward compatibility unless we were to trap old-fashioned access to model objects.
Second, I discovered that weirdly a warning that the objective function is NaN is generated when there are no free parameters but the model is mxRun anyway:
> LCA2 <- LCAfun(data[4:8], 2, 5, 3)
Running LCA_model_2_classes
Running LCA_model_2_classes
Running LCA_model_2_classes
Running LCA_model_2_classes
Running LCA_model_2_classes
Running LCA_model_2_classes
Running LCA_model_2_classes
Running LCA_model_2_classes
NULL
There were 17 warnings (use warnings() to see them)
war
>
> nings
Error: object 'nings' not found
> warnings()
Warning messages:
1: In mxFIMLObjective(covariance = "R", means = "M", dimnames = nameList[1], ... :
Objective functions have been deprecated. Please use mxExpectationNormal() and mxFitFunctionML() instead.
13: The job for model 'LCA_model_2_classes' exited abnormally with the error message: Fit function returned nan at iteration 0.1
14: The job for model 'LCA_model_2_classes' exited abnormally with the error message: Fit function returned nan at iteration 0.1
15: The job for model 'LCA_model_2_classes' exited abnormally with the error message: Fit function returned nan at iteration 0.1
16: The job for model 'LCA_model_2_classes' exited abnormally with the error message: Fit function returned nan at iteration 0.1
17: The job for model 'LCA_model_2_classes' exited abnormally with the error message: Fit function returned nan at iteration 0.1
Although no optimization has occurred, I'd like to see these things anyway. I can (and do) grab them from the objective, per this bit of the code:
# This doesn't work due to bug when all parameters are fixed (returns NA for minimum) # funList[i] <- ifelse(is.na(lcamodelRun@output$minimum),Inf,modelList[[i]]@output$minimum) funList[i] <- ifelse(is.na(lcamodelRun$mixtureObj@result),Inf,lcamodelRun$mixtureObj@result)
I hesitate to label this as a bug, but I really don't think it should be issuing warnings and I do think it should be returning a function value. It has been optimized with respect to all the parameters, it just so happens that there aren't any.