私のモデルは、Rベースのグラフィックスではありますが、ggplot2でプロットしたときに漸近線に向かって進まない。 ggplot2では、X軸上の特定の点(画像は以下を含む)で停止し、私は、それが私が変換するpredict()
を使用しています。このポストggplot2でdrcモデルをプロットする。 seq()との問題
の底部にポストされたデータをこれがseq()
に関連している90%確信drm(用量応答パッケージ)ロジットモデルからのデータ。基本グラフィックスでは、ggplot2ではS字状のカーブがすばらしく見えます。
(私はあなたがそれを必要としないと思うが、念のために、データは、この記事の一番下に含まれている)
library(drc)
library(ggplot2)
ロジットモデルにデータをフィット
mod1 <- drm(probability ~ (dose), weights = total, data = mydata1, type ="binomial", fct = LL.2())
plot(mod1,broken=FALSE,type="all",add=FALSE, col= "purple", xlim=c(0, 10000))
Image of Base graphic 2-parameter logit
著者のデモのコードを使用してモデルのデータを抽出しています(下記リンク先):
newdata1 <-expand.grid(dose=exp(seq(log(0.5),log(100),length=200)))
pm1<- predict(mod1, newdata=newdata1,interval="confidence")
newdata1$p1 <-pm1[,1]
newdata1$pmin1 <-pm1[,2]
newdata1$pmax1 <- pm1[,3]
最後にggplot2グラフィック。
p1 <- ggplot(mydata1, aes(x=dose01,y=probability))+
geom_point()+
geom_ribbon(data=newdata1, aes(x=dose,y=p1,
ymin=pmin1,ymax=pmax1),alpha=0.2,color="blue",fill="pink") +
geom_step(data=newdata1, aes(x=dose,y=p1))+
coord_trans(x="log") + #creates logline for x axis
xlab("dose")+ylab("response")
Images 1&2 and 3&4 seqによって私のプロットの違いを示します。
seq()
に以下を使用すると、グラフィックがデータよりも先に引き出されます。 (seq(log(0.5),**log(10000)**,length=200)))
(画像1 & 2)
私はそれを研究にもかかわらず、seq()
を理解していません。誰かが私のプロットで起こっていることを理解するのに役立ちますか?
seqの最初の用語は下限を定義しているようです。 3番目の用語は何を定義していますか?あなたは画像でこれを見ることができます3 & 4 - グラフィックはまともではありません。私はこの問題をやや難解にしてきましたが、それでもなおinfinに向かって進まないのです。私は8つのロジットモデルを共同作図するので、これはわずかな問題です。
- トラブルggplot2でDRC/DRMモデルをプロットした人のため (私はこれらのタイトルを持つので、裸つ以上のリンクを投稿することはできません)
、以下の記事は非常に有用だった:検索 プロット用量 - 応答曲線-と-ggplot2-と-DRC
と、このタイトルのために:プロット用量 - 応答曲線-と-ggplot2-と-DRC
私が続いてきましたDRCの著者は、彼の記事のサポート情報に記載されています - このコードの一部は上記で使用されています。論文タイトル:R、Christopher Ritzを用いた線量 - 応答解析PlosOne。
このデータは理想的な形式よりも少ない、私は
> dput(mydata1)
structure(list(dose = c(25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 75L, 75L, 75L, 75L, 75L, 75L,
75L, 75L, 75L, 75L, 75L, 75L, 75L, 75L, 75L, 100L, 100L, 100L,
100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L,
100L, 150L, 150L, 150L, 150L, 150L, 150L, 150L, 150L, 150L, 150L,
150L, 150L, 150L, 150L, 150L, 200L, 200L, 200L, 200L, 200L, 200L,
200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L, 200L), total = c(25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L,
25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L), affected = c(2L,
0L, 0L, 0L, 0L, 1L, 1L, 2L, 2L, 4L, 1L, 1L, 4L, 0L, 10L, 0L,
1L, 0L, 1L, 0L, 3L, 0L, 4L, 2L, 0L, 2L, 0L, 1L, 2L, 3L, 2L, 0L,
2L, 0L, 0L, 4L, 0L, 1L, 2L, 3L, 0L, 21L, 1L, 3L, 1L, 2L, 7L,
0L, 0L, 0L, 0L, 8L, 7L, 3L, 7L, 2L, 2L, 10L, 3L, 4L, 0L, 7L,
0L, 3L, 3L, 20L, 25L, 22L, 23L, 22L, 18L, 14L, 20L, 20L, 21L),
probability = c(0.08, 0, 0, 0, 0, 0.04, 0.04, 0.08, 0.08,
0.16, 0.04, 0.04, 0.16, 0, 0.4, 0, 0.04, 0, 0.04, 0, 0.12,
0, 0.16, 0.08, 0, 0.08, 0, 0.04, 0.08, 0.12, 0.08, 0, 0.08,
0, 0, 0.16, 0, 0.04, 0.08, 0.12, 0, 0.84, 0.04, 0.12, 0.04,
0.08, 0.28, 0, 0, 0, 0, 0.32, 0.28, 0.12, 0.28, 0.08, 0.08,
0.4, 0.12, 0.16, 0, 0.28, 0, 0.12, 0.12, 0.8, 1, 0.88, 0.92,
0.88, 0.72, 0.56, 0.8, 0.8, 0.84)), .Names = c("dose", "total",
"affected", "probability"), row.names = c(NA, -75L), class = "data.frame")
[imgurリンク](https://imgur.com/r4xmoB2)私はここに別の画像を主催してきました 説明をありがとうございました、しかし... 上の2つ(A1、A2)は同じ 'seq() '値を共有し、中間の用語はlog(10000)に設定します。下の2つ(B1、B2)はlog(1000)に設定されます。私は同じ 'cartesian_coord()'制限をA2、B2に置いた。これとは別に、コードには他の違いはありません。 - しかし、曲線(AとBの間)はとても異なっています。 ** – Arch
'geom_point()'は、 'seq()'用語の影響を受けないデータセットを使って点をプロットしているように見えますが、AとBグループの動作が違うのはなぜですか?しかし、モデルカーブは、log x 'coord_trans()'コマンドを実装しているにもかかわらず、x軸上のドーズ量を減らしても依然として一致します。 – Arch
'cartesian_coord'は非変換座標系です。それが理由です。あなたの質問のコードと互換性があるために 'coord_trans'に' limx'引数を使います。 –