如何做这个线性回归?

时间:2014-05-06 13:26:12

标签: r plot lm

我有一个数据列表,我想在列表中使用两个变量进行lm。我做了这个函数来绘制两个线性回归。这是我的代码:

FitWeibull <- function(data){

my.lm1 <- lm(data[[1]]$X ~ data[[1]]$Y, data = data)
my.lm2 <- lm(data[[2]]$X ~ data[[2]]$Y, data = data)
#   return(list(my.lm1, my.lm2))

return(list(abline(my.lm1), abline(my.lm2)))
}

FitWeibull(my.data)

[[1]]
NULL

[[2]]
NULL

即使只进行一次回归,它也不起作用:

FitWeibull <- function(data){

my.lm1 <- lm(data[[1]]$X ~ data[[1]]$Y, data = data)
#   my.lm2 <- lm(data[[2]]$X ~ data[[2]]$Y, data = data)
#   return(list(my.lm1, my.lm2))
return(abline(my.lm1))
}

FitWeibull(my.data)会返回任何内容

你能帮帮我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

试试这个

## Create some data set
set.seed(1)
my.data <- list(df1 = data.frame(Y = sample(10), X = sample(10)), 
             df2 = data.frame(Y = sample(10), X = sample(10)))

FitWeibull <- function(data){

  my.lm1 <- lm(data[[1]]$X ~ data[[1]]$Y)
  my.lm2 <- lm(data[[2]]$X ~ data[[2]]$Y)

  par(mfrow = c(1, 2), pty = "s")  

  plot(data[[1]]$X , data[[1]]$Y)
  abline(my.lm1)

  plot(data[[2]]$X , data[[2]]$Y)
  abline(my.lm2)

}
FitWeibull(my.data)

enter image description here

答案 1 :(得分:0)

函数abline不会返回任何内容。它只是为图形设备添加了线条。然后你就无法退货了。如果您愿意,可以返回my.lm1my.lm2个对象,稍后再点击abline