如何在xyplot / panel函数中使用预测?

时间:2017-07-05 15:12:36

标签: r lattice lm

我通过

绘制并拟合数据
> 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拟合中获取相关值?目前,我不太确定我需要哪一个,所以我总体上会问。 此外,如何在拟合的某个点获得相应的值?例如。我需要放大电压= 150(没有数据点)。适合()应该做,但我不相处..

这是情节:

enter image description here

谢谢!

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)

申请&#34;预测&#34;我收到了:

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

我想框架&#34; new.df&#34;需要可变电压?但是如何在没有价值的情况下提供呢?

1 个答案:

答案 0 :(得分:1)

要在预测变量的新值处预测响应变量,请使用predict函数而不是fitted函数。您可以将模型与新数据框一起提供,该数据框具有您要预测的预测变量(x)变量的值。

不确定您想要提取的内容或您想要使用它做什么。运行命令:

methods(class='lm')

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