【问题标题】:Using predict to find values of non-linear model使用 predict 查找非线性模型的值
【发布时间】:2012-09-17 13:32:18
【问题描述】:

我正在尝试下一个代码来尝试查看 predict 是否可以帮助我找到 2 阶多项式的因变量的值,在这种情况下很明显 y=x^2:

x <- c(1, 2, 3, 4, 5 , 6)
y <- c(1, 4, 9, 16, 25, 36)
mypol <- lm(y ~ poly(x, 2, raw=TRUE))

> mypol

Call:
lm(formula = y ~ poly(x, 2, raw = TRUE))

Coefficients:
            (Intercept)  poly(x, 2, raw = TRUE)1  poly(x, 2, raw = TRUE)2  
                      0                        0                        1  

如果我尝试找到 x=7 的值,我会得到:

> predict(mypol, 7)
Error in eval(predvars, data, env) : not that many frames on the stack

我做错了什么?

【问题讨论】:

    标签: r lm


    【解决方案1】:

    如果您阅读predict.lm 的帮助,您会发现它需要许多参数,包括newdata

    newdata -- 一个可选的数据框,用于查找变量 预测。如果省略,则使用拟合值。

    predict(mypol, newdata = data.frame(x=7))
    

    【讨论】:

    • 您好,我怎样才能对多个值执行相同的操作。比如说,在这个例子中,7,8,9,10 等等?如何获得所有值的预测?
    • @CodingInCircles 创建适当的 data.frame newdata = data.frame(x = c(7,8,9,10))) 或 ``newdata =data.frame(x = seq(7, 10, by = 15))` 或任何你想要的。
    • 太棒了!谢谢! :) 另外.. 你能告诉我我们如何用 y ~ e^x 这样的符号表示 y=e^x 吗?
    • @CodingInCircles -- 你将不能使用lm,要么适合glm(y~x, family = gaussian(link = log))要么nls(y~a*exp(b*x),start = list(a=1,b=1))
    • 酷!非常感谢! :) 并不是要劫持这个问题.. :P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2021-08-16
    • 2018-10-19
    • 2019-09-22
    • 2015-05-26
    相关资源
    最近更新 更多