[R] Problems with basic loop

2008-06-20 Thread Michael Pearmain
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

2008-06-20 Thread Peter Dalgaard
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

2008-06-20 Thread Michael Pearmain
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

2008-06-20 Thread Peter Dalgaard
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