[R] The equivalence of t.test and the hypothesis testing of one way ANOVA

Peter Ehlers ehlers at ucalgary.ca
Fri Nov 6 18:10:18 CET 2009


There's oneway.test() which implements Welch's 1953 (?)
paper, I believe.

  -Peter Ehlers

JLucke at ria.buffalo.edu wrote:
> There extensions to aov for without assuming equal variances.
> 
> Reed, James F., I. & Stark, D. B. (1988), 'Robust alternatives to 
> traditional analyses of variance: Welch $W^*$, James $J_I^*$, James 
> $J_II^*$, and Brown-Forsythe $BF^*$', Computer Methods and Programs in 
> Biomedicine 26, 233--238.
> 
> 
> I don't   know whether they are implemented in R.
> 
> 
> 
> 
> Peng Yu <pengyu.ut at gmail.com> 
> Sent by: r-help-bounces at r-project.org
> 11/06/2009 07:59 AM
> 
> To
> r-help at stat.math.ethz.ch
> cc
> 
> Subject
> Re: [R] The equivalence of t.test and the hypothesis testing of one way 
> ANOVA
> 
> 
> 
> 
> 
> 
> Is it possible to use aov() to compute the same p-value that is
> generated by t.test() with var.equal=F. An assumption of ANOVA is
> equal variance, I'm wondering how to relax such assumption to allow
> non equal variance?
> 
> On Thu, Nov 5, 2009 at 8:31 AM, Benilton Carvalho <bcarvalh at jhsph.edu> 
> wrote:
>> compare
>>
>> t.test(x, y, var.equal=T)
>>
>> with
>>
>> summary(afit)
>>
>> b
>>
>> On Nov 5, 2009, at 12:21 PM, Peng Yu wrote:
>>
>>> I read somewhere that t.test is equivalent to a hypothesis testing for
>>> one way ANOVA. But I'm wondering how they are equivalent. In the
>>> following code, the p-value by t.test() is not the same from the value
>>> in the last command. Could somebody let me know where I am wrong?
>>>
>>>> set.seed(0)
>>>> N1=10
>>>> N2=10
>>>> x=rnorm(N1)
>>>> y=rnorm(N2)
>>>> t.test(x,y)
>>>       Welch Two Sample t-test
>>>
>>> data:  x and y
>>> t = 1.6491, df = 14.188, p-value = 0.1211
>>> alternative hypothesis: true difference in means is not equal to 0
>>> 95 percent confidence interval:
>>> -0.2156863  1.6584968
>>> sample estimates:
>>> mean of x  mean of y
>>> 0.3589240 -0.3624813
>>>
>>>> A = c(rep('x',N1),rep('y',N2))
>>>> Y = c(x,y)
>>>> fr = data.frame(Y=Y,A=as.factor(A))
>>>> afit=aov(Y ~ A,fr)
>>>>
>>>> X=model.matrix(afit)
>>>> B=afit$coefficients
>>>> V=solve(t(X) %*% X)
>>>>
>>>> mse=tail(summary(afit)[[1]]$'Mean Sq',1)
>>>> df=tail(summary(afit)[[1]]$'Df',1)
>>>> t_statisitic=(B/(mse * sqrt(diag(V))))[[2]]
>>>> 2*(1-pt(abs(t_statisitic),df))#the p-value from aov
>>> [1] 0.1090802
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 
>




More information about the R-help mailing list