How to do ANOVA on data which is still not normal after transformations? I'm looking at the effect defeat and entrapment inducing conditions have on subjective ratings of defeat and entrapment at three different time points (among other things). 
However the subjective ratings are not normally distributed. I've done several transformations and the squareroot transformation seems to work best. However  there are still some aspects of the data that have not normalized. This non-normality manifests itself in negative skewness in High entrapment high defeat conditions at the time point I expected there to be the highest defeat and entrapment ratings. Consequently I think it could be argued that this skew is due to the experimental manipulation.
Would it be acceptable to run ANOVAs on this data despite the lack of normality, given the manipulations? Or would non-parametric tests be more appropriate? If so is there a non parametric equivalent of a 4x3 mixed ANOVA? 
 A: I believe with negatively skewed data, you may have to reflect the data to become positively skewed before applying another data transformation (e.g. log or square root). However, this tends to make interpretation of your results difficult.
What is your sample size? Depending on how large it is exactly, parametric tests may give fairly good estimates.
Otherwise, for a non-parametric alternative, maybe you can try the Friedman test.
In addition, you may try conducting a MANOVA for repeated measures, with an explicit time variable included, as an alternative to a 4x3 Mixed ANOVA. A major difference is that the assumption of sphericity is relaxed (or rather, it is estimated for you), and that all time-points of your outcome variable are fitted at once.
A: A boxcox transformation (there's one in the MASS package) works as well on negatively as positively skewed data.  FYI, you need to enter a formula in that function like y~1 and make sure all of y is positive first (if it's not just add a constant like abs(min(y))).  You may have to adjust the lambda range in the function to find the peak of the curve.  It will give you the best lambda value to choose and then you just apply this transform:
b <- boxcox(y~1)
lambda <- b$x[b$y == max(b$y)]
yt <- (y^lambda-1)/lambda
#you can transform back with
ytb <- (t*lambda+1)^(1/lambda)

See if your data are normal then.
#you can transform back with
ytb <- (t*lambda+1)^(1/lambda)
#maybe put back the min
ytb <- ytb - abs(min(y))

A: It's the residuals that should be normally distributed, not the marginal distribution of your response variable.
I would try using transformations, do the ANOVA, and check the residuals. If they look noticeably non-normal regardless of what transformation you use, I would switch to a non-parametric test such as the Friedman test.
