с ggplot в R - PullRequest
       26

с ggplot в R

0 голосов
/ 06 мая 2018

Мне нужна небольшая помощь. Я пытаюсь сделать заговор с пакетом ggplot. Когда я хочу построить график, это зависит от более чем 1 фактора (например, здесь: график изменяется при изменении niarednia1 и odchylenie1):

alpha = 0.05
N = 100
sample_l = 10
srednia1 = seq(-7, 7, by = 1)
odchylenie1 = seq(1, 10, by = 1)
srednia2 = 2
odchylenie2 = 2
prob = 0.7

params = expand.grid(sample_l, srednia1, odchylenie1, srednia2, odchylenie2, prob)
str(params)
names(params) = c("dlugość", "średnia1", "odchylenie1", "średnia2", "odchyelnie2", "prawdopodobienstwo")


set.seed(100)
now <- Sys.time()
powers <- sapply(1:nrow(params), function(p){
  l <- params[p, 1]
  par_1 <- c(params[p, 2],params[p, 3])
  par_2 <- c(params[p, 4], params[p, 5])
  p <- params[p,6]
  p_sim <-sapply(rep(l, N), function(x){
    my_sample <- rmix(l,"norm", par_1, "norm", par_2, p)
    shapiro.test(my_sample)$p.value
  })
  mean(p_sim < alpha)
})
Sys.time() - now

power_df <- bind_cols(params, power = powers)

power_df %>% ggplot(aes(x = średnia1, 
                        y = power,
                        col = factor(odchylenie1))) +
  geom_line()

это работает отлично, но теперь, когда я хочу сделать сюжет, зависит только 1 фактор - prob что-то идет не так. У меня есть ошибка: Ошибка: Эстетика должна быть длиной 1 или такой же, как данные (150): x, y. Вот код:

alpha = 0.05
N = 100
sample_l = 10
srednia1 = 2
odchylenie1 = 2
srednia2 = 1
odchylenie2 = 1
prob = seq(0.1,0.9,by=0.1)

set.seed(100)
now <- Sys.time()
powers <- sapply(1:nrow(params), function(p){
  l <- params[p, 1]
  par_1 <- c(params[p, 2],params[p, 3])
  par_2 <- c(params[p, 4], params[p, 5])
  p <- params[p,6]
  p_sim <-sapply(rep(l, N), function(x){
    my_sample <- rmix(l,"norm", par_1, "norm", par_2, p)
    shapiro.test(my_sample)$p.value
  })
  mean(p_sim < alpha)
})
Sys.time() - now


power_df <- bind_cols(params, power = powers)

power_df %>% ggplot(aes(x = prob, y = power)) + geom_line()

ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...