Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中绘制衰减曲线?_R - Fatal编程技术网

如何在R中绘制衰减曲线?

如何在R中绘制衰减曲线?,r,R,我试着从网络上编写代码来绘制衰减曲线,但我从来没有得到一个有点同时有衰减曲线的图形。取而代之的是一个散点图,点之间用直线连接。任何帮助都会很棒。多谢各位 我确实使用了ggplot2:geom_点和geom_平滑、geom_线和其他选项 df <- read.table(text = "d weighted_LD 1.400 0.00002198 1.450 0.00001849 1.500 0.00001652 1.550

我试着从网络上编写代码来绘制衰减曲线,但我从来没有得到一个有点同时有衰减曲线的图形。取而代之的是一个散点图,点之间用直线连接。任何帮助都会很棒。多谢各位

我确实使用了ggplot2:geom_点和geom_平滑、geom_线和其他选项

df <- read.table(text = 
    "d weighted_LD
     1.400   0.00002198
     1.450   0.00001849
     1.500   0.00001652
     1.550   0.00001673
     1.600   0.00001067
     1.650   0.00001647
     1.700   0.00001861
     1.750   0.00001903
     1.800   0.00001949
     1.850   0.00001966
     1.900   0.00001781
     1.950   0.00001327
     2.000   0.00000964
     2.050   0.00001383
     2.100   0.00000492
     2.150   0.00001325
     2.200   0.00001706
     2.250   0.00002061
     2.300   0.00002108
     2.350   0.00001343
     2.400   0.00001627
     2.450   0.00001545
     2.500   0.00000920", header = TRUE)

df不清楚你所说的衰减曲线是什么意思

如果这是关于拟合形式为
y=beta0*exp(beta1*x)
的一般指数模型,那么一个好的起点是
log
-线性化数据并拟合线性模型:

fit <- lm(log(weighted_LD) ~ d, data = df);
fit;
#Call:
#lm(formula = log(weighted_LD) ~ d, data = df)
#
#Coefficients:
#(Intercept)            d
#   -10.5438      -0.2864

df$pred.y <- exp(predict(fit));

ggplot(df, aes(d, weighted_LD)) +
    geom_line() +
    geom_line(aes(d, pred.y), colour = "red", size = 1) +
    labs(x = "d (cM)", y = "Weighted LD")

样本数据
df使用线性模型平滑指数衰减可能不是正确的做法:它适合模型
y=a+B*exp(-x)
,而不是更常见的
y=a*exp(-B*x)
。前者在
A
处有一条渐近线,而不是在
0
处,正如您对衰减曲线所期望的那样。@user2554330我根本不清楚这个问题是关于拟合模型还是关于如何绘制数据。OP需要澄清。大体上我同意你的观点,但“衰减曲线”在数学上是一个相当模糊的术语。这很公平。对您的答案的一个真正有用的改进是在同一个绘图上绘制函数中指定的数据和曲线(可能由
nls()
,或者其他方式找到)。我知道如何在基本图形中做到这一点,但在
ggplot2
@user2554330中却不知道。我的感觉是
nls
会有点过分,尤其是考虑到OP的问题相当分散;我认为一个简单的
log
线性化模型将是一个很好的起点。我添加了一个示例。谢谢,但我仍然不知道如何使用
geom_函数
:-(。当软件的限制决定统计分析时,这是不好的。
ggplot(df, aes(d, weighted_LD)) +
    geom_line() +
    stat_function(fun = function(x) exp(coef(fit)[1] + coef(fit)[2] * x), colour = "red") + 
    labs(x = "d (cM)", y = "Weighted LD")
df <- read.table(text = 
    "d weighted_LD
     1.400   0.00002198
     1.450   0.00001849
     1.500   0.00001652
     1.550   0.00001673
     1.600   0.00001067
     1.650   0.00001647
     1.700   0.00001861
     1.750   0.00001903
     1.800   0.00001949
     1.850   0.00001966
     1.900   0.00001781
     1.950   0.00001327
     2.000   0.00000964
     2.050   0.00001383
     2.100   0.00000492
     2.150   0.00001325
     2.200   0.00001706
     2.250   0.00002061
     2.300   0.00002108
     2.350   0.00001343
     2.400   0.00001627
     2.450   0.00001545
     2.500   0.00000920", header = T)