2017-04-22 6 views
1

散布図データを使ってロジスティックなトレンドラインをプロットしたいと思いますが、これについてどうやって進んでいくのか分かりません。私はWebを検索し、3つのパラメータを必要とする関数を見つけましたが、これらを見つける方法はわかりません。どんな助けでも大歓迎です。r散布図を使ってロジスティック曲線に合わせる

データ:

x   y 
1 0 36.4161850 
2 0 94.2196532 
3 0 94.7976879 
4 0 98.2658960 
5 0 97.1098266 
6 250 40.4624277 
7 250 41.0404624 
8 250 23.6994220 
9 250 48.5549133 
10 250 61.2716763 
11 500 5.7803468 
12 500 3.4682081 
13 500 0.5780347 
14 500 2.8901734 
15 500 0.0000000 
16 750 0.0000000 
17 750 0.0000000 
18 750 0.0000000 
19 750 0.0000000 
20 750 0.0000000 

dummy <- structure(list(x = c("0", "0", "0", "0", "0", "250", "250", "250", 
"250", "250", "500", "500", "500", "500", "500", "750", "750", 
"750", "750", "750"), y = c(36.4161849710983, 94.2196531791908, 
94.7976878612717, 98.2658959537572, 97.1098265895954, 40.4624277456647, 
41.0404624277457, 23.6994219653179, 48.5549132947977, 61.271676300578, 
5.78034682080925, 3.46820809248555, 0.578034682080925, 2.89017341040462, 
0, 0, 0, 0, 0, 0)), reshapeLong = structure(list(varying = structure(list(
    Proportion = c("m0.perc", "m250.perc", "m500.perc", "m750.perc" 
    )), .Names = "Proportion", v.names = "Proportion", times = c("m0.perc", 
"m250.perc", "m500.perc", "m750.perc")), v.names = "Proportion", 
    idvar = "id", timevar = "Distance"), .Names = c("varying", 
"v.names", "idvar", "timevar")), .Names = c("x", "y"), row.names = c(NA, 
-20L), class = "data.frame") 

私は何を目指してるが高いから始まり、低終了ロジスティック曲線であり、ミラーリング「S」あなたが好きなら、散布図のデータによる。

plot(y~x, data = dummy) 

enter image description here

任意の助けてくれてありがとう

+0

https://en.wikipedia.org/wiki/Logistic_functionを見てから、これは良いスタートになりそうです。適切なパラメータ記号/曲線の形状を見るための関数を持った遊びを持っています。f = function(L、k、x0、x)L /(1 + exp(-k *(x-x0))) plot(f(100、-0.01,300,1:600)、type = "l") '(非常に構造化されたアプローチではない! start = c(L = 100、k = -0.1、x0 = 300)、data = min(n -L /(1 + exp {-k *ダミー) '。 [現在ダミー$ x - - as.numeric(ダミー$ x) 'をすることを忘れないでください] – user2957945

+0

あなたの返事をありがとう。しかし、あなたの答えは私には分かりません。最初の部分はグラフを描画しますが、これを散布図にオーバーレイしません。答えの2番目の部分はモデルに適合しますが、何にも合いませんか? – FlyingDutch

+0

あなたは曲線にフィットしたいが、パラメータを推定する必要があると書いています。上のコメントの非線形モデルはこれらを推定します。初期関数f、およびplotを使用して、nlsLM関数の開始パラメータを検索しました。最終的なプロットを行うには、線形回帰を行っていた場合にフィッティングした線のように、モデルでpredictを使用することができます。 – user2957945

答えて

1

(用量応答曲線用)パッケージdrcは役に立つかもしれません。

3つまたは4つのパラメータを持つ連続データのロジスティック曲線を見積もることができます。この機能は、最適化アルゴリズムの適切な開始値を自動的に見つけます(例:nlsと対照的)。また、簡単なプロット方法もあります。

3つのパラメータ(引数fct = L.3())の例を示します。第4のパラメータは、より低い漸近線であり、0に固定される.4つのパラメータモデルでは、より低い漸近線が推定される。

> dummy$x <- as.numeric(dummy$x) 
> 
> library("drc") 
> mL <- drm(y ~ x, data = dummy, fct = L.3(), type = "continuous") 
> summary(mL) 

Model fitted: Logistic (ED50 as parameter) with lower limit fixed at 0 (3 parms) 

Parameter estimates: 

       Estimate Std. Error t-value p-value 
b:(Intercept) 0.013938 0.010315 1.351208 0.1943 
d:(Intercept) 86.789553 10.417186 8.331382 0.0000 
e:(Intercept) 248.714704 30.029077 8.282463 0.0000 

Residual standard error: 

14.61229 (17 degrees of freedom) 

> plot(mL, type = "all") 
> 

enter image description here

+0

これは簡単な解決策のようです。しかし、なぜx軸が変わったのですか? 0から800 mまで走る元の軸のように視覚化することができますか? – FlyingDutch

+0

これは、生態毒性学において、x軸は製品の線量であり、しばしば対数スケールで表されるからです。したがって、xのログスケールがデフォルトです。 'plot(mL、type =" all "、log = '')'を元の縮尺でプロットし、 '?plot.drc'でこのメソッドのヘルプを見てください。 – Gilles

関連する問題