r - 如何从 R 中的 nls 模型中检索原始数据?

标签 r nls

非线性最小二乘法(R核心中的nls()函数)生成一个列表对象,里面有一堆有用的信息,是否还有作为模型输入的原始数据?我怀疑是的,因为像 predict()fitted() 这样的函数实际上是在这个对象上定义的,并在原始拟合数据的范围内生成预测。那么,如何通过模型对象访问这些数据呢?

想象一下这个设置

# generating some data
generated_data <- hist(rnorm(1000, 50, 10))
data <- data.frame(x = generated_data$mids, y = generated_data$counts) 

# a dummy model
my_model <- nls(y ~ N * dnorm(x, m, s), data=data, start=c(m=55, s=12, N=sum(data$y)) ) 

如何通过 my_model 对象访问 xy 值?

最佳答案

数据确实在那里,但它有点隐藏在模型的环境中,模型的环境也保存在对象中,我通过查看 the source code 弄明白了。 .您可以通过 getEnv() 函数访问输入值,该函数可通过 m 对象访问,并且是 nls 返回的列表的一部分.

所以在虚拟示例中:

# generating some data
generated_data <- hist(rnorm(1000, 50, 10))
data <- data.frame(x = generated_data$mids, y = generated_data$counts) 

# a dummy model
my_model <- nls(y ~ N * dnorm(x, m, s), data=data, start=c(m=55, s=12, N=sum(data$y)) ) 

original_x_values <- my_model$m$getEnv()$x
original_y_values <- my_model$m$getEnv()$y

关于r - 如何从 R 中的 nls 模型中检索原始数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71039024/

相关文章:

从 R 数据框中的某个位置滚动求和

r - 两个连续值之间差异最小的样本

r - 在 R 的函数中使用 mget

r - 如何为 nls 函数找到好的起始值?

r - 在数据集中拟合多条逻辑增长曲线

r - 将儒略日期转换为 PosixCt 日期

R - 在 foreach 和 doParallel 中使用 # of cores > 64 时插入符号中的模型没有完成

r - 在 r 中进行非线性最小二乘拟合

r - R 中具有多个解释变量的细菌生长曲线(逻辑/S 形)

使用 nls 再现 PROC NLIN 输出