2014-05-06 25 views
0

我有一個數據列表,我想在列表中使用兩個變量做一個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)回報什麼

你能幫助我嗎?謝謝!

+0

什麼的'data'名單是什麼樣子?另外,如果你指定了X和Y向量,你可以去掉'data = data',就像用來指定數據的'data.frame'一樣。 –

回答

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

0

函數abline不返回任何內容。它只是添加線條到圖形設備。那麼你不能退還它。如果您願意,您可以返回my.lm1my.lm2對象,稍後再致電abline