2017-02-15 7 views
0

データフレームに列を追加する方法を見つけようとしています。これは、値がコントロールと統計的に異なるかどうかによって、2つの治療グループの値をコントロールと似ているか違うかに分類します。ifelse文の基準としてp-valueを使用する方法は?

私はこれさえ可能であるかどうかわからないんだけど、のは、私は

df <- data_frame(species = rep(c("X1", "X2", "X3", "X4"), times = 12), 
     condition = rep(c("Control", "Treat1", "Treat2"), each = 16), 
     values = rep(c(rnorm(16, mean = 16, sd = 4), 
         rnorm(16, mean = 14, sd = 3), 
         rnorm(16, mean = 5, sd = 10)))) 

に似たいくつかのデータを持っているそして今、私は列を追加したいasumeてみましょう。 私はそう

df2 <- df %>% 
    group_by(species) %>% 
    mutate(new_column = ifelse("Value of each condition statistically different from Control", "Different", "Same") 

のようなものを使用して考えていた、ifelse文の中の統計的検定を適用する方法はありますか?

また、データを分類するための簡単な基準を使用してください。たぶん、コントロールの±1標準偏差内にあるすべての値を「同じ」として分類しますか?

ご協力いただきありがとうございます。 あなたの返信や提案をお待ちしております。

+0

実行するテストをより明確に定義できますか?これは、ポストホックテストを行っていますか? 'broom'パッケージも見てください。それは栄光です。 – boshek

答えて

1

「t検定」とそのさまざまな前提を調べたいと思うでしょう。これらは、正規分布からの2つのサンプルが同じ平均を有するかどうかを決定することを意味する。 Rのデフォルトは、分散が等しくないと仮定することです。これは、シミュレートされたセットに適しています。

私はそう

> set.seed(1) 
> control <- rnorm(16, mean = 16, sd = 4) 
> treat1 <- rnorm(16, mean = 14, sd = 3) 
> treat2 <- rnorm(16, mean = 5, sd = 10) 
> lapply(list(treat1,treat2), function(t) t.test(t,control)$p.value < 0.05) 
[[1]] 
[1] FALSE 

[[2]] 
[1] TRUE 

を論争データをスキップします、このデータのシミュレートされたセットのために、t検定は、治療1および5%の有意水準でコントロールを区別しません。別のサンプルでは、​​それは可能性があります。より大きいサンプルでは、​​可能性が高くなります。

関連する問題