簡體   English   中英

在 R 中繪制回歸列表的系數

[英]Plotting coefficients of a list of regressions in R

我有一個包含 14 個系數列表的列表。每個子列表是一個區域的四分之一。 我需要將 1-14 的系數繪制為 X(時間進程),將系數本身繪制為 Y,每個區域都有不同的圖表。 一個可重現的例子是:

iris1 <- iris
iris2 <- iris
iris3 <- iris
iris_list <- list(iris, iris1, iris2, iris3)
res = lapply(iris_list, function(x){
    test <- dlply(x, "Species", function(x) lm(Sepal.Length ~ Sepal.Width, data = x))
     return(test)
 })

現在,我需要將 [ 1 ], [[2]], [[3]] 繪制為 X,作為 1,2,3...(一年的四分之一)為每個物種繪制不同的圖以及每個季度。 在這種情況下,我知道它將是一條平線,因為數據是相同的,但假裝不是。 最好,我想使用 ggplot2。 X 和微分都相似的圖的一個例子是: 在此處輸入圖片說明 這里,每個圖形是一個區域(物種),x 是時間。 謝謝! 為了澄清起見,我不必繪制截距。

你想做什么不是很清楚,但我試着猜測:首先,我改變了你的例子來注入一些隨機性,所以線圖不會是一條平線。 其次,我從res提取每個子列表的每個物種的系數,並將其轉換為長格式數據幀(使用reshape2::melt )。 最后,我使用species作為分面變量繪制df

library(ggplot2)
library(plyr)
set.seed(4)
index <- lapply(1:4,function(x){sample(1:150,100,replace = T)})
iris_list <- lapply(index,function(ind){
  iris[ind,]
})

res  <-  lapply(iris_list, function(x){
  test <- plyr::dlply(x, "Species", function(x) lm(Sepal.Length ~ Sepal.Width, data = x))
  return(test)
})

df <- as.data.frame(sapply(res,function(x){
  do.call(rbind,lapply(x,coef))[,-1]
}))
df$species <- rownames(df)
m <- reshape2::melt(df)
m$variable <- as.integer(m$variable)


ggplot(m,aes(x=variable,y=value))+
  geom_line(aes(group=species))+
  facet_wrap(~species)

這給了你這個情節: 在此處輸入圖片說明 現在您必須通過更改theme選項和添加col來自定義繪圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM