Copyright © 2007-2024 The OpenMx Project
A nice way you understand the value of matrix algebra use it in simple practical examples. One such example is a break even analysis: For instance with certain fixed costs, as well as a pay rate for labour, how many hours do need to charge out in order to break-even?
This can be calculated in an OpenMx model, optimising on profit, and solving with the constraint the we break-even. This model has one free parameter-namely the hours of work.
fit1 = mxModel("fit1", mxMatrix(name="hours" , values=1 , free=T, type="Full", nrow=1, ncol=1), mxMatrix(name="fixedCosts" , values=730 , free=F, type="Full", nrow=1, ncol=1), mxMatrix(name="payRate" , values=5.85 , free=F, type="Full", nrow=1, ncol=1), mxMatrix(name="chargeOutRate", values=8.15, free=F, type="Full", nrow=1, ncol=1), mxAlgebra(name="revenue" , expression = chargeOutRate * hours), mxAlgebra(name="expenditure", expression = fixedCosts + (payRate * hours)), mxAlgebra(name="profit" , expression = revenue - expenditure), mxConstraint(revenue - expenditure ==0, name = "breakEven"), mxAlgebraObjective(algebra="profit", numObs= NA, numStats=NA) ) fit1 = mxRun(fit1) summary(fit1)
free parameters: name matrix row col Estimate Std.Error lbound ubound 1 hours 1 1 317.3913 NA
How much will we lose if we can only charge out 35 hours?
fit1 = mxModel("fit1",
mxMatrix(name="hours" , values=1 , free=T, type="Full", nrow=1, ncol=1),
mxMatrix(name="fixedCosts" , values=730 , free=F, type="Full", nrow=1, ncol=1),
mxMatrix(name="payRate" , values=5.85 , free=F, type="Full", nrow=1, ncol=1),
mxMatrix(name="chargeOutRate", values=8.15, free=F, type="Full", nrow=1, ncol=1),
mxAlgebra(name="revenue" , expression = chargeOutRate * hours),
mxAlgebra(name="expenditure", expression = fixedCosts + (payRate * hours)),
mxAlgebra(name="profit" , expression = revenue - expenditure),
mxConstraint(hours ==35, name = "maxHours"),
mxAlgebraObjective(algebra="profit", numObs= NA, numStats=NA)
)
fit1 = mxRun(fit1)
fit1@algebras$profit@result
[,1]
[1,] -649.5