Related
I'm trying to calculate mean and SD and then perform t.tests on three different measurements (height, weight, speed) between multiple subgroups.
I started with a simple dataset that only contains two groups (control vs drug) and I have it all working well enough.
simple.df<-
structure(list(trial = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L), levels = c("control", "drug"), class = "factor"), height = c(15,
17, 25, 21, 11, 29, 18, 20), weight = c(80, 90, 81, 79, 200,
230, 215, 210), speed = c(50, 45, 60, 51, 52, 80, 41, 19)), class = "data.frame", row.names = c(NA,
-8L))
library(rstatix)
simple.df %>% group_by(trial) %>% get_summary_stats(type = "mean_sd")
testing<- data.frame(lapply(simple.df[-1], function(x) t.test(x~simple.df$trial)$p.value))
testing
Where I'm running into trouble is with the t.testing on a larger experiment similar to the dataframe below. I still have control vs drug and height, weight & speed, but now all the measurements were done at two timepoints in both males and females. I'm only concerned with comparing control versus drug for the same sex/age. I'm still ok calculating the mean and SD for each group, but have gotten stuck with figuring out the t-testing.
Specifically, I just want the t-test on each of the three measurements for drug vs control in young males, drug vs control in old males, drug vs control in young females and drug vs control in old females, so 12 p-values total with some identification for what comparison each value represents.
Thanks for your help and expertise!
big.df<- structure(list(age = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), levels = c("old", "young"
), class = "factor"), sex = structure(c(2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), levels = c("f", "m"), class = "factor"),
trial = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L), levels = c("control", "drug"
), class = "factor"), height = c(15L, 17L, 25L, 21L, 11L,
29L, 18L, 20L, 300L, 320L, 316L, 325L, 170L, 175L, 172L,
180L, 28L, 40L, 33L, 35L, 60L, 45L, 67L, 52L, 250L, 260L,
240L, 248L, 11L, 19L, 16L, 4L), weight = c(80L, 90L, 81L,
79L, 200L, 230L, 215L, 210L, 152L, 150L, 148L, 155L, 160L,
158L, 157L, 140L, 176L, 164L, 135L, 196L, 175L, 178L, 120L,
147L, 160L, 155L, 175L, 142L, 139L, 142L, 150L, 145L), speed = c(50L,
45L, 60L, 51L, 52L, 80L, 41L, 19L, 55L, 56L, 61L, 67L, 85L,
90L, 100L, 77L, 90L, 80L, 77L, 80L, 81L, 95L, 87L, 91L, 50L,
60L, 55L, 59L, 71L, 65L, 66L, 62L)), row.names = c(NA, -32L
), class = "data.frame")
big.df %>% group_by (sex, age, trial) %>%
get_summary_stats (type = "mean_sd") %>%
arrange (variable, sex, age, trial)
RYann had a good idea by defining a function to pull out subgroups and then doing all the t-tests on each subgroup. That approach was helpful.
I ended up building on his strategy and simplifing things a bit more by vectorizing the t-tests inside the function using lapply. I then stored each of the age/sex combinations in a dataframe and used mapply to pass those combinations to the t-testing function.
group<-big.df %>% filter(age == a_age & sex == a_sex)
data.frame(lapply(group[4:6], function(x) t.test(x~group$trial)$p.value))
}
combos <- data.frame(age = c("young","young","old","old"),
sex = c("m","f","m","f"))
t.test.df <- data.frame(mapply(t.script, a_age = combos$age, a_sex = combos$sex))
colnames(t.test.df) <- paste(combos$age, combos$sex, sep = " ")
young m
young f
old m
old f
height
1
1.939896e-05
0.01175771
1.630232e-08
weight
4.435875e-05
0.6368126
0.5196617
0.1299121
speed
0.80433
0.004320253
0.1526353
0.01539331
I hope this code will work out for you
big.df<- structure(list(age = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), levels = c("old", "young"
), class = "factor"), sex = structure(c(2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), levels = c("f", "m"), class = "factor"),
trial = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L), levels = c("control", "drug"
), class = "factor"), height = c(15L, 17L, 25L, 21L, 11L,
29L, 18L, 20L, 300L, 320L, 316L, 325L, 170L, 175L, 172L,
180L, 28L, 40L, 33L, 35L, 60L, 45L, 67L, 52L, 250L, 260L,
240L, 248L, 11L, 19L, 16L, 4L), weight = c(80L, 90L, 81L,
79L, 200L, 230L, 215L, 210L, 152L, 150L, 148L, 155L, 160L,
158L, 157L, 140L, 176L, 164L, 135L, 196L, 175L, 178L, 120L,
147L, 160L, 155L, 175L, 142L, 139L, 142L, 150L, 145L), speed = c(50L,
45L, 60L, 51L, 52L, 80L, 41L, 19L, 55L, 56L, 61L, 67L, 85L,
90L, 100L, 77L, 90L, 80L, 77L, 80L, 81L, 95L, 87L, 91L, 50L,
60L, 55L, 59L, 71L, 65L, 66L, 62L)), row.names = c(NA, -32L
), class = "data.frame")
# A function to extract the 3 comparrisons
multi_t <- function(a_sex,a_age){
df_func <- big.df %>% filter(sex==a_sex,age==a_age)
h <- t.test(height~trial,df_func)$p.value
w <- t.test(weight~trial,df_func)$p.value
s <- t.test(speed~trial,df_func)$p.value
# cat(
# "sex =",a_sex,"\nage =",a_age,"\n\n"
# )
return(cbind(height=h,weight=w,speed=s))
}
# Table in a long version
ptable <- data.frame(
multi_t("m","young"),
multi_t("m","old"),
multi_t("f","young"),
multi_t("f","old")
) %>% pivot_longer(cols=everything(),
names_to = "value",
values_to = "p.values") %>%
mutate(comparison = rep(c("young males","old males",
"young females","old females"),each=3),
value=str_remove_all(value,"\\.\\d"))
ptable
# Table in a wider version
ptable %>% group_by(value) %>% mutate(id=row_number()) %>%
pivot_wider(names_from = value,values_from = p.values) %>%
select(-id)
ptable %>%
mutate(sig=p.values<0.05) %>%
ggplot(aes(x=value,y=p.values,color=sig))+
geom_point(show.legend = T)+facet_wrap(~comparison,scales="free")+
theme(legend.position = "bottom")+
labs(title="P values of 3 different measurements",
subtitle = "For 4 different populations")
I have this script, I want to know how I can replace summarise_each() with the across() function?
common_bw_elements = df %>%
group_by(range_of_commons = cut(common_IDs,
breaks= c(-Inf,0, 5, 10, 20, 30, 60, 100, 200, 300, 600, 1200, 1800, Inf))) %>%
summarise_each(funs(sum), sum_of_instances = frequent)
I am asking this, as I get the following message:
Warning message: summarise_each() is deprecated as of dplyr 0.7.0. Please use across() instead.
My code is very similar to the following post: summarize groups into intervals using dplyr
Any leads on this would be greatly appreciated.
For reference, you can use the following dput()
dput(df)
structure(list(common_IDs = c(0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 17L, 18L, 25L, 26L, 27L, 37L, 51L, 55L, 56L, 63L, 68L, 69L, 70L, 71L, 74L, 76L, 81L, 84L, 86L, 87L, 89L, 90L, 91L, 92L, 101L,
103L, 108L, 109L, 110L, 113L, 114L, 115L, 116L, 129L, 130L, 131L, 133L, 135L, 136L, 137L, 138L, 139L, 141L, 152L, 153L, 154L, 177L, 178L, 190L, 191L, 196L, 199L, 202L, 203L, 208L, 209L, 210L, 211L, 213L, 214L, 215L, 216L, 218L, 219L, 222L, 223L, 229L, 230L, 231L,
232L, 239L, 251L, 252L, 254L, 257L, 264L, 265L, 271L, 272L, 273L, 275L, 276L, 277L, 280L, 293L, 294L, 297L, 298L, 299L, 300L, 301L, 304L, 317L, 320L, 337L, 346L, 347L, 364L, 371L, 373L, 386L, 387L, 389L, 412L, 417L, 419L, 420L, 432L, 440L, 441L, 442L, 443L, 451L,
452L, 453L, 455L, 456L, 457L, 458L, 462L, 463L, 464L, 469L, 470L, 474L, 476L, 477L, 478L, 487L, 488L, 492L, 1484L, 1534L, 1546L, 1561L, 1629L, 1642L, 1670L, 1672L, 1681L, 1698L, 1723L, 1725L,
1736L, 1738L, 1745L, 1753L, 1759L, 1764L, 1766L, 1767L, 1770L, 1772L, 1775L, 1776L, 1781L, 1784L, 1787L, 1791L, 1802L, 1807L, 1813L, 1815L, 1817L, 1821L, 1823L, 1825L, 1846L, 1850L, 1852L,
1853L, 1854L, 1857L, 1858L, 1859L, 1868L, 1899L, 1904L, 1911L, 1913L, 1977L, 1997L, 1999L, 2023L, 2079L),
frequent = c(81L, 75L, 10L, 17L, 4L, 4L, 33L, 13L, 31L, 3L, 19L, 22L, 6L, 1L, 11L, 2L,
1L, 1L, 3L, 14L, 1L, 2L, 1L, 14L, 1L, 9L, 6L, 9L, 2L, 5L, 13L, 4L, 4L, 1L, 4L, 1L, 3L, 1L, 6L, 2L, 1L, 3L, 2L, 5L, 2L, 1L, 17L, 5L, 4L, 4L, 1L, 4L, 7L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 6L,
16L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 5L, 13L, 6L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 4L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 3L, 5L, 1L, 3L, 1L, 3L, 4L, 1L, 1L, 2L, 3L, 4L, 3L, 3L, 1L, 3L, 2L, 2L, 1L, 6L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -193L))
You can use summarise since you are only summing one variable by group.
library(tidyverse)
common_bw_elements = df %>%
group_by(range_of_commons = cut(common_IDs,
breaks= c(-Inf,0, 5, 10, 20, 30, 60, 100, 200, 300, 600, 1200, 1800, Inf))) %>%
summarise(sum_of_instances = sum(frequent))
Output
range_of_commons sum_of_instances
<fct> <int>
1 (-Inf,0] 81
2 (0,5] 110
3 (5,10] 46
4 (10,20] 34
5 (20,30] 47
6 (30,60] 15
7 (60,100] 85
8 (100,200] 87
9 (200,300] 92
10 (300,600] 75
11 (1.2e+03,1.8e+03] 29
12 (1.8e+03, Inf] 28
If you had multiple columns to sum, then we would use across (or if you only had a few columns, then instead of everything(), you can provide a vector of column names (e.g., c(common_IDs, frequent)):
df %>%
group_by(range_of_commons = cut(common_IDs,
breaks= c(-Inf,0, 5, 10, 20, 30, 60, 100, 200, 300, 600, 1200, 1800, Inf))) %>%
summarise(across(everything(), ~ sum(.x))) %>%
rename(sum_of_instances = frequent)
Output
range_of_commons common_IDs sum_of_instances
<fct> <int> <int>
1 (-Inf,0] 0 81
2 (0,5] 15 110
3 (5,10] 13 46
4 (10,20] 35 34
5 (20,30] 78 47
6 (30,60] 199 15
7 (60,100] 1191 85
8 (100,200] 3928 87
9 (200,300] 9392 92
10 (300,600] 17290 75
11 (1.2e+03,1.8e+03] 47829 29
12 (1.8e+03, Inf] 48922 28
I am working with a set of data that uses a factor variable that has "Yes" and "No" as levels of response. I've figured out how to create a bar graph based on this data, but I can't seem to get an n/count of each bar to work with the graph.
While the y-axis is "count", it's showing the proportion of yes and no as I intend it to. However, when I try to add a line to label the count, it goes far above the bars at the actual "count" on the y-axis.
The figure above is created with the code:
gun_oppo_plot <- ggplot(data = gun_survey_oppo, aes(x = condition, fill = gun_DV)) +
geom_bar(position = "fill", na.rm = TRUE) + theme_bw()
When I try to add a line such as geom_text(aes(label=..count..),stat="count"), I get the following figure:
Is there a way to get the same counts as in the lower figure, while maintaing the first one's focus on y from (0:1) and having the counts be on the bars themselves?
Thanks in advance for the help!
Data for replication:
structure(list(condition = structure(c(4L, 1L, 5L, 4L, 2L, 4L,
5L, 4L, 3L, 4L, 4L, 3L, 2L, 3L, 3L, 1L, 5L, 3L, 3L, 1L, 2L, 2L,
3L, 1L, 3L, 3L, 4L, 3L, 1L, 5L, 1L, 3L, 2L, 5L, 3L, 4L, 3L, 5L,
4L, 5L, 5L, 4L, 1L, 3L, 1L, 1L, 3L, 5L, 5L, 3L, 5L, 3L, 5L, 5L,
4L, 5L, 5L, 2L, 5L, 1L, 3L, 1L, 2L, 5L, 5L, 1L, 1L, 2L, 4L, 2L,
3L, 5L, 4L, 5L, 4L, 4L, 1L, 1L, 5L, 5L, 3L, 5L, 5L, 3L, 2L, 3L,
2L, 5L, 1L, 4L, 2L, 5L, 1L, 3L, 2L, 3L, 2L, 3L, 2L, 5L, 4L, 3L,
1L, 4L, 1L, 2L, 1L, 5L, 3L, 4L, 2L, 4L, 1L, 2L, 1L, 3L, 2L, 4L,
5L, 3L, 1L, 5L, 1L, 2L, 3L, 1L, 4L, 5L, 2L, 5L, 4L, 5L, 4L, 3L,
2L, 4L, 5L, 3L, 1L, 1L, 4L, 5L, 2L, 4L, 1L, 3L, 1L, 5L, 5L, 3L,
1L, 5L, 2L, 2L, 2L, 1L, 5L, 3L, 4L, 2L, 3L, 5L, 4L, 3L, 4L, 2L,
5L, 2L, 4L, 2L, 2L, 4L, 2L, 5L, 1L, 4L, 3L, 2L, 1L, 3L, 2L, 2L,
4L, 5L, 2L, 5L, 4L, 5L, 1L, 4L, 4L, 2L, 3L, 5L, 2L, 3L, 1L, 2L,
1L, 5L, 2L, 2L, 4L, 1L, 1L, 4L, 3L, 5L, 1L, 1L, 5L, 4L, 4L, 4L,
2L, 4L, 1L, 2L, 2L, 3L, 5L, 1L, 5L, 2L, 4L, 4L, 4L, 1L, 2L, 4L,
2L, 3L, 5L, 3L, 2L, 3L, 3L, 2L, 5L, 3L, 5L, 3L, 3L, 2L, 1L, 5L,
4L, 4L, 1L, 5L, 4L, 3L, 2L, 4L, 1L, 5L, 3L, 5L, 4L, 5L, 3L, 4L,
1L, 5L, 2L, 3L, 4L, 5L, 4L, 3L, 3L, 2L, 5L, 1L, 4L, 3L, 3L, 5L,
2L, 4L, 5L), .Label = c("0", "1", "2", "3", "4"), class = "factor"),
gun_DV = structure(c(2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L,
1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L,
1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L,
1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L,
2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L,
1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L,
1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L,
2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L,
1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L,
1L, 1L), .Label = c("No", "Yes"), class = "factor")), class = "data.frame", row.names = c(2L,
4L, 8L, 9L, 12L, 13L, 17L, 21L, 25L, 26L, 28L, 31L, 35L, 37L,
44L, 46L, 47L, 49L, 52L, 53L, 56L, 59L, 66L, 71L, 74L, 76L, 79L,
81L, 83L, 85L, 94L, 97L, 98L, 104L, 109L, 110L, 114L, 116L, 117L,
120L, 122L, 124L, 129L, 130L, 133L, 136L, 138L, 144L, 147L, 152L,
157L, 158L, 162L, 167L, 169L, 171L, 178L, 188L, 195L, 198L, 203L,
206L, 209L, 211L, 213L, 217L, 219L, 222L, 225L, 228L, 230L, 231L,
235L, 237L, 240L, 256L, 257L, 259L, 260L, 262L, 267L, 269L, 271L,
272L, 278L, 279L, 285L, 289L, 294L, 295L, 297L, 299L, 300L, 302L,
304L, 310L, 311L, 314L, 318L, 319L, 321L, 323L, 326L, 328L, 333L,
341L, 342L, 343L, 348L, 357L, 359L, 360L, 363L, 364L, 372L, 375L,
377L, 379L, 387L, 391L, 392L, 394L, 397L, 399L, 401L, 404L, 405L,
411L, 416L, 418L, 421L, 423L, 427L, 428L, 430L, 434L, 438L, 446L,
454L, 456L, 458L, 460L, 463L, 465L, 477L, 479L, 482L, 485L, 490L,
493L, 497L, 500L, 501L, 503L, 507L, 512L, 514L, 516L, 519L, 522L,
525L, 531L, 533L, 539L, 541L, 543L, 552L, 555L, 556L, 559L, 563L,
566L, 569L, 570L, 572L, 574L, 576L, 579L, 581L, 584L, 589L, 590L,
596L, 598L, 599L, 603L, 607L, 609L, 611L, 613L, 618L, 620L, 621L,
624L, 625L, 628L, 629L, 638L, 641L, 644L, 645L, 647L, 651L, 653L,
658L, 663L, 665L, 666L, 675L, 677L, 678L, 680L, 686L, 693L, 697L,
699L, 700L, 704L, 705L, 708L, 709L, 713L, 715L, 717L, 718L, 721L,
724L, 726L, 728L, 735L, 739L, 741L, 748L, 750L, 753L, 756L, 758L,
759L, 762L, 769L, 772L, 780L, 782L, 786L, 788L, 790L, 793L, 796L,
799L, 801L, 804L, 806L, 808L, 809L, 818L, 820L, 823L, 825L, 832L,
835L, 836L, 842L, 844L, 846L, 847L, 855L, 856L, 858L, 860L, 861L,
865L, 867L, 872L, 875L, 876L, 878L, 884L, 887L, 891L, 893L, 896L
))
There might be some way to do this within ggplot itself but here is another way where we "prepare" the data first before plotting.
library(dplyr)
library(ggplot2)
gun_survey_oppo %>%
count(condition, gun_DV) %>%
group_by(condition) %>%
mutate(prop = prop.table(n)) %>%
ggplot(aes(condition, prop, fill = gun_DV, label = n)) +
geom_col(position = "fill", na.rm = TRUE) +
geom_text(position = position_stack(vjust = .5)) +
theme_bw()
This is a random sample of my data set:
structure(list(DTI_ID = structure(c(31L, 241L, 84L, 298L, 185L,
269L, 198L, 24L, 286L, 177L, 228L, 158L, 57L, 293L, 218L, 8L,
180L, 39L, 211L, 134L, 291L, 309L, 99L, 70L, 154L, 138L, 250L,
41L, 276L, 262L, 96L, 139L, 232L, 12L, 294L, 38L, 244L, 289L,
280L, 196L, 58L, 44L, 188L, 152L, 143L, 302L, 201L, 27L, 24L,
67L, 247L, 223L, 74L, 32L, 110L, 98L, 303L, 256L, 71L, 30L, 236L,
266L, 307L, 224L, 100L, 73L, 288L, 230L, 182L, 159L, 190L, 123L,
241L, 169L, 103L, 40L, 248L, 293L, 60L, 260L, 168L, 267L, 144L,
89L, 139L, 231L, 204L, 130L, 278L, 227L, 205L, 268L, 88L, 221L,
208L, 306L, 242L, 145L, 21L, 165L, 217L, 159L, 206L, 70L, 121L,
181L, 95L, 279L, 265L, 4L, 122L, 177L, 234L, 34L, 261L, 86L,
2L, 296L, 39L, 283L, 251L, 126L, 188L, 176L, 220L, 77L, 225L,
73L, 48L, 107L, 280L, 118L, 38L, 310L, 297L, 258L, 89L, 205L,
4L, 54L, 16L, 95L, 119L, 40L, 9L, 66L, 64L, 55L, 131L, 290L,
166L, 170L, 182L, 139L, 125L, 201L, 302L, 137L, 8L, 81L, 61L,
119L, 278L, 135L, 117L, 65L, 21L, 200L, 150L, 146L, 54L, 262L,
152L, 224L, 162L, 111L, 251L, 130L, 41L, 271L, 33L, 86L, 32L,
199L, 49L, 180L, 101L, 271L, 80L, 84L, 293L, 5L, 170L, 74L, 279L,
281L, 255L, 210L, 52L, 248L, 53L, 121L, 190L, 141L, 213L, 138L,
112L, 234L, 235L, 40L, 233L, 115L, 154L, 11L, 76L, 29L, 19L,
249L, 1L, 207L), .Label = c("5356", "5357", "5358", "5359", "5360",
"5363", "5373", "5381", "5383", "5386", "5395", "5397", "5400",
"5401", "5444", "5445", "5446", "5448", "5450", "5451", "5454",
"5472", "5473", "5475", "5476", "5477", "5478", "5480", "5481",
"5483", "5487", "5494", "5495", "5504", "5505", "5506", "5507",
"5508", "5509", "5513", "5514", "5515", "5516", "5517", "5518",
"5519", "5521", "5523", "5524", "5526", "5527", "5528", "5544",
"5545", "5546", "5547", "5551", "5552", "5553", "5554", "5555",
"5558", "5559", "5560", "5562", "5564", "5566", "5573", "5574",
"5575", "5576", "5577", "5578", "5579", "5584", "5585", "5587",
"5588", "5589", "5591", "5594", "5595", "5604", "5611", "5612",
"5613", "5615", "5616", "5619", "5620", "5621", "5622", "5626",
"5627", "5628", "5631", "5632", "5634", "5635", "5643", "5652",
"5653", "5654", "5655", "5656", "5657", "5659", "5660", "5661",
"5664", "5665", "5666", "5669", "5671", "5672", "5673", "5678",
"5680", "5688", "5689", "5690", "5691", "5692", "5698", "5699",
"5700", "5702", "5703", "5704", "5706", "5708", "5709", "5710",
"5730", "5731", "5732", "5733", "5734", "5735", "5739", "5740",
"5741", "5742", "5743", "5744", "5745", "5746", "5747", "5748",
"5749", "5750", "5753", "5754", "5755", "5766", "5767", "5776",
"5777", "5778", "5779", "5780", "5781", "5787", "5788", "5789",
"5790", "5791", "5792", "5793", "5797", "5798", "5799", "5800",
"5801", "5810", "5811", "5812", "5813", "5814", "5819", "5820",
"5821", "5822", "5823", "5824", "5825", "5827", "5828", "5829",
"5830", "5857", "5859", "5874", "5875", "5876", "5877", "5878",
"5879", "5883", "5884", "5886", "5887", "5888", "5889", "5890",
"5892", "5893", "5896", "5899", "5900", "5909", "5910", "5918",
"5919", "5920", "5921", "5922", "5923", "5927", "5929", "5931",
"5932", "5933", "5934", "5936", "5937", "5941", "5943", "5944",
"5949", "5950", "5951", "5952", "5956", "5957", "5958", "5959",
"5971", "5972", "5973", "5976", "5979", "5980", "5981", "6001",
"6002", "6003", "6004", "6005", "6009", "6027", "6028", "6033",
"6042", "6054", "6063", "6067", "6073", "6076", "6077", "6078",
"6079", "6080", "6081", "6082", "6083", "6098", "6102", "6103",
"6104", "6105", "6106", "6107", "6111", "6119", "6133", "6146",
"6147", "6157", "6158", "6160", "6161", "6162", "6163", "6164",
"6165", "6166", "6167", "6168", "6169", "6170", "6171", "6172",
"6173", "6174", "6175", "6190", "6193", "6195", "6196", "6197",
"6208", "6228", "6229", "6232", "6255", "6268", "6269", "6270",
"6275"), class = "factor"), Gender = structure(c(2L, 2L, 1L,
2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L,
1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L,
1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L,
2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L,
2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L), .Label = c("Female", "Male"
), class = "factor"), Age = structure(c(2L, 1L, 2L, 2L, 2L, 2L,
1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L,
1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 1L, 2L, 2L), .Label = c("Young", "Old"), class = "factor"),
ROI = structure(c(4L, 4L, 1L, 2L, 3L, 3L, 3L, 2L, 2L, 1L,
3L, 2L, 4L, 1L, 1L, 2L, 4L, 4L, 1L, 4L, 4L, 4L, 1L, 1L, 4L,
2L, 1L, 2L, 2L, 2L, 4L, 1L, 1L, 3L, 3L, 3L, 4L, 3L, 1L, 4L,
2L, 2L, 3L, 4L, 2L, 2L, 1L, 2L, 3L, 1L, 4L, 4L, 3L, 4L, 4L,
1L, 3L, 4L, 3L, 3L, 1L, 3L, 1L, 1L, 1L, 4L, 2L, 1L, 4L, 3L,
2L, 2L, 3L, 4L, 1L, 2L, 1L, 4L, 2L, 1L, 3L, 1L, 2L, 2L, 4L,
1L, 1L, 4L, 4L, 3L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 4L, 4L, 1L,
2L, 4L, 1L, 2L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 4L, 3L, 2L, 4L,
1L, 1L, 3L, 3L, 3L, 1L, 2L, 4L, 3L, 4L, 1L, 4L, 3L, 2L, 1L,
4L, 4L, 4L, 2L, 4L, 1L, 4L, 2L, 1L, 3L, 1L, 2L, 3L, 3L, 3L,
1L, 1L, 2L, 4L, 4L, 1L, 4L, 1L, 3L, 3L, 4L, 1L, 3L, 4L, 2L,
2L, 1L, 1L, 1L, 1L, 4L, 1L, 4L, 1L, 4L, 2L, 4L, 3L, 3L, 3L,
2L, 2L, 2L, 1L, 4L, 4L, 3L, 3L, 4L, 3L, 1L, 4L, 2L, 2L, 3L,
2L, 3L, 1L, 2L, 3L, 2L, 1L, 3L, 3L, 2L, 4L, 1L, 1L, 2L, 1L,
4L, 4L, 1L, 2L, 1L, 2L, 4L, 2L, 4L, 1L, 4L, 2L, 4L, 3L, 2L
), .Label = c("A", "B","C", "D"), class = "factor"),
value = c(0.326713741, 0.349206239, 0.365954667,
0.313958377, 0.480487555, 0.431199849, 0.446729183, 0.337009728,
0.331222087, 0.386937141, 0.372758657, 0.305083066, 0.504718482,
0.414191663, 0.40949735, 0.271525055, 0.30009532, 0.50117749,
0.387669057, 0.330797315, 0.390679717, 0.452181876, 0.423188657,
0.396808296, 0.388510793, 0.298505336, 0.412985921, 0.327000797,
0.304242313, 0.277513236, 0.394773901, 0.4322685, 0.440891623,
0.439061254, 0.453015536, 0.385896087, 0.452299237, 0.296923041,
0.443324417, 0.420699686, 0.282610774, 0.303566545, 0.535346806,
0.393591255, 0.32561186, 0.309230596, 0.417596817, 0.281766504,
0.445347071, 0.353419632, 0.354420125, 0.429613769, 0.385733992,
0.155136898, 0.485385537, 0.439544022, 0.436584443, 0.458706915,
0.600399196, 0.440390527, 0.362952292, 0.37253055, 0.37306264,
0.371298164, 0.469741255, 0.573943496, 0.283266962, 0.391182601,
0.663566113, 0.517713368, 0.327498972, 0.353969425, 0.443648636,
0.449972481, 0.434426159, 0.305042148, 0.422493547, 0.194572225,
0.331083208, 0.418288261, 0.447215647, 0.429001331, 0.339149892,
0.336879104, 0.471237898, 0.408330619, 0.393405557, 0.486086488,
0.427713692, 0.379242182, 0.40456596, 0.326695889, 0.393235713,
0.452374548, 0.332855165, 0.323469192, 0.396484613, 0.372199923,
0.257353246, 0.405249774, 0.326494843, 0.420468688, 0.335335255,
0.267627925, 0.379383296, 0.338241786, 0.416064918, 0.381003618,
0.284006208, 0.442705005, 0.494199812, 0.464447916, 0.370418996,
0.293953657, 0.34482345, 0.47208631, 0.378798842, 0.407261223,
0.34767586, 0.424341202, 0.434532404, 0.342623293, 0.628901243,
0.381492049, 0.540111601, 0.392371207, 0.459349483, 0.373172134,
0.270272404, 0.413454324, 0.375994682, 0.470298111, 0.340463549,
0.31613645, 0.470312864, 0.410651028, 0.276164204, 0.341546267,
0.402167588, 0.465735435, 0.434102625, 0.328114063, 0.394582212,
0.331681252, 0.387562275, 0.3989245, 0.44939962, 0.29586333,
0.398924828, 0.559520543, 0.392099082, 0.589552164, 0.397368163,
0.375135392, 0.348508835, 0.447002649, 0.407775551, 0.404435992,
0.666776299, 0.265039146, 0.25311482, 0.354386091, 0.44051528,
0.416727781, 0.460624784, 0.455415428, 0.445090771, 0.502343714,
0.393426061, 0.463244319, 0.345586747, 0.291874498, 0.564393103,
0.400276631, 0.41512531, 0.308440536, 0.373545259, 0.272377819,
0.434890926, 0.358394623, 0.414819628, 0.761894882, 0.409700364,
0.403811544, 0.469092041, 0.397044837, 0.312479883, 0.294876397,
0.314414322, 0.428720832, 0.329074681, 0.311423391, 0.444689006,
0.254723012, 0.248710752, 0.270434052, 0.416304022, 0.38875562,
0.396840513, 0.296386898, 0.454476953, 0.474986047, 0.427072734,
0.270839244, 0.426266223, 0.586857438, 0.348018169, 0.386638522,
0.349321723, 0.418692261, 0.295630395, 0.463439822, 0.286190838,
0.336389571, 0.422766507, 0.231764346, 0.358636618, 0.562871873,
0.381515294, 0.28637746)), row.names = c(961L, 1171L, 84L,
608L, 805L, 889L, 818L, 334L, 596L, 177L, 848L, 468L, 987L, 293L,
218L, 318L, 1110L, 969L, 211L, 1064L, 1221L, 1239L, 99L, 70L,
1084L, 448L, 250L, 351L, 586L, 572L, 1026L, 139L, 232L, 632L,
914L, 658L, 1174L, 909L, 280L, 1126L, 368L, 354L, 808L, 1082L,
453L, 612L, 201L, 337L, 644L, 67L, 1177L, 1153L, 694L, 962L,
1040L, 98L, 923L, 1186L, 691L, 650L, 236L, 886L, 307L, 224L,
100L, 1003L, 598L, 230L, 1112L, 779L, 500L, 433L, 861L, 1099L,
103L, 350L, 248L, 1223L, 370L, 260L, 788L, 267L, 454L, 399L,
1069L, 231L, 204L, 1060L, 1208L, 847L, 205L, 578L, 88L, 221L,
518L, 616L, 242L, 1075L, 951L, 165L, 527L, 1089L, 206L, 380L,
431L, 801L, 1025L, 279L, 575L, 624L, 1052L, 1107L, 854L, 344L,
1191L, 86L, 2L, 916L, 659L, 903L, 251L, 436L, 1118L, 796L, 1150L,
77L, 1155L, 693L, 358L, 107L, 1210L, 1048L, 968L, 620L, 1227L,
258L, 1019L, 515L, 4L, 674L, 16L, 405L, 739L, 660L, 629L, 66L,
64L, 365L, 1061L, 1220L, 166L, 1100L, 182L, 759L, 745L, 1131L,
302L, 757L, 938L, 391L, 371L, 119L, 278L, 135L, 117L, 995L, 21L,
1130L, 150L, 1076L, 364L, 1192L, 772L, 844L, 782L, 421L, 561L,
440L, 41L, 1201L, 963L, 706L, 652L, 1129L, 669L, 180L, 1031L,
581L, 390L, 704L, 603L, 625L, 170L, 384L, 899L, 591L, 255L, 830L,
672L, 558L, 983L, 121L, 190L, 451L, 213L, 1068L, 1042L, 234L,
545L, 40L, 543L, 1045L, 464L, 941L, 76L, 959L, 329L, 1179L, 621L,
517L), class = "data.frame")
Which looks like:
# A tibble: 10 x 5
DTI_ID Gender Age ROI value
<fct> <fct> <fct> <fct> <dbl>
1 5927 Male Old A 0.395
2 5634 Male Old C 0.433
3 5547 Female Old B 0.257
4 5979 Male Old C 0.404
5 5660 Male Old A 0.398
6 5876 Female Old D 0.426
7 5518 Male Old A 0.404
8 6001 Female Old D 0.392
9 6042 Male Old A 0.388
10 5821 Male Old A 0.344
ROI is a region of interest within each subject, so all subjects have all 4 ROIs.
I would like to calculate a 2-way ANCOVA 4(ROIs [a/b/c/d] - within) x 2 (Age [young/old] - between) + Gender [covariate] to determine the interaction effects of age and ROI on value, controlling for Gender.
To do that, I calculated:
#2-way ANOVA
res.aov2 <- df %>%
anova_test(value ~ Gender + Age*ROI, within = ROI, wid= DTI_ID)
get_anova_table(res.aov2)
which works fine and outputs:
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 Gender 1 1227 5.196 2.30e-02 * 0.004000
2 Age 1 1227 0.732 3.92e-01 0.000596
3 ROI 3 1227 228.933 6.13e-118 * 0.359000
4 Age:ROI 3 1227 22.258 4.90e-14 * 0.052000
I then want to run a multiple comparisons to generate p values that I can graph over boxplots for visualization of the analyses.
I am using emmeans_test:
# Pairwise comparisons
pwc2 <- df %>%
group_by(ROI) %>%
emmeans_test(value ~ Age, covariate = Gender,
p.adjust.method = "bonferroni")
but receive the error:
Error in contrast.emmGrid(res.emmeans, by = grouping.vars, method = method, : Nonconforming number of contrast coefficients
I cannot figure out why, as the pairwise comparison works fine when I remove the covariate. Does it have to do with a categorical variable being used as a covariate? I am stuck and want to make sure I am reporting the appropriate p-values in my chart.
Adding Gender to group_by as well, allowed the code to run properly.
This is my first post so I'm not sure if I've done this correctly. I'd like to add a second xyplot to plot1 so that it represents the same data as the bubble plot (Percent~Distance and grouped by Forest_type), but without the size of the bubble based on dat$Pixels. IE: a dot within the bubble. All dots should be black and very small. I tried as.layer with LatticeExtra, but couldn't get it to work with my limited panel and function experience. I obtained this original code from someone much more experienced and have only been able to modify it slightly.
Thanks for any suggestions.
library(lattice)
mykey <- list(x = .7, y = .7, corner = c(0,1), text = list(lab = c("D", "C", "M")),
points = list(col = c(2,3,4), pch = 1) )
fontsize <- trellis.par.get("par.main.text")
fontsize$font <- 1
trellis.par.set("par.main.text", fontsize)
trellis.par.get()
plot1<-xyplot(Percent ~ Distance, key = mykey, cex = dat$Pixels / 15000000,
col = dat$Forest_type+1,
xlab="Distance", ylab="Percent of pixels",
data = dat, panel = function(...){
panel.xyplot(...)
})
print(plot1, position=c(0, .5, 1, 1))
Data to reproduce/use are below:
dat <- structure(list(Pixels = c(51442200L, 16201800L, 9679500L, 8954100L,
4332600L, 4024800L, 2843100L, 2707200L, 2635200L, 1754100L, 1865700L,
1467000L, 1575900L, 1253700L, 1061100L, 1205100L, 1045800L, 909000L,
822600L, 732600L, 837900L, 676800L, 600300L, 538200L, 504900L,
414000L, 316800L, 318600L, 260100L, 261900L, 214200L, 189900L,
182700L, 178200L, 150300L, 135000L, 117000L, 103500L, 90000L,
95400L, 68400L, 79200L, 69300L, 54900L, 72000L, 60300L, 55800L,
41400L, 41400L, 37800L, 24300L, 25200L, 32400L, 36000L, 28800L,
19800L, 18900L, 16200L, 16200L, 60586200L, 25074900L, 18993600L,
21714300L, 13090500L, 13913100L, 10777500L, 11007900L, 11732400L,
8385300L, 9188100L, 7379100L, 8556300L, 7248600L, 6276600L, 7616700L,
6766200L, 6323400L, 5963400L, 5404500L, 6618600L, 5781600L, 5630400L,
5091300L, 5515200L, 4810500L, 4392900L, 4674600L, 4113900L, 4517100L,
3974400L, 3650400L, 3759300L, 3761100L, 3456000L, 3180600L, 2963700L,
2999700L, 2619000L, 2723400L, 2321100L, 2286000L, 2167200L, 1925100L,
1906200L, 1649700L, 1658700L, 1561500L, 1567800L, 1494900L, 1378800L,
1384200L, 1219500L, 1257300L, 1220400L, 1098000L, 1133100L, 959400L,
1044900L, 3713400L, 1295100L, 827100L, 892800L, 549000L, 561600L,
440100L, 432900L, 461700L, 319500L, 344700L, 248400L, 277200L,
221400L, 185400L, 227700L, 222300L, 206100L, 189900L, 177300L,
209700L, 189900L, 170100L, 156600L, 170100L, 163800L, 153900L,
169200L, 148500L, 185400L, 162000L, 165600L, 176400L, 149400L,
128700L, 111600L, 99000L, 83700L, 60300L, 48600L, 32400L, 27000L,
12600L, 6300L, 5400L, 8100L, 9000L, 11700L, 15300L, 16200L, 11700L,
10800L, 6300L, 5400L, 6300L, 9900L, 14400L, 15300L, 15300L),
Forest_type = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L), Distance = c(30L, 60L, 90L, 120L, 150L, 180L, 210L,
240L, 270L, 300L, 330L, 360L, 390L, 420L, 450L, 480L, 510L,
540L, 570L, 600L, 630L, 660L, 690L, 720L, 750L, 780L, 810L,
840L, 870L, 900L, 930L, 960L, 990L, 1020L, 1050L, 1080L,
1110L, 1140L, 1170L, 1200L, 1230L, 1260L, 1290L, 1320L, 1350L,
1380L, 1410L, 1440L, 1470L, 1500L, 1530L, 1560L, 1590L, 1620L,
1650L, 1680L, 1710L, 1740L, 1770L, 30L, 60L, 90L, 120L, 150L,
180L, 210L, 240L, 270L, 300L, 330L, 360L, 390L, 420L, 450L,
480L, 510L, 540L, 570L, 600L, 630L, 660L, 690L, 720L, 750L,
780L, 810L, 840L, 870L, 900L, 930L, 960L, 990L, 1020L, 1050L,
1080L, 1110L, 1140L, 1170L, 1200L, 1230L, 1260L, 1290L, 1320L,
1350L, 1380L, 1410L, 1440L, 1470L, 1500L, 1530L, 1560L, 1590L,
1620L, 1650L, 1680L, 1710L, 1740L, 1770L, 30L, 60L, 90L,
120L, 150L, 180L, 210L, 240L, 270L, 300L, 330L, 360L, 390L,
420L, 450L, 480L, 510L, 540L, 570L, 600L, 630L, 660L, 690L,
720L, 750L, 780L, 810L, 840L, 870L, 900L, 930L, 960L, 990L,
1020L, 1050L, 1080L, 1110L, 1140L, 1170L, 1200L, 1230L, 1260L,
1290L, 1320L, 1350L, 1380L, 1410L, 1440L, 1470L, 1500L, 1530L,
1560L, 1590L, 1620L, 1650L, 1680L, 1710L, 1740L, 1770L),
Percent = c(44.44565403, 38.05758742, 32.81164195, 28.37059427,
24.10736642, 21.75626368, 20.22018818, 19.13486005, 17.77022516,
16.77136219, 16.36794315, 16.1306284, 15.13920111, 14.37119571,
14.10455796, 13.31675783, 13.01669094, 12.22020569, 11.79202684,
11.60205245, 10.92979573, 10.18004603, 9.378515186, 9.301602115,
8.156440826, 7.683313847, 6.51369356, 6.171548117, 5.751243781,
5.275562001, 4.923458833, 4.740507751, 4.436188811, 4.358353511,
4.024096386, 3.93907563, 3.679592414, 3.24767015, 3.249918752,
3.327055869, 2.824228911, 3.31075997, 3.081232493, 2.763932941,
3.629764065, 3.509690938, 3.237597911, 2.564102564, 2.548476454,
2.440441604, 1.717557252, 1.774397972, 2.575107296, 2.772002772,
2.29390681, 1.755786113, 1.62037037, 1.634877384, 1.505016722,
52.34599773, 58.90025792, 64.38464824, 68.80061595, 72.83789874,
75.20797859, 76.64981118, 77.80534351, 79.11634399, 80.17382325,
80.60797473, 81.13805047, 82.1978212, 83.09089033, 83.43103242,
84.16708105, 84.21642209, 85.00907441, 85.48574377, 85.59007982,
86.33482038, 86.96358468, 87.9640045, 87.99191165, 89.09566735,
89.27676633, 90.32198372, 90.55090656, 90.96517413, 90.98984772,
91.35291684, 91.12558976, 91.28059441, 91.98767334, 92.53012048,
92.80462185, 93.20690631, 94.12595312, 94.57263568, 94.97802888,
95.83797845, 95.56057186, 96.35854342, 96.91889443, 96.09800363,
96.01885804, 96.24020888, 96.71125975, 96.50969529, 96.51365485,
97.45547074, 97.46514575, 96.9241774, 96.81219681, 97.20430108,
97.36632083, 97.14506173, 96.82107175, 97.0735786, 3.208348237,
3.042154666, 2.803709805, 2.82878978, 3.054734839, 3.035757723,
3.13000064, 3.059796438, 3.113430843, 3.05481456, 3.024082116,
2.731321128, 2.662977693, 2.537913959, 2.464409618, 2.516161114,
2.766886972, 2.770719903, 2.72222939, 2.807867731, 2.735383893,
2.856369297, 2.657480315, 2.706486234, 2.747891829, 3.039919826,
3.164322724, 3.277545328, 3.28358209, 3.734590283, 3.723624328,
4.133902494, 4.283216783, 3.653973145, 3.445783133, 3.256302521,
3.113501274, 2.62637673, 2.177445564, 1.694915254, 1.337792642,
1.128668172, 0.56022409, 0.317172633, 0.272232305, 0.471451021,
0.522193211, 0.724637681, 0.941828255, 1.045903544, 0.82697201,
0.760456274, 0.500715308, 0.415800416, 0.501792115, 0.877893057,
1.234567901, 1.544050863, 1.421404682), div2erroftot = c(4.966434556,
1.564186201, 0.934497422, 0.864464421, 0.418286433, 0.388570197,
0.27448418, 0.261363854, 0.254412687, 0.169347789, 0.180122097,
0.141630014, 0.152143653, 0.121037184, 0.102442814, 0.116345146,
0.100965691, 0.087758475, 0.079417075, 0.070728117, 0.080894198,
0.065340963, 0.057955349, 0.051959968, 0.048745054, 0.039969206,
0.030585132, 0.030758911, 0.025111088, 0.025284867, 0.02067972,
0.018333701, 0.017638585, 0.017204137, 0.01451056, 0.013033437,
0.011295645, 0.009992302, 0.008688958, 0.009210295, 0.006603608,
0.007646283, 0.006690498, 0.005300264, 0.006951166, 0.005821602,
0.005387154, 0.003996921, 0.003996921, 0.003649362, 0.002346019,
0.002432908, 0.003128025, 0.003475583, 0.002780467, 0.001911571,
0.001824681, 0.001564012, 0.001564012, 5.849232678, 2.42083056,
1.833717675, 2.096384872, 1.263808926, 1.343226002, 1.040502708,
1.062746441, 1.132692552, 0.809550207, 0.887055712, 0.712407658,
0.826059227, 0.699808669, 0.605967924, 0.735346507, 0.653235855,
0.610486182, 0.57573035, 0.521771922, 0.638985964, 0.558178655,
0.543581206, 0.491534348, 0.53245934, 0.4644248, 0.424108035,
0.451304473, 0.397172266, 0.436098797, 0.383704381, 0.352424132,
0.362937771, 0.363111551, 0.333655983, 0.307067772, 0.286127384,
0.289602967, 0.252848675, 0.262927866, 0.224088224, 0.220699531,
0.209230106, 0.185856809, 0.184032128, 0.159268598, 0.160137494,
0.15075342, 0.151361647, 0.144323591, 0.133114835, 0.133636172,
0.11773538, 0.121384742, 0.117822269, 0.106005286, 0.10939398,
0.092624291, 0.100878801, 0.358506403, 0.125034104, 0.079851523,
0.086194462, 0.053002643, 0.054219097, 0.042489004, 0.041793887,
0.044574354, 0.030845801, 0.033278709, 0.023981524, 0.02676199,
0.021374836, 0.017899253, 0.021983063, 0.021461726, 0.019897714,
0.018333701, 0.017117247, 0.020245272, 0.018333701, 0.01642213,
0.015118787, 0.01642213, 0.015813903, 0.014858118, 0.016335241,
0.014336781, 0.017899253, 0.015640124, 0.015987683, 0.017030357,
0.01442367, 0.01242521, 0.010774308, 0.009557854, 0.008080731,
0.005821602, 0.004692037, 0.003128025, 0.002606687, 0.001216454,
0.000608227, 0.000521337, 0.000782006, 0.000868896, 0.001129565,
0.001477123, 0.001564012, 0.001129565, 0.001042675, 0.000608227,
0.000521337, 0.000608227, 0.000955785, 0.001390233, 0.001477123,
0.001477123)), .Names = c("Pixels", "Forest_type", "Distance",
"Percent", "div2erroftot"), class = "data.frame", row.names = c(NA,
-177L))
If I understand you correctly, this is simple enough that it can be handled with a slightly modified panel function.
The panel function below first runs panel.xyplot(x,y,...) to get the plot you already have, and then adds small black points to it using the function lpoints(), which is just lattice's grid-based version of the base graphics function points().
Try this:
plot1<-xyplot(Percent ~ Distance, key = mykey, cex = dat$Pixels / 15000000,
col = dat$Forest_type+1,
xlab="Distance", ylab="Percent of pixels",
data = dat,
panel = function(x,y,...){
panel.xyplot(x,y,...)
lpoints(x, y, col="black", pch=16, cex=0.01)
})
print(plot1, position=c(0, .5, 1, 1))