MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Arman on 11 Nov 2012

Dear all,

I have fitted a linear model to my data as follows: Var6 ~ 1 + groupVar1 +groupVar2 + groupVar3 +Var4 + Var5

the first 3 variables are dummy variables for the three groups that I have, and I aim to compare groups using GeneralizedLinearModel.fit and adjusting for nuisance variables.
Using coefTest with this contrast I get the f statistic of "any group different from zero" while controlling for Var4 and Var5: [0 1 0 0 0 0;0 0 1 0 0 0;0 0 0 1 0 0] and I get a p value, and so on.
However, when it comes to one tail t tests for the following two contrasts I get the same **significant** p value for which does not make sense to me:

contrast 2:Group1 >Group2 coefTest(m, [0 1 -1 0 0 0]) contrast 3:Group2 >Group1 coefTest (m, [0 -1 1 0 0 0])

It would be great if someone could let me know where I'm getting this wrong, as there is no way for a group to be greater and lesser than another group at the same time.

-Arman

Answer by Tom Lane on 12 Nov 2012

Accepted answer

You are right that the result from coefTest is an F-test. There is no built-in way to carry out a one-sided t test.

Here are some commands to reproduce the calculations for the t statistic and its p-value as they appear int the coefficient table:

load carsmall d = dataset(MPG,Weight); d.Year = ordinal(Model_Year); glm = GeneralizedLinearModel.fit(d,'MPG ~ Year + Weight + Weight^2') glm.Coefficients.Estimate(3) glm.Coefficients.Estimate(3)/sqrt(glm.CoefficientCovariance(3,3)) 2*(1 - tcdf(glm.Coefficients.Estimate(3)/sqrt(glm.CoefficientCovariance(3,3)),glm.DFE))

You could compute a contrast among the coefficients (instead of just taking the third one as I did), use the covariance matrix to compute the variance of this contrast, and so on. Then you could pick the desired tail of the t distribution.

Arman on 13 Nov 2012

Thanks a lot for your answer. I managed to understand most of the procedure, so back to my model:

responseVariable ~ 1 + groupVar1 +groupVar2 + groupVar3 +nuisanceVar4 + nuisanceVar5

When my contrast is [0 1 -1 0 0 0] to test the hypothesis of whether the mean of second group is lower than that of first, I have difficulty understanding the appropriate coefficient and covariance for the rest of the analysis. I think the correct coefficient for this contrast is the linear combination of that of the "groupVar1" and "groupVar2", is that right? And with regard to the coefficient covariance for t-statistic calculation, is it the linear combination of covariances for each of the regression coefficients (namely, "groupVar1" and "groupVar2" from glm.CoefficientCovariance matrix provided in MATLAB)?

Tom Lane on 14 Nov 2012

If you have three groups and you include dummy variables for them all, I'd expect that to be collinear with the constant term. But in general for a contrast such as c=[0 1 -1 0 0 0], coefficient vector b, and covariance matrix V, c*b is your estimated contrast and c*V*c' its variance.

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/53449#comment_110657

So probably I'm just doing an F-test, is there a way to do one tailed t-tests in GeneralizedLinearModel in MATLAB?