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.