Re: [R] bootstrap CI of the difference between 2 Cramer's V

2022-06-05 Thread Daniel Nordlund
There are a few problems with the "rewrite" of the code, both 
syntactically and conceptually.
1. Goodman-Kruskal gamma is for ordinal data.  You should create your 
"shopping" and "statut" variables as factors, ordered from lowest to 
highest using the levels= parameter in  the function, factor
2. In your function, G, you use "data[index,][1,2]"  where you should 
have used either "g1[,c(1,2)]", or "g2[,c(1,2)]".  You should read up on 
Indexing using [] on data frames, to make sure you understand what the 
original code was doing.
3.  The base cor function does not calculate a Goodman-Kruskal gamma 
(unless somebody has written a new version).  So you need to find an 
appropriate function and you may need to structure your data differently 
for calculating gamma, depending on what parameters the function 
demands.  Google is your friend here, search for    "R Goodman Kruskal 
gamma"


Since this is looking like homework to me, I suggest you ask your 
instructor about some of this.


Best of luck,

Dan


On 6/5/2022 9:21 AM, varin sacha wrote:

Dear Daniel,
Dear R-experts,

I really thank you a lot Daniel. Nobody had answered to me offline. So, thanks.
I have tried in the same vein for the Goodman-Kruskal gamma for ordinal data. 
There is an error message at the end of the code. Thanks for your help.


##
library(ryouready)
library(boot)

