2016-08-23 18 views
1

私は比率の違いを比較するためにmarascuilio手順を行っています。 私は、次のコード(this tutorialからコピーされ、適応使用しています:私は出力)などのカテゴリが正確に比較されている(また、カテゴリのラベルを印刷することが必要Marascuiloの手順はR

## Set the proportions of interest. 
p = c(0.3481, 0.1730, 0.4788) 
N = length(p) 
value = critical.range = c() 

## Compute critical values. 
for (i in 1:(N-1)) 
{ for (j in (i+1):N) 
{ 
    value = c(value,(abs(p[i]-p[j]))) 
    critical.range = c(critical.range, 
        sqrt(qchisq(.95,3))*sqrt(p[i]*(1-p[i])/12000 + p[j]*(1-p[j])/12000)) 
} 
} 
round(cbind(value,critical.range),3) 

をので。カテゴリは区切らベクトルにリストされている場合、例えばcategories <- c("cat1", "cat2", cat"3)、比較はcat1-cat2cat1-cat3、およびcat2-cat3ある。

どのように私は私の出力にこれらのラベルを追加することができますか?

value critical.range 
[1,] 0.175   0.016 
[2,] 0.131   0.018 
[3,] 0.306   0.016 
+0

何の出力データフレームは、上記の例のようになっているはず? – thepule

+0

例を追加しましたので、基本的に別の列を追加してカテゴリ比較に関する情報を持ちます –

答えて

1

これを試してみてください:

## Set the proportions of interest. 
p = c(0.3481, 0.1730, 0.4788) 
N = length(p) 
value = critical.range = tag = c() 
categories <- c("cat1", "cat2", "cat3") 

## Compute critical values. 
for (i in 1:(N-1)){ 
    for (j in (i+1):N){ 

    value <- c(value,(abs(p[i]-p[j]))) 
    critical.range = c(critical.range, 
         sqrt(qchisq(.95,N-1))*sqrt(p[i]*(1-p[i])/12000 + p[j]*(1-p[j])/12000)) 
    tag = c(tag, paste(categories[i], categories[j], sep = "-")) 

    } 
} 
df <- as.data.frame(cbind(value,critical.range, tag), stringsAsFactors = F) 
df$value <- round(as.numeric(df$value),3) 
df$critical.range <- round(as.numeric(df$critical.range),3) 

出力:

value critical.range  tag 
1 0.175   0.016 cat1-cat2 
2 0.131   0.018 cat1-cat3 
3 0.306   0.016 cat2-cat3 
+1

素晴らしいです。 'df $ significance < - ifelse(df $ value> df $ critical.range、" yes "、" no ") 'を 'df'に追加するので、比較が重要かどうかも示されます。 –