Brand Awareness Study
A major Canadian coffee shop chain is trying to break into the U.S. Market. They assess the following variables twice on a random sample of coffee-drinking adults. The two measurements of each variable are conducted at different times by different interviewers asking somewhat different questions, in such a way that the errors of measurement may be assumed independent. The variables are
/* aware1.sas */ title 'Doughnut Shop Brand Awareness Study: Model 1'; data torus; infile '/folders/myfolders/431s15/timmy1.data.txt' firstobs=2; input id w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; label w1 = 'Brand Awareness 1' w2 = 'Brand Awareness 2' w3 = 'Ad Awareness 1' w4 = 'Ad Awareness 2' w5 = 'Interest 1' w6 = 'Interest 2' v1 = 'Purchase Intention 1' v2 = 'Purchase Intention 2' v3 = 'Purchase Behaviour 1' v4 = 'Purchase Behaviour 2'; /* F_BrAw = True brand awareness F_AdAw = True advertising awareness F_Inter = True interest in the product category F_PI = True purchase intention F_PBeh = True purchase behaviour */ proc calis vardef=n psummary; /* Print fit statistics only */ var w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; lineqs F_PI = gamma1 F_BrAw + gamma2 F_AdAw + gamma3 F_Inter + epsilon1, F_PBeh = gamma4 F_Inter + beta F_PI + epsilon2, w1 = F_BrAw + e1, w2 = F_BrAw + e2, w3 = F_AdAw + e3, w4 = F_AdAw + e4, w5 = F_Inter + e5, w6 = F_Inter + e6, v1 = F_PI + e7, v2 = F_PI + e8, v3 = F_PBeh + e9, v4 = F_PBeh + e10; variance F_BrAw = phi11, F_AdAw=phi22, F_Inter=phi33, epsilon1=psi1, epsilon2=psi2, e1-e10 = 10 * omega__; cov F_BrAw F_AdAw = phi12, F_BrAw F_Inter = phi13, F_AdAw F_Inter = phi23; bounds phi11 phi22 phi33 psi1 psi2 omega01-omega10 > 0;
It didn't fit. Split the problem up into parts. Look first at the measurement model.
/* aware2.sas */ title 'Doughnut Shop Brand Awareness Study: Model 2 (Measurement only)'; data torus; infile '/folders/myfolders/431s15/timmy1.data.txt' firstobs=2; input id w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; label w1 = 'Brand Awareness 1' w2 = 'Brand Awareness 2' w3 = 'Ad Awareness 1' w4 = 'Ad Awareness 2' w5 = 'Interest 1' w6 = 'Interest 2' v1 = 'Purchase Intention 1' v2 = 'Purchase Intention 2' v3 = 'Purchase Behaviour 1' v4 = 'Purchase Behaviour 2'; proc calis vardef=n psummary; /* Print fit statistics only */ var w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; lineqs w1 = F_BrAw + e1, w2 = F_BrAw + e2, w3 = F_AdAw + e3, w4 = F_AdAw + e4, w5 = F_Inter + e5, w6 = F_Inter + e6, v1 = F_PI + e7, v2 = F_PI + e8, v3 = F_PBeh + e9, v4 = F_PBeh + e10; variance F_BrAw F_AdAw F_Inter F_PI F_PBeh = 5*phivar__, e1-e10 = 10 * omega__; cov F_BrAw F_AdAw F_Inter F_PI F_PBeh = 10*phicov__; bounds phivar1-phivar5 omega01-omega10 > 0;
The measurement model does not fit. Try a true double measurement model, allowing covariances within sets.
/* aware3.sas */ title 'Doughnut Shop Brand Awareness Study'; title2 'Full double measurement model'; data torus; infile '/folders/myfolders/431s15/timmy1.data.txt' firstobs=2; input id w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; label w1 = 'Brand Awareness 1' w2 = 'Brand Awareness 2' w3 = 'Ad Awareness 1' w4 = 'Ad Awareness 2' w5 = 'Interest 1' w6 = 'Interest 2' v1 = 'Purchase Intention 1' v2 = 'Purchase Intention 2' v3 = 'Purchase Behaviour 1' v4 = 'Purchase Behaviour 2'; proc calis vardef=n psummary; /* Print fit statistics only */ var w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; lineqs w1 = F_BrAw + e1, w2 = F_BrAw + e2, w3 = F_AdAw + e3, w4 = F_AdAw + e4, w5 = F_Inter + e5, w6 = F_Inter + e6, v1 = F_PI + e7, v2 = F_PI + e8, v3 = F_PBeh + e9, v4 = F_PBeh + e10; variance F_BrAw F_AdAw F_Inter F_PI F_PBeh = 5*phivar__, e1-e10 = 10 * omega__; cov F_BrAw F_AdAw F_Inter F_PI F_PBeh = 10*phicov__, e1 e3 e5 e7 e9 = 10 * O1cov__, e2 e4 e6 e8 e10 = 10 * O2cov__; bounds phivar1-phivar5 omega01-omega10 > 0;
Still does not fit. Also, get this warning in the log file:
WARNING: Although all predicted variances for the observed and latent variables are positive, the corresponding predicted covariance matrix is not positive definite. It has one negative eigenvalue.Likely one of the measurement error covariance matrices left the parameter space, and is not positive definite.
Testing the covariances with an invalid likelihood ratio test:
> G2 = 76.3802 - 33.3097 > 1-pchisq(G2,df=20) [1] 0.002000914
This shows why you should not believe a LR test based on a full model that does not fit. Later we will conclude that those covariances are truly zero.
Consider that the two measurements of each latent variable are DIFFERENT. Maybe they're not really equivalent. Perhaps one in each set (say number 2) should have a coefficient not equal to one.
/* aware4.sas */ title 'Doughnut Shop Brand Awareness Study'; title2 'Full double measurement model'; data torus; infile '/folders/myfolders/431s15/timmy1.data.txt' firstobs=2; input id w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; label w1 = 'Brand Awareness 1' w2 = 'Brand Awareness 2' w3 = 'Ad Awareness 1' w4 = 'Ad Awareness 2' w5 = 'Interest 1' w6 = 'Interest 2' v1 = 'Purchase Intention 1' v2 = 'Purchase Intention 2' v3 = 'Purchase Behaviour 1' v4 = 'Purchase Behaviour 2'; proc calis vardef=n psummary; /* Print fit statistics only */ var w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; lineqs w1 = F_BrAw + e1, w2 = lambda2*F_BrAw + e2, w3 = F_AdAw + e3, w4 = lambda4*F_AdAw + e4, w5 = F_Inter + e5, w6 = lambda6*F_Inter + e6, v1 = F_PI + e7, v2 = lambda8*F_PI + e8, v3 = F_PBeh + e9, v4 = lambda10*F_PBeh + e10; variance F_BrAw F_AdAw F_Inter F_PI F_PBeh = 5*phivar__, e1-e10 = 10 * omega__; cov F_BrAw F_AdAw F_Inter F_PI F_PBeh = 10*phicov__; bounds phivar1-phivar5 > 0;
The measurement model fits! Now combine it with the latent variable model.
/* aware5.sas */ title 'Doughnut Shop Brand Awareness Study: Model 5'; title2 'Put latent variable model back in'; data torus; infile '/folders/myfolders/431s15/timmy1.data.txt' firstobs=2; input id w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; label w1 = 'Brand Awareness 1' w2 = 'Brand Awareness 2' w3 = 'Ad Awareness 1' w4 = 'Ad Awareness 2' w5 = 'Interest 1' w6 = 'Interest 2' v1 = 'Purchase Intention 1' v2 = 'Purchase Intention 2' v3 = 'Purchase Behaviour 1' v4 = 'Purchase Behaviour 2'; proc calis pshort nostand vardef=n pcorr ; var w1 w2 w3 w4 w5 w6 v1 v2 v3 v4; lineqs F_PI = gamma1 F_BrAw + gamma2 F_AdAw + gamma3 F_Inter + epsilon1, F_PBeh = gamma4 F_Inter + beta F_PI + epsilon2, w1 = F_BrAw + e1, w2 = lambda2*F_BrAw + e2, w3 = F_AdAw + e3, w4 = lambda4*F_AdAw + e4, w5 = F_Inter + e5, w6 = lambda6*F_Inter + e6, v1 = F_PI + e7, v2 = lambda8*F_PI + e8, v3 = F_PBeh + e9, v4 = lambda10*F_PBeh + e10; variance F_BrAw = phi11, F_AdAw=phi22, F_Inter=phi33, epsilon1=psi1, epsilon2=psi2, e1-e10 = 10 * omega__; cov F_BrAw F_AdAw = phi12, F_BrAw F_Inter = phi13, F_AdAw F_Inter = phi23; bounds phi11 phi22 phi33 psi1 psi2 omega01-omega10 > 0; /* The lambda coefficients linking latent variables to their measurements are different from zero. They'd better be! But which of them are different from one? */ simtests not_one = [d2 d4 d6 d8 d10]; d2 = lambda2-1; d4 = lambda4-1; d6 = lambda6-1; d8 = lambda8-1; d10 = lambda10-1;