shopping1<-c("très important","important","pas important","pas important","important","très important","important","pas important","très important","très important","important","pas important","pas important","important","très important","très important","important","pas important","pas 
important","important","très important","très important","important","pas important","pas important","important","très important","très important","important","pas important","pas important","important","très important","très important","important","pas important","pas 
important","important","très important","important")

statut1<-c("riche","pas riche","moyennement riche","moyennement riche","riche","pas riche","moyennement riche","moyennement riche","riche","pas riche","moyennement riche","riche","pas riche","pas riche","riche","moyennement riche","riche","pas riche","pas riche","pas 
riche","riche","riche","moyennement riche","riche","riche","moyennement riche","moyennement riche","moyennement riche","pas riche","pas riche","riche","pas riche","riche","pas riche","riche","moyennement riche","riche","pas riche","moyennement riche","riche")

shopping2<-c("important","pas important","très important","très important","important","très important","pas important","important","pas important","très important","important","important","important","important","pas important","très important","très important","important","pas 
important","très important","pas important","très important","pas important","très important","important","très important","important","pas important","pas important","important","pas important","très important","pas important","pas important","important","important","très important","très 
important","pas important","pas important")

statut2<-c("moyennement riche","pas riche","riche","moyennement riche","moyennement riche","moyennement riche","pas riche","riche","riche","pas riche","moyennement riche","riche","riche","riche","riche","riche","pas riche","moyennement riche","moyennement riche","pas 
riche","moyennement riche","pas riche","pas riche","pas riche","moyennement riche","riche","moyennement riche","riche","pas riche","riche","moyennement riche","blue","moyennement riche","pas riche","pas riche","riche","riche","pas riche","pas riche","pas riche")

f1 <- data.frame(shopping=shopping1,statut=statut1,group='grp1')
f2 <- data.frame(shopping=shopping2,statut=statut2,group='grp2')
f3 <- rbind(f1,f2)

G <- function(x, index) {

# calculate goodman for group 1 bootstrap sample

    g1 <-x[index,][x[,3]=='grp1',]
    goodman_g1 <- cor(data[index,][1,2])
   
  # calculate goodman for group 2 bootstrap sample

    g2 <-x[index,][x[,3]=='grp2',]
    goodman_g2 <- cor(data[index,][3,4])
   
  # calculate difference

    goodman_g1-goodman_g2
    }
  


# use strata parameter in function boot to resample within each group
results <- boot(data=f3,statistic=G, strata=as.factor(f3$group),R=2000)

results
boot.ci(results)
##



Le samedi 4 juin 2022 à 09:31:36 UTC+2, Daniel Nordlund  
a écrit :





On 5/28/2022 11:21 AM, varin sacha via R-help wrote:

Dear R-experts,

While comparing groups, it is better to assess confidence intervals of those 
differences rather than comparing confidence intervals for each group.
I am trying to calculate the CIs of the difference between the two Cramer's V 
and not the CI to the estimate of each group’s Cramer's V.

Here below my toy R example. There are error messages. Any help would be highly 
appreciated.

##
library(questionr)
library(boot)


Re: [R] bootstrap CI of the difference between 2 Cramer's V

2022-06-04 Thread Ebert,Timothy Aaron
I would calculate the difference and the CI about that difference. You would 
not get the same thing by comparing the bootstrap CI of the group means.
One use for this is to determine if the confidence interval for the difference 
in means includes zero. An alternative would be to use a more conventional test 
(rather than calculate a difference) and then find a mean p-value and a 
confidence interval about the p-value. This gives a better assessment of the 
p-value but is harder to decide if the test outcome is "significant." 

You might also consider whether you want a permutation test, a randomization 
test, or a bootstrap. A permutation test will look at all possible combinations 
of the data once. Use this approach when computationally reasonable. A 
randomization test will look at a random subset of all possible combinations, 
but may include repeats of some combinations. Both of these do not replace 
values. The bootstrap replaces values and will therefore tend to minimize the 
effects of outliers in the data. With small datasets a risk is that there are 
few permutations and performing a randomization test with 1,000,000 
randomizations on data with 4000 permutations is not good.

Tim

-Original Message-
From: R-help  On Behalf Of Daniel Nordlund
Sent: Saturday, June 4, 2022 3:31 AM
To: varin sacha ; r-help@r-project.org
Subject: Re: [R] bootstrap CI of the difference between 2 Cramer's V

[External Email]

On 5/28/2022 11:21 AM, varin sacha via R-help wrote:
> Dear R-experts,
>
> While comparing groups, it is better to assess confidence intervals of those 
> differences rather than comparing confidence intervals for each group.
> I am trying to calculate the CIs of the difference between the two Cramer's V 
> and not the CI to the estimate of each group’s Cramer's V.
>
> Here below my toy R example. There are error messages. Any help would be 
> highly appreciated.
>
> ##
> library(questionr)
> library(boot)
>
> gender1<-c("M","F","F","F","M","M","F","F","F","M","M","F","M","M","F"
> ,"M","M","F","M","F","F","F","M","M","M","F","F","M","M","M","F","M","
> F","F","F","M","M","F","M","F")
> color1<-c("blue","green","black","black","green","green","blue","blue"
> ,"green","black","blue","green","blue","black","black","blue","green",
> "blue","green","black","blue","blue","black","black","green","green","
> blue","green","black","green","blue","black","black","blue","green","g
> reen","green","blue","blue","black")
>
> gender2<-c("F","F","F","M","M","F","M","M","M","F","F","M","F","M","F"
> ,"F","M","M","M","F","M","M","M","F","F","F","M","M","M","F","M","M","
> M","F","F","F","M","F","F","F")
> color2<-c("green","blue","black","blue","blue","blue","green","blue","
> green","black","blue","black","blue","blue","black","blue","blue","gre
> en","blue","black","blue","blue","black","black","green","blue","black
> ","green","blue","green","black","blue","black","blue","green","blue",
> "green","green","blue","black")
>
> f1=data.frame(gender1,color1)
> tab1<-table(gender1,color1)
> e1<-cramer.v(tab1)
>
> f2=data.frame(gender2,color2)
> tab2<-table(gender2,color2)
> e2<-cramer.v(tab2)
>
> f3<-data.frame(e1-e2)
>
> cramerdiff=function(x

[R] bootstrap CI of the difference between 2 Cramer's V

2022-05-28 Thread varin sacha via R-help
Dear R-experts,

While comparing groups, it is better to assess confidence intervals of those 
differences rather than comparing confidence intervals for each group.
I am trying to calculate the CIs of the difference between the two Cramer's V 
and not the CI to the estimate of each group’s Cramer's V.

Here below my toy R example. There are error messages. Any help would be highly 
appreciated.

##
library(questionr)
library(boot)

gender1<-c("M","F","F","F","M","M","F","F","F","M","M","F","M","M","F","M","M","F","M","F","F","F","M","M","M","F","F","M","M","M","F","M","F","F","F","M","M","F","M","F")
color1<-c("blue","green","black","black","green","green","blue","blue","green","black","blue","green","blue","black","black","blue","green","blue","green","black","blue","blue","black","black","green","green","blue","green","black","green","blue","black","black","blue","green","green","green","blue","blue","black")

gender2<-c("F","F","F","M","M","F","M","M","M","F","F","M","F","M","F","F","M","M","M","F","M","M","M","F","F","F","M","M","M","F","M","M","M","F","F","F","M","F","F","F")
color2<-c("green","blue","black","blue","blue","blue","green","blue","green","black","blue","black","blue","blue","black","blue","blue","green","blue","black","blue","blue","black","black","green","blue","black","green","blue","green","black","blue","black","blue","green","blue","green","green","blue","black")

f1=data.frame(gender1,color1)
tab1<-table(gender1,color1)
e1<-cramer.v(tab1)

f2=data.frame(gender2,color2)
tab2<-table(gender2,color2)
e2<-cramer.v(tab2)

f3<-data.frame(e1-e2)

cramerdiff=function(x,w){
y<-tapply(x[w,1], x[w,2],cramer.v)
y[1]-y[2]
}

results<-boot(data=f3,statistic=cramerdiff,R=2000)
results

boot.ci(results,type="all")
##

 

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.