非线性最小二乘法(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
对象访问 x
和 y
值?
最佳答案
数据确实在那里,但它有点隐藏在模型的环境中,模型的环境也保存在对象中,我通过查看 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/