как установить прогноз одного набора данных, используя доверительные интервалы другого набора данных в R - PullRequest
0 голосов
/ 20 сентября 2019

Пример моих наборов данных

    dft=structure(list(create = structure(1L, .Label = "10.10.2018 0:00", class = "factor"), 
    id = 24799522L, order_id = 6934259L, product = structure(1L, .Label = "Intoxic", class = "factor"), 
    lead_country = structure(1L, .Label = "Indonesia", class = "factor"), 
    webmaster_identifier = 430L), .Names = c("create", "id", 
"order_id", "product", "lead_country", "webmaster_identifier"
), class = "data.frame", row.names = c(NA, -1L))

-

 dft2=structure(list(operator_login = structure(c(1L, 1L, 1L, 1L, 2L, 
2L, 2L), .Label = c("rusnak.e@2wtrade.com", "werty"), class = "factor"), 
    product = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "intoxic", class = "factor"), 
    lead_country = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "Indonesia", class = "factor"), 
    webmaster_identifier = c(430L, 430L, 430L, 430L, 430L, 430L, 
    430L), intervals = structure(c(4L, 2L, 1L, 3L, 2L, 1L, 3L
    ), .Label = c("(1,2]", "(10,16.1]", "(5,6]", "(9,10]"), class = "factor"), 
    n_calls = c(4L, 1L, 1L, 2L, 1L, 1L, 2L), n_approves = c(4L, 
    1L, 1L, 2L, 1L, 1L, 2L), prob_approve = c(1L, 1L, 1L, 1L, 
    1L, 1L, 1L), prob_ci_lo = c(0.397635364383525, 0.025, 0.025, 
    0.158113883008419, 0.9, 0.4, 0.27), prob_ci_up = c(1, 0.8, 
    0.65, 0.76, 1, 0.7, 0.4), prob_approve_rand = c(0.510206477095914, 
    0.193745510355802, 0.584877369028982, 0.703930565970481, 
    0.95, 0.65, 0.33)), .Names = c("operator_login", "product", 
"lead_country", "webmaster_identifier", "intervals", "n_calls", 
"n_approves", "prob_approve", "prob_ci_lo", "prob_ci_up", "prob_approve_rand"
), class = "data.frame", row.names = c(NA, -7L))

Я должен объединить эти два набора данных по продукту, lead_country, webmaster_identifier.

Но кроме этого, когдаВступая, мне нужно соблюдать сложное состояние.prob_ci_lo и prob_ci_up это CI для каждой строки (группы: operator_login, product, lead_country, webmaster_identifier, интервалы.)

При объединении значения в prob_approve_rand будут взяты из доверительного интервала для каждой случайной группы,но так, чтобы условие вставки соблюдалось.

Пример

Например, скажем, rusnak.e@2wtrade.com+intoxic + Индонезия + 430 + интервал (9,10) его CI от 0,397 до 1, случайно поместите значение в prob_approve_rand из этого диапазона CI, например, 0,58.

Также для других интервалов для конкретной страны, продукта, веб-мастер: rusnak.e@2wtrade.com+intoxic + indonesia + 430 + interval (10,16.1] его CI от 0,025 до 0,8

этот CI также включает 0,39, но верхняя граница CI для группы с интервалом (9.10) больше, чем верхняя (1) граница CIпоэтому для интервала (10,16,1] (0,8)

установите случайное значение prob_approve_rand ниже 0,39, например 0,19.

, наиболее важное и трудное дляСуть в том, что значения от CI до prob_approve_rand не должны перекрываться или делали это в очень редких случаях, и случайное значение не должно превышать 0,75 исключения, если нижний предел CI> 0,75

Аналогично с другими группами

Как достичь такого результата?

        operator_login product lead_country webmaster_identifier intervals n_calls
1 rusnak.e@2wtrade.com intoxic    Indonesia                  430    (9,10]       4
2 rusnak.e@2wtrade.com intoxic    Indonesia                  430 (10,16.1]       1
3 rusnak.e@2wtrade.com intoxic    Indonesia                  430     (1,2]       1
4 rusnak.e@2wtrade.com intoxic    Indonesia                  430     (5,6]       2
5                werty intoxic    Indonesia                  430 (10,16.1]       1
6                werty intoxic    Indonesia                  430     (1,2]       1
7                werty intoxic    Indonesia                  430     (5,6]       2
  n_approves prob_approve prob_ci_lo prob_ci_up prob_approve_rand
1          4            1  0.3976354       1.00         0.5102065
2          1            1  0.0250000       0.80         0.1937455
3          1            1  0.0250000       0.65         0.5848774
4          2            1  0.1581139       0.76         0.7039306
5          1            1  0.9000000       1.00         0.9500000
6          1            1  0.4000000       0.70         0.6500000
7          2            1  0.2700000       0.40         0.3300000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...