【问题标题】:How to use predict within xyplot / panel function?如何在 xyplot / 面板函数中使用预测?
【发布时间】:2017-07-05 15:12:36
【问题描述】:

我通过

绘制和拟合数据
> xyplot(Amplification~Voltage,
        data = before_database[before_database$Serial_number==912009913,],
        grid = TRUE, 
        main = "SN = 912009913", 
        panel = function(x, y) {
            panel.xyplot(x, y) 
            fit<-lm(y ~ poly(x,2))
            panel.lines(x, fitted(fit), col.line="black")
        })

before_database 是我的数据框(before_database),通过 Serial_number 我选择了数据框的分组子集。因此,放大是针对电压的。

现在我有两个问题:如何从 lm fit 中获取相关值?目前我不太确定我需要哪个,所以我一般都会问。 而且,另外,我如何在某个不合适的点获得相应的值?例如。我需要放大电压 = 150(没有数据点)。 Fitted() 应该这样做,但我不接受它..

剧情如下:

谢谢!

PS:我知道情节并不代表数据 :) 这终于是我找到最佳情节的任务了。

编辑:根据讨论,我想首先在 xyplot 之外拟合模型,因为习惯了它。因此我现在有:

before_database.frame<- read.table("APD_data.txt", 
                                  header = TRUE,
                                  sep = "",
                                  dec="."
                                 )

test.frame<- before_database.frame[before_database.frame$Serial_number==912009913, ]

test.fit<- lm(Amplification ~ poly(Voltage,2), data=test.frame)

xyplot(
      Amplification ~ Voltage,
      data = test.frame,
      grid = TRUE,
      main = "SN = 91200913",
      panel = function(x,y)
      {
          panel.xyplot(x,y)
          panel.lines(x, fitted(test.fit),
          col.line="black")
      }
      )

test.fit$coefficients[1]

new.df<- data.frame(Amplification=150)
predict(test.fit, new.df)

应用“预测”时,我收到:

"Error in poly(Voltage, 2, coefs = list(alpha = c(247.536114864865, 174.327996600877 : object 'Voltage' not found"

我猜框架“new.df”需要可变电压?但是我如何在没有值的情况下提供它?

【问题讨论】:

    标签: r lattice lm


    【解决方案1】:

    要以预测变量的新值预测响应变量,请使用predict 函数而不是fitted 函数。你给它你的模型和一个新的数据框,其中包含你想要预测的预测变量 (x) 的值。

    不确定您还想提取什么或想用它做什么。运行命令:

    methods(class='lm')
    

    将向您展示可用于lm 对象结果的函数,浏览帮助文件(然后深入阅读有趣的文件)可能会帮助您找到所需的信息。

    【讨论】:

    • @Ben,是的,这就是 predict 所做的,也是您所要求的。不适合的对应点是“预测”。 “fit”是“lm”返回的对象,您在上面的代码中将其保存为变量“fit”。
    • @Ben,您的“fit”变量是函数的本地变量,因此您在全局环境中看不到它。您可以在 panel 函数中使用它,也可以在格图调用之外拟合回归,以便将其用于一般用途。
    • @Ben,这取决于你想要的结果。您可以在 panel.lines 调用之前或之后将它放在上面的面板函数中。您需要保存结果以供以后使用,或者在另一个函数中使用它。
    • @Ben,你想对预测的结果做什么?如果你想在图中画一条线或点,然后把它放在面板函数中(线/点的代码在哪里)。如果您希望它在图表之外,则在绘图函数之外运行回归并将其存储在那里。如果有其他事情告诉我们,我们并不擅长读心。
    • @Ben,然后将predict 放入面板功能。您可能需要使用 uniroot 来找到给出 y=150 的 x 值(实际值),然后将结果传递给 panel.abline
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    相关资源
    最近更新 更多