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