我设法绘制了一条广义线,但它与我的需求无关。我想绘制每个治疗和ID的线,并获得回归值。 pic附在这里:
我对 R 相对较新,在网上找不到合适的答案。感谢
这是我的数据:
我想绘制每种治疗组合(0/4/8)*和患者类型的回归线。
我写的代码是:
plot(ion_chlorophyll$NA,ion_chlorophyll$CHL)
plot(ion_chlorophyll$NA,ion_chlorophyll$CHL, pch = 1,cex = 1, col = "blue", main = "NA relationship", xlab ="Na", ylab ="CHL")
答案 0 :(得分:0)
如果你想获得多个回归线,请尝试使用xyplot。 试验虹膜数据集。
library(lattice)
xyplot(Sepal.Length ~ Sepal.Width, data = iris, pch = 16, type = c("p", "g", "r"), groups = Species, auto.key = TRUE)
如果您只有三个因素有助于2D绘图,那么以这种方式获得回归线应该不会太麻烦:
model1 <- lm(iris$Sepal.Length[iris$Species == "setosa"] ~ iris$Sepal.Width[iris$Species == "setosa"])
model2 <- lm(iris$Sepal.Length[iris$Species == "versicolor"] ~ iris$Sepal.Width[iris$Species == "versicolor"])
model3 <- lm(iris$Sepal.Length[iris$Species == "virginica"] ~ iris$Sepal.Width[iris$Species == "virginica"])
并对每个模型进行summary()
以获得回归线的方程。
我认为你应该这样做。
答案 1 :(得分:0)
如果您只是想绘图,可以使用ggplot2
执行此操作。您可以使用dplyr
,tidy
和broom
来获取模型中的预测。如果df
是包含列的数据框 - treatment,patient_type,Leaf_NA,Total_Chl,
只需绘制
library(ggplot2)
p <- df %>% ggplot(aes(Leaf_NA, Total_Chl)) +
facet_grid(treatment ~ patient_type) +
stat_smooth(method='lm')
p
获取模型预测
library(dplyr) #for group_by(), inner_join(), mutate()
library(tidyr) #for nest(), unnest()
library(broom) #for augment()
model <- df %>%
group_by(treatment, patient_type) %>%
do(fit = lm(Total_Chl ~ Leaf_NA, data = .))
df %>%
group_by(treatment, patient_type) %>%
nest() %>%
inner_join(model, .) %>%
mutate(pred = list(augment(fit))) %>%
unnest(pred)