Функция цикла в R для подсчета количества точек за пределами предполагаемой кривой - PullRequest
0 голосов
/ 15 ноября 2018

Как сделать функцию петли в R, чтобы рассчитать количество точек (в процентах), которые выходят за пределы розовой линии для каждой возрастной единицы (1-2,2-3,3-4 и ,,, ,, 18-19)? Например, я хочу увидеть, сколько точек в возрастном интервале между 1-2 имеют более высокое значение , чем предполагаемая кривая розового цвета для этого конкретного возрастного интервала, и , а затем рассчитывают процент ( количество точек, которые имеют более высокое значение, чем оценочное значение, деленное на общее количество наблюдений для этого конкретного интервала Мне нужно сделать это для каждого возрастного интервала (1-2,2-3,3-4,4-5,5-6,6-7 ,,,,, 17-18,18-19).

Пример:

   Age     Value     estimated Value 
    1.5     12          12
    1.5     12          14
    1.7     13          15
    1.8     14          9 
    2.1     12          15
    2.2     14          16
    2.3     14          13
    3       8           8.1
    4       9           9.1
    4.1     5           6.1
    4.2     5           12
    5       14          15

The result should be something like
Age:                          1-2    2-3    3-4  4-5
number of points *outside*     1      1 
percentage                     1/4    1/3                 

Мой исходный код: (но мне нужно сделать его функцией цикла, чтобы получить результаты для всех возрастных единиц)

a=1
b=2
A<-subset(Data, Age>=a & Age<b)
sum(A$Value > A$EstimatedValue)/nrow(A)

enter image description here

1 Ответ

0 голосов
/ 15 ноября 2018

Использование dplyr:

library(dplyr)
dd %>%
  mutate(age_bin = cut(Age, breaks = 0:20)) %>%
  group_by(age_bin) %>%
  summarize(n_points = n(),
            n_over_estimate = sum(Value > estimated_Value),
            pct_over_estimate = n_over_estimate / n_points * 100)
#   age_bin n_points n_over_estimate pct_over_estimate
#   <fct>      <int>           <int>             <dbl>
# 1 (1,2]          4               1                25
# 2 (2,3]          4               1                25
# 3 (3,4]          1               0                 0
# 4 (4,5]          3               0                 0

И этот пример данных:

dd = read.table(text = "Age     Value     estimated_Value 
    1.5     12          12
    1.5     12          14
    1.7     13          15
    1.8     14          9 
    2.1     12          15
    2.2     14          16
    2.3     14          13
    3       8           8.1
    4       9           9.1
    4.1     5           6.1
    4.2     5           12
    5       14          15", header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...