2013-10-24 49 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的第一个导数。

但我认为你更喜欢物流增长模式。