Hello,
 
As a new  user of R (less than a month) I have got my hands on several books 
and am pouting through the net looking for help in gaining understanding of 
this powerful tool.  I am becoming more proficient with using basic functions 
to conduct basic statistics.  I am now looking to learn how to write code.  
After a few small worthless functions I decided to try to create a function 
that was of real use, a Scheffe test for doing post hoc comparisons.  I am not 
aware of any functions written for this though there may be some.  I wrote the 
function and have run each line of the function through R.  It seems to work 
(though can use some improvements later on by splicing code from aov or anova 
functions to eliminate the need for inputting the MSw).  The problem is when i 
try to run the code as a whole I get several error messages that I don't know 
how to fix (despite searching).  The output section seems to be error riddled.  
I wanted the output to display a message of not sig or s!
 ig as well as means and n for both groups and the total N, as well as the 
t-value and critical t.  I am using a formula supplied by a professor for 
Scheffe (when comparing two groups): 
 
critical value--> k=sqrt((J-1)FJ-1,N-J,alpha)
test stat-->(mean1-mean2)/(sqrt(MSw((1^2)/n1)+(1^2)/n2)))
 
I am a windows 7 user with the latest version of R.
 
My Question:  What do I need to do to correct the three error codes R gives me 
and make the function run correctly?
 
This is the session, code and R's error message when supplied with data: 
> rm(list=ls())
> dat1<-read.table("dat1.csv", header=TRUE, sep=",",na.strings="999")
> attach(dat1)
> dat1
   student  rti score
1        1   ns     2
2        2   ns     5
3        3   ns     2
4        4   ns    11
5        5 wk2o    10
6        6 wk2o    11
7        7 wk2o     7
8        8 wk2o    12
9        9 wk5o    12
10      10 wk5o    12
11      11 wk2w     5
12      12 wk2w     6
13      13 wk2w    12
14      14 wk5w     5
15      15 wk5w     6
16      16 wk5w    13
> anova(lm(score~rti))
Analysis of Variance Table
Response: score
          Df  Sum Sq Mean Sq F value Pr(>F)
rti        4  83.771  20.943  1.7107 0.2174
Residuals 11 134.667  12.242               
> #so MSw is 12.242
> 
> #my code for scheffe's post hoc comparison
> 
> scheffe<- function(IV,DV,data,group1,group2,MSw,alpha) {
+  result<-0
+  J<-length(levels(IV))
+  d1<-subset(data, IV == "group1") 
+  d2<-subset(data, IV == "group2")
+  g1<-d1$DV
+  g2<-d2$DV
+  y.1<-mean(g1)
+  y.2<-mean(g2) 
+  n1<- length(g1)
+  n2<- length(g2)
+  N<-length(IV)
+  psi.hat<-y.1-y.2
+  se.psi.hat<- sqrt(MSw*((1/n1)+(1/n2)))
+  t<- psi.hat/se.psi.hat
+  t.compare<-abs(t)
+  k<-sqrt((J-1)*( qf((1-alpha),(J-1),(N-J))))
+   if(t.compare > k) return<-c("reject H0") else result<- c("accept H0")
+   return(list(cbind(result)), Mean.Group.1 = y.1,n.for.1=n1,   
+   Mean.Group.2=y.2,n.for.2=n2,N.Data=N,tValue=t,critical.value=k)
+  }
> #
> #doesn't seem to be a problem thus far
> #let's enter some data
> 
> #scheffe(IV,DV,data,group1,group2,MSw,alpha)
> 
> scheffe(rti,score,dat1,ns,wk5o,12.242,.05)
Error in if (t.compare > k) return <- c("reject H0") else result <- c("accept 
H0") : 
  missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In mean.default(g1) : argument is not numeric or logical: returning NA
2: In mean.default(g2) : argument is not numeric or logical: returning NA
> 

                                          
        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to