3

私(Rの初心者)は、遺伝子発現に対する2つの治療の効果に関するランダム化研究を分析しています. ベースライン時と 1 年後に 5 つの異なる遺伝子を評価しました。遺伝子倍数は、1 年後の値をベースライン値で割った値として計算されます。

遺伝子例:IL10_BL IL10_1Y IL10_fold

遺伝子発現は、通常 0.1 ~ 5.0 の範囲の連続変数として測定されます。100 人の患者が、スタチン療法または食事療法のいずれかに無作為に割り付けられました。

次のプロットを作成したいと思います: - Y 軸は平均遺伝子発現を 95% の信頼限界で表示する必要があります - X 軸は、5 つの遺伝子のそれぞれのベースライン、1 年、倍数の値を治療別にグループ化して、カテゴリカルにする必要があります。したがって、2 つのグループの各遺伝子に 3 つの値を持つ 5 つの遺伝子は、X 軸上の 30 のカテゴリを意味します。同じ遺伝子の点が線で結ばれると本当にいいですね。

私は(ggplot2を使用して)これを自分でやろうとしましたが、成功しませんでした。私はこのように見える粗いデータから直接それをやろうとしました(最初の6つの観察と2つの異なる遺伝子):

    genes <- read.table(header=TRUE, sep=";", text = 
    "treatment;IL10_BL;IL10_1Y;IL10_fold;IL6_BL;IL6_1Y;IL6_fold;
    diet;1.1;1.5;1.4;1.4;1.4;1.1;
    statin;2.5;3.3;1.3;2.7;3.1;1.1;
    statin;3.2;4.0;1.3;1.5;1.6;1.1;
    diet;3.8;4.4;1.2;3.0;2.9;0.9;
    statin;1.1;3.1;2.8;1.0;1.0;1.0;
    diet;3.0;6.0;2.0;2.0;1.0;0.5;")

これを行うための助け(または同様のスレッドへのリンク)をいただければ幸いです。

4

1 に答える 1

1

BLまず、観測が、1Y、またはのいずれであるかを示すカテゴリ変数が 1 つの列 (X 列) に含まれるように、データを長い形式に変換する必要がありますfold

(あなたのコマンドは、最初に取り除く必要があるかもしれない空の列を作成しますgenes$X = NULL:)

library(reshape2)
genes.long = melt(genes, id.vars='treatment', value.name='expression')

次に、異なる列に遺伝子と測定値 (ベースライン、1 年、倍数) が必要です (この質問から)。

genes.long$gene = as.character(lapply(strsplit(as.character(genes.long$variable), split='_'), '[', 1))
genes.long$measurement = as.character(lapply(strsplit(as.character(genes.long$variable), split='_'), '[', 2))

そして、あなたが期待する順序で測定を入れてください:

genes.long$measurement = factor(genes.long$measurement, levels=c('BL', '1Y', 'fold'))

stat_summary()次に、平均と信頼区間の呼び出しを使用してプロットできます。ファセットを使用してグループ (治療と遺伝子の組み合わせ) を分離します。

ggplot(genes.long, aes(measurement, expression)) + 
stat_summary(fun.y = mean, geom='point') + 
stat_summary(fun.data = 'mean_cl_boot', geom='errorbar', width=.25) +
facet_grid(.~treatment+gene)

遺伝子

facet_grid(.~gene+treatment)トップレベルを治療ではなく遺伝子にしたい場合は、順序を逆にすることができます。

于 2014-08-09T19:17:54.373 に答える