【问题标题】:How to do this linear regression?如何进行这种线性回归?
【发布时间】:2014-05-06 21:54:37
【问题描述】:

我有一个数据列表,我想做一个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) 返回任何东西

你能帮帮我吗?谢谢!

【问题讨论】:

  • data 列表是什么样的?此外,如果您指定 X 和 Y 向量,则可以去掉 data=data,因为它用于为您的数据指定 data.frame

标签: r plot lm


【解决方案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)

【讨论】:

    【解决方案2】:

    函数abline 不返回任何内容。它只是向图形设备添加线条。那你就不能退货了。如果您愿意,您可以返回 my.lm1my.lm2 对象,稍后再对它们调用 abline

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 2020-06-11
      • 2010-12-20
      • 2014-02-23
      • 2020-11-01
      • 2019-01-06
      • 2018-02-03
      • 2018-07-23
      相关资源
      最近更新 更多