Added bug report. You can track the status at CPAN ticket #97925
<https://rt.cpan.org/Ticket/Display.html?id=97925>.

Maggie


On Thu, Aug 7, 2014 at 11:39 AM, Maggie X <[email protected]> wrote:

> Thanks for really digging into this, Erich! The hardest-to-fix problem was
> when it worked some of the time... Anyways. Glad you tracked it down. I'll
> work on a fix this weekend.
>
> Best,
> Maggie
>
>
> On Wed, Aug 6, 2014 at 5:00 PM, Erich Greene <[email protected]>
> wrote:
>
>> Hi again,
>>
>> Following up on the within factor masquerading as a between, I took a
>> look at the original mixed model test (t_anova_rptd_mixed) and found the
>> problem there as well: $a and $b are both within-subject factors.  So
>> working with the intended 3-level within * 2-level between model from that
>> test (changing the original subject vector from 0..3x6 to 0..7x3 makes $b
>> between-subjects), I again found a dependence on the order of the data
>> within the piddles.  (In principle, we should get the same results no
>> matter how we permute the input vectors, as long as we apply the same
>> permutation to all of them.)  While it runs with both orderings, the output
>> is only correct when the data is grouped by subject (my frontends all do
>> this, which is why I'd never noticed a problem before); when the data is
>> grouped by within var level, the error sums of squares are wrong (though
>> the degrees of freedom are correct, unlike in the 3-level between case).
>>
>> I'm attaching a revised set of tests including this stuff as well.
>>
>> Also a thought that probably gets into feature request territory: The
>> BTWN parameter doesn't seem necessary, since it's always possible to tell
>> from the input which factors are between-subjects and which are within.  If
>> a factor takes on every value for every subject, it's within; if it takes
>> on one and only one value for each subject, it's between; if it does
>> anything else, it's not part of a well-formed mixed model.
>>
>> Thanks again.
>>
>> ejg
>>
>>
>> On Wed, Aug 6, 2014 at 1:26 PM, Erich Greene <[email protected]>
>> wrote:
>>
>>> Hi Maggie,
>>>
>>> Thanks for digging into this.
>>>
>>> I think your test provides a solid clue: In it, both $a and $b are
>>> within-subjects variables (each subject has data at every level of each
>>> variable; a subject only corresponds to one level of a between-subjects
>>> variable, as each participant is only part of one group), so it's
>>> interesting that telling the routine that a within variable is between
>>> *doesn't* make it explode.  And if somewhere deep down, the code
>>> expects subjects to be orthogonal to between variables rather than nested
>>> within them, that could be a recipe for uninvertible matrices.
>>>
>>> So I took your framework, changed it to 9 subs in 3 groups each
>>> receiving 3 conditions, renamed the factor variables $w and $b to clarify
>>> which was supposed to be within/between, and started playing.  It turns out
>>> the routine is sensitive to the order of data within the input piddles:
>>>  When the data is grouped by within var level, the routine runs but uses
>>> incorrect error terms (the sums of squares and the degrees of freedom are
>>> both wrong for all effects), while when the data is grouped by subject (as
>>> my toy program did), the routine crashes with an uninvertible matrix.
>>>
>>> I'm attaching a pair of test routines (one for each data grouping).  I'm
>>> new to Test::More, so I'm going off yours as a template; hopefully it won't
>>> need much tweaking.  (Also, SPSS only gives me three decimal places, so I
>>> loosened tapprox to reflect the imprecision of the reference values.)
>>>
>>> Thanks again for working on this, and I hope this stuff helps.
>>>
>>> ejg
>>>
>>>
>>>
>>> On Tue, Aug 5, 2014 at 10:32 PM, Maggie X <[email protected]> wrote:
>>>
>>>> Ok, I added a test
>>>> <https://github.com/maggiexyz/PDL-Stats/blob/v0.6.6/t/stats_glm.t#L470-L494>
>>>> for a 3-level between subject variable in the package, and that runs fine.
>>>> I don't know whether the results were accurate, since I haven't been able
>>>> to compare it against another package that does mixed anova.
>>>>
>>>> I'll need more time to look into the problem. There's some old hairy
>>>> code there :P
>>>>
>>>>
>>>> Maggie
>>>>
>>>>
>>>>
>>>> On Tue, Aug 5, 2014 at 9:12 AM, Maggie X <[email protected]> wrote:
>>>>
>>>>> Thanks for noting this! I'll take a look this evening.
>>>>>
>>>>> Maggie
>>>>>
>>>>>
>>>>> On Tue, Aug 5, 2014 at 7:10 AM, Chris Marshall <[email protected]
>>>>> > wrote:
>>>>>
>>>>>> BTW, to get the code to run on my system, I
>>>>>> had to:
>>>>>>
>>>>>> 1) Change 'use 5.18;' to 'use 5.10;'
>>>>>> 2) Comment out  use autodie qw(:all)
>>>>>>
>>>>>> Modified code attached.
>>>>>>
>>>>>> --Chris
>>>>>>
>>>>>>
>>>>>> On Tue, Aug 5, 2014 at 7:06 AM, Chris Marshall <
>>>>>> [email protected]> wrote:
>>>>>> > Hi Erich-
>>>>>> >
>>>>>> > The input $ivs matrix generated for the call to $y->ols_t
>>>>>> > has rows of zeros so it is definitely not invertible.  Someone
>>>>>> > who actually knows/uses these routines will need to take
>>>>>> > a look at what is going or whether it is possible that the
>>>>>> > calling sequence needs to be changed.
>>>>>> >
>>>>>> > Cheers,
>>>>>> > Chris
>>>>>>
>>>>>> _______________________________________________
>>>>>> Perldl mailing list
>>>>>> [email protected]
>>>>>> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to