这个简短的R脚本有什么作用?

时间:2014-06-10 21:00:43

标签: r nls

我知道python和C ++,但对R的经验很少。我应该弄清楚我的老同事的脚本是做什么的 - 他已经好几年了但是我有他的文件。他有大约10个python文件,它们将数据传递到临时文件,然后进入下一个我能够跟踪的python脚本,但是他有一个我不理解的R脚本,因为我不知道R. / p>

R脚本的输入是temp4.txt:

1.414442 0.0043
1.526109 0.0042
1.600553 0.0046
1.637775 0.0045
...etc

其中第1列是生长曲线的x轴(时间单位),第2列是生长水平(单位OD600,它是细胞密度的度量)。

R脚本只有4行:

inp1 <- scan('/temp4.txt', list(0,0))
decay <- data.frame(t = inp1[[1]], amp = inp1[[2]])
form <- nls(amp ~ const*(exp(fact*t)), data=decay, start = list(const = 0.01, fact = 0.5))
summary(form)

R脚本的输出:

Parameters:
       Estimate Std. Error t value Pr(>|t|)    
const 2.293e-03  9.658e-05   23.74   <2e-16 ***
fact  7.106e-01  8.757e-03   81.14   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.002776 on 104 degrees of freedom

Correlation of Parameter Estimates:
       const 
fact -0.9905

“事实”数字是他在下一个python脚本中提取的数字,作为继续进行分析的值。通常它是一个正值,例如“6.649e-01 6.784e-01 6.936e-01 6.578e-01 6.949e-01 6.546e-01 0.6623768 0.6710339 6.952e-01 6.711e-01 6.721e-01 6.520e-01”但因为临时文件被覆盖每次我只有一个版本的负值-0.9905,他在下一个python脚本中丢弃负值。

我需要知道他正在做什么才能重新创建它...我知道&lt; - 将数据传递给一个对象,所以nls()函数让我感到困惑......

感谢任何能为我解释R的人。

2 个答案:

答案 0 :(得分:1)

第一行将数据读入R

第二行将数据重组为数据帧(R中通常使用的表结构,它将作为数据传递到第3行中的nls)。

这看起来像旧代码,大多数现代编码器会通过一次调用read.table来替换第1行和第2行。

第3行将非线性最小二乘方程拟合到先前读取的数据中,第4行打印拟合的摘要,包括要读取的下一个python脚本的参数估计值。

拟合的非线性模型是指数增长曲线,事实参数是衡量增长率的指标。

答案 1 :(得分:1)

评论中的GSee链接是对NLS功能的一个很好的描述,但是如果你不习惯R文档,这里是nls的快速概述。

NLS函数是非线性最小二乘建模函数。它类似于线性回归,除了认为至少一个参数不是线性的(正弦函数,余弦函数,x ^ 2函数等)。有时可以将非线性参数转换为线性参数(即通过进行对数转换或某些此类转换),但情况并非总是如此。

第一个选项是正在测试的模型:amp~const *(exp(fact * t)),意味着我们想将amp建模为因变量,并希望e ^(fact * t)到是我们的独立(非线性)变量。

下一个选项只是告诉我们使用哪个数据对象(data = decay)。

start参数告诉我们构建模型的起始值,在本例中为const = .01和fact = .5。

因此第一个命令将数据读入对象inp1。 第二个创建一个具有类data.frame的对象(这是R中的大多数分析完成的)。这基本上是一个包含两列的表。在这种情况下,列被赋予名称(t和amp)。 第三个命令创建一个具有类nls的对象。该对象基本上包含nls命令生成的信息。 第四个命令打印出nls-class对象的摘要 - 基本上是分析的所有相关细节。

输出内容如下:

首先估算和标准。非线性模型中两个参数,const和fact的偏差。 t值和P列显示了参数在统计上是否与0显着不同的统计计算。

Signif。代码是显示在参数估计右侧的星星的图例 - p值是什么。

剩余标准误差是标准数量的指标。模型没有解释错误。

最后一个我不确定,因为我暂时没有使用NLS,但我认为这是正确的。 估计值的相关性表明参数的相关性如何。在这种情况下,-.9905值是一个非常强的负相关 - 随着事实的增加,常数下降,它是非常可预测的。