2013-10-24 111 views
4

我是一個初學者到R和我試圖用曲線上的數據集(例如)可能看起來像下面:S形曲線擬合R中

(x- value) (y-value) 
105 423 
115 471 
125 567 
135 808 
145 921.5 
155 1040 

x值的代表刺激量和y值代表運動反應(以uV爲單位)。這些是10個科目的平均值,其中每個科目的x值相同。

有人告訴我,這個數據集通常遵循S形擬合。我試着用下面的裝修吧:

fit <- lm(y ~ poly(x, 3)) 

但我不知道這是否是合適的方式做到這一點:(

我的代碼看起來像這樣至今:

p <- ggplot (data, aes(x, y)) + 
    geom_point(shape= 21, fill= "blue", colour= "black", size=2) + 
    xlab("X value") + ylab("Y value") + 
    geom_smooth(method= "lm", se= FALSE, colour= "red", formula=y ~ poly(x, 3, raw=TRUE)) + 
    geom_errorbar(aes(ymin=y-SE, ymax=y+SE), width=.9)+ 
    ggtitle ("Title") 
p 

此外:一旦我符合曲線,我也想獲得斜率(以曲線最陡峭點處的切線值計算)

在此先感謝,任何幫助將會很好Ÿ讚賞!

+0

也許,還有,[this](http://stackoverflow.com/questions/15102254/how-do-i-add-different-trend-lines-in-r)有幫助。 –

+3

我不明白這是如何重複..因爲我使用ggplot他們不是,這絕對不是一個功課問題。我正在嘗試制定一個自動化系統來處理所獲得的大量患者數據。我只想爲它們擬合一條曲線,並在這條擬合曲線的最陡點處獲得斜率。 – Purrina

+0

'ggplot2'是爲繪圖而開發的。試圖從方便的曲線擬合功能提取功能是不明智的。 (這是一個由對Excel強烈奉獻的人建議的策略嗎?)你應該在常規R中做你的曲線擬合。 –

回答

1

我不知道聚()函數是如何工作的,但如果你想有一個3階多項式擬合只需使用:

lm1=lm(y~I(x^3)+I(x^2)+x) 

,使一個相當不錯的選擇你上面的玩具數據。 對於拐點處的斜坡。我會將二階導數設置爲零並求解x。然後計算該x的第一個導數。

但我認爲你更喜歡物流增長模式。