[R] Problems with basic loop
I'm having trouble creating a looping variable and i can't see wher ethe problem arises from any hep gratfully appreciated First create a table x<-table(SURVEY$n_0,exposed) > x exposed False True Under 16241 16-19 689 20-24 190 37 25-34 555 204 35-44 330 87 45-54 198 65 55-64 67 35 65+ 108 Now ectors to store counts and column proportions > xT<-x[,"True"] > xF<-x[,"False"] > yT<-x[,"True"]/colSums(x) > yF<-x[,"False"]/colSums(x) check length for dynamic looping > length(yT) [1] 8 now create loop > for(i in 1:length(yT)){ + pwr.2p2n.test(2*(asin(sqrt(yT[i]))-asin(sqrt(yF[i]))),n1=xT[i],n2=xF[i]) + } Error in pwr.2p2n.test(2 * (asin(sqrt(yT[i])) - asin(sqrt(yF[i]))), n1 = xT[i], : number of observations in the first group must be at least 2 this confuses me as if i enter the data as values the procedure works? Thanks in advance [[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.
Re: [R] Problems with basic loop
Michael Pearmain wrote: > I'm having trouble creating a looping variable and i can't see wher ethe > problem arises from any hep gratfully appreciated > > First create a table > > x<-table(SURVEY$n_0,exposed) > >> x >> > exposed >False True > Under 16241 > 16-19 689 > 20-24 190 37 > 25-34 555 204 > 35-44 330 87 > 45-54 198 65 > 55-64 67 35 > 65+ 108 > > Now ectors to store counts and column proportions > > >> xT<-x[,"True"] >> xF<-x[,"False"] >> yT<-x[,"True"]/colSums(x) >> yF<-x[,"False"]/colSums(x) >> > > check length for dynamic looping > >> length(yT) >> > [1] 8 > > now create loop > >> for(i in 1:length(yT)){ >> > + pwr.2p2n.test(2*(asin(sqrt(yT[i]))-asin(sqrt(yF[i]))),n1=xT[i],n2=xF[i]) > + } > Error in pwr.2p2n.test(2 * (asin(sqrt(yT[i])) - asin(sqrt(yF[i]))), n1 = > xT[i], : > number of observations in the first group must be at least 2 > > this confuses me as if i enter the data as values the procedure works? > > Thanks in advance > Er, the first row "under 16" has a count of 1 in the "True" column and it confuses you that you get an error saying that you need at least 2?? But what looks _really_ confused is what you are trying to do in the first place: The p's you are passing to pwr.2p2n are the empirical relative frequencies of the individual age groups. This sort of reverses cause and effect (presumably the exposure does not cause middle age) and it is pretty odd to compare a particular row in a table with everything else jumbled together but worse, it is post-hoc power calculation, which is just a plain Bad Idea (as several people have pointed out before). -- O__ Peter Dalgaard Øster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 __ 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.
Re: [R] Problems with basic loop
Thanks for the reply Peter, > I did just see that i had put the first error message,(agreed rather an > obvious error) in and not the second i received > > Warning message: > In asin(sqrt(yF[i])) : NaNs produced > > The reason i'm looking at this is advert exposure True and False. > > I'm inspecting age to asses weather or not to weight data in order to > normalise groups for later questions, > The questions that i am looking at later on are not scale based questions > so i cannot perform t-tests on these, so i thought the only viable way was > to look at z-tests for proportions to check for post-hoc differences > > Any advise on other methods would be gratefully taken > > > > On Fri, Jun 20, 2008 at 11:14 AM, Peter Dalgaard <[EMAIL PROTECTED]> > wrote: > >> Michael Pearmain wrote: >> > I'm having trouble creating a looping variable and i can't see wher ethe >> > problem arises from any hep gratfully appreciated >> > >> > First create a table >> > >> > x<-table(SURVEY$n_0,exposed) >> > >> >> x >> >> >> > exposed >> >False True >> > Under 16241 >> > 16-19 689 >> > 20-24 190 37 >> > 25-34 555 204 >> > 35-44 330 87 >> > 45-54 198 65 >> > 55-64 67 35 >> > 65+ 108 >> > >> > Now ectors to store counts and column proportions >> > >> > >> >> xT<-x[,"True"] >> >> xF<-x[,"False"] >> >> yT<-x[,"True"]/colSums(x) >> >> yF<-x[,"False"]/colSums(x) >> >> >> > >> > check length for dynamic looping >> > >> >> length(yT) >> >> >> > [1] 8 >> > >> > now create loop >> > >> >> for(i in 1:length(yT)){ >> >> >> > + >> pwr.2p2n.test(2*(asin(sqrt(yT[i]))-asin(sqrt(yF[i]))),n1=xT[i],n2=xF[i]) >> > + } >> > Error in pwr.2p2n.test(2 * (asin(sqrt(yT[i])) - asin(sqrt(yF[i]))), n1 = >> > xT[i], : >> > number of observations in the first group must be at least 2 >> > >> > this confuses me as if i enter the data as values the procedure works? >> > >> > Thanks in advance >> > >> Er, the first row "under 16" has a count of 1 in the "True" column and >> it confuses you that you get an error saying that you need at least 2?? >> >> But what looks _really_ confused is what you are trying to do in the >> first place: The p's you are passing to pwr.2p2n are the empirical >> relative frequencies of the individual age groups. This sort of reverses >> cause and effect (presumably the exposure does not cause middle age) and >> it is pretty odd to compare a particular row in a table with everything >> else jumbled together but worse, it is post-hoc power calculation, which >> is just a plain Bad Idea (as several people have pointed out before). >> >> -- >> O__ Peter Dalgaard Øster Farimagsgade 5, Entr.B >> c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K >> (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 >> ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 >> >> >> > > > -- > Michael Pearmain > Senior Statistical Analyst > > > 1st Floor, 180 Great Portland St. London W1W 5QZ > t +44 (0) 2032191684 > [EMAIL PROTECTED] > [EMAIL PROTECTED] > > > Doubleclick is a part of the Google group of companies [[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.
Re: [R] Problems with basic loop
Michael Pearmain wrote: > Thanks for the reply Peter, > > >> I did just see that i had put the first error message,(agreed rather an >> obvious error) in and not the second i received >> >> Warning message: >> In asin(sqrt(yF[i])) : NaNs produced >> Ah. Notwithstanding other remarks, that one would be due to yT<-x[,"True"]/colSums(x) The divisor here is a vector of length two!! So every 2nd time you are dividing with the wrong thing and in one case that gets you a relative frequency bigger than 1... >> The reason i'm looking at this is advert exposure True and False. >> >> I'm inspecting age to asses weather or not to weight data in order to >> normalise groups for later questions, >> The questions that i am looking at later on are not scale based questions >> so i cannot perform t-tests on these, so i thought the only viable way was >> to look at z-tests for proportions to check for post-hoc differences >> >> Any advise on other methods would be gratefully taken >> >> I still don't see where the notion of power needs to come in. Shouldn't the effect size for "The questions that I am looking at later" enter somehow? If you just want to know whether there is age-dependent exposure, how about chisq.test(SURVEY$n_0,exposed) (or wilcox.test if you want something that takes the group ordering into account, or prop.trend.test). If, for better or worse, you want to test single rows, you could use chisq.test(SURVEY$n_0 == "35-44",exposed) etc. >> >> On Fri, Jun 20, 2008 at 11:14 AM, Peter Dalgaard <[EMAIL PROTECTED]> >> wrote: >> >> >>> Michael Pearmain wrote: >>> I'm having trouble creating a looping variable and i can't see wher ethe problem arises from any hep gratfully appreciated First create a table x<-table(SURVEY$n_0,exposed) > x > > exposed False True Under 16241 16-19 689 20-24 190 37 25-34 555 204 35-44 330 87 45-54 198 65 55-64 67 35 65+ 108 Now ectors to store counts and column proportions > xT<-x[,"True"] > xF<-x[,"False"] > yT<-x[,"True"]/colSums(x) > yF<-x[,"False"]/colSums(x) > > check length for dynamic looping > length(yT) > > [1] 8 now create loop > for(i in 1:length(yT)){ > > + >>> pwr.2p2n.test(2*(asin(sqrt(yT[i]))-asin(sqrt(yF[i]))),n1=xT[i],n2=xF[i]) >>> + } Error in pwr.2p2n.test(2 * (asin(sqrt(yT[i])) - asin(sqrt(yF[i]))), n1 = xT[i], : number of observations in the first group must be at least 2 this confuses me as if i enter the data as values the procedure works? Thanks in advance >>> Er, the first row "under 16" has a count of 1 in the "True" column and >>> it confuses you that you get an error saying that you need at least 2?? >>> >>> But what looks _really_ confused is what you are trying to do in the >>> first place: The p's you are passing to pwr.2p2n are the empirical >>> relative frequencies of the individual age groups. This sort of reverses >>> cause and effect (presumably the exposure does not cause middle age) and >>> it is pretty odd to compare a particular row in a table with everything >>> else jumbled together but worse, it is post-hoc power calculation, which >>> is just a plain Bad Idea (as several people have pointed out before). >>> >>> -- >>> O__ Peter Dalgaard �ster Farimagsgade 5, Entr.B >>> c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K >>> (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 >>> ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 >>> >>> >>> >>> >> -- >> Michael Pearmain >> Senior Statistical Analyst >> >> >> 1st Floor, 180 Great Portland St. London W1W 5QZ >> t +44 (0) 2032191684 >> [EMAIL PROTECTED] >> [EMAIL PROTECTED] >> >> >> Doubleclick is a part of the Google group of companies >> > > [[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. > -- O__ Peter Dalgaard Øster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 __ R-help@r-project.org mailing list h