/ / Jak dopasować linie regresji na grupę (każda grupa zawiera dwa różne czynniki / kolumny)? - r, spisek, regresja

Jak dopasować linie regresji na grupę (każda grupa zawiera dwa różne czynniki / kolumny)? - r, spisek, regresja

Udało mi się wykreślić uogólnioną linię, ale nie jest to związane z moimi potrzebami. Chcę wykreślić linię dla każdego leczenia i ID oraz uzyskać wartości regresji. pic załączony tutaj: wprowadź opis obrazu tutaj

Jestem stosunkowo nowy R i nie może znaleźć właściwej odpowiedzi online. Dzięki

To są moje dane:

wprowadź opis obrazu tutaj

Chcę wykreślić linie regresji dla każdej kombinacji leczenia (0/4/8) * i rodzaju pacjenta.

kod, który napisałem to:

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")

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz to zrobić za pomocą ggplot2 jeśli chcesz tylko knuć. Możesz użyć dplyr, tidy i broom aby uzyskać prognozy z modelu. Jeśli df jest twoją ramką danych z kolumnami - treatment, patient_type, Leaf_NA, Total_Chl,

Po prostu spisek

library(ggplot2)
p <- df %>% ggplot(aes(Leaf_NA, Total_Chl)) +
facet_grid(treatment ~ patient_type) +
stat_smooth(method="lm")
p

Uzyskaj prognozy modelu

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)

0 dla odpowiedzi nr 2

jeśli chcesz uzyskać wiele linii regresji spróbuj użyć xyplot. Eksperymentuj z zestawem danych tęczówki.

library(lattice)

xyplot(Sepal.Length ~ Sepal.Width, data = iris, pch = 16, type = c("p", "g", "r"), groups = Species, auto.key = TRUE)

Jeśli masz tylko trzy czynniki wpływające na twoją działkę 2D, to nie powinno być zbyt wielkim problemem, aby uzyskać linie regresji w ten sposób:

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"])

I zrób summary() każdego z modeli, aby uzyskać równania linii regresji.

Myślę, że powinieneś zrobić coś takiego.

wprowadź opis obrazu tutaj