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:
Jestem stosunkowo nowy R i nie może znaleźć właściwej odpowiedzi online. Dzięki
To są moje dane:
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 № 1Moż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.