Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

> Подскажите со стат.методом
Де бин Анатолий
сообщение 12.10.2017 - 13:33
Сообщение #1





Группа: Пользователи
Сообщений: 25
Регистрация: 15.08.2014
Пользователь №: 26591



Приветствую. help.gif, пожалуйста, мне тут метод выбрать в такой задаче.
У меня есть данные по 80 приборам, по каждому циклу, для каждого прибор, разные датчики дают указание. Как я могу предложить на основании этих данных, что прибор неисправен? Какой статистический метод я должен использовать?
Прибор считается вышедшим из строя, если больше измерений по нему нет. Например, есть измерения по циклам 1-151. Значит, что на 152 цикле прибор вышел из строя.

Может ли тут помочь анализ выживаемости?

Сообщение отредактировал Де бин Анатолий - 12.10.2017 - 18:09
Прикрепленные файлы
Прикрепленный файл  mydat.zip ( 586,63 килобайт ) Кол-во скачиваний: 280
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
p2004r
сообщение 19.10.2017 - 10:22
Сообщение #2





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Нормализацию забыл, вот так намного устойчивее и точнее...

В принципе приборов похоже две группы.

Код
df.data <- read.csv2("mydat.csv")

str(df.data)

df.data.norm <- (data.frame(lapply(df.data[,!sapply(df.data, is.factor)], scale))+2)[, -c(1,2,3,4,10,12,13)]

library(dplyr)
library(keras)



data.list <- lapply(split(df.data.norm, df.data$id), as.list)
pribor_order <- names(data.list)
names(data.list) <- NULL
data.list <- lapply(data.list, function(l) {names(l) <- NULL; l})

data.list <- lapply(data.list, function(l) lapply(l, as.numeric))

data.list <- lapply(data.list, function(l) as.matrix(data.frame(l)))

## data.list <- lapply(data.list, normalize)

pribor.out <- sapply(pribor_order, function(n) sum(df.data$id == n))

seqLength <- 50

in_seq_event <- pad_sequences(data.list, truncating = 'post', maxlen = seqLength)

## model

drop <- 0.4

K <- backend()
K$clear_session()

main_input <- layer_input(shape = c(seqLength, 18), dtype = 'float32', name = 'main_input')

data_in_norm <- main_input %>%
    layer_batch_normalization()

## bidirectional()

lstm_out.forw <- data_in_norm %>%
    layer_gru(units = 8,
               dropout = 0.2,
               recurrent_dropout = 0.2,
               return_sequences = T) %>%
    layer_batch_normalization() %>%
    layer_gru(units = 8,
               dropout = 0.2,
               recurrent_dropout = 0.2) %>%
    layer_batch_normalization()

lstm_out.back <- data_in_norm %>%
    layer_gru(units = 8,
               dropout = 0.2,
               recurrent_dropout = 0.2,
               return_sequences = T,
               go_backwards=T) %>%
    layer_batch_normalization() %>%
    layer_gru(units = 8,
               dropout = 0.2,
               recurrent_dropout = 0.2,
               go_backwards=T) %>%
    layer_batch_normalization()


main_output <- layer_concatenate(c(lstm_out.forw,
                                   lstm_out.back)) %>%  
    layer_dense(units = 8, activation = 'relu') %>%
    layer_batch_normalization() %>%
    layer_dropout(drop) %>%
#    layer_dense(units = 8, activation = 'relu') %>%
#    layer_batch_normalization() %>%
#    layer_dropout(drop) %>%
    layer_dense(units = 8, activation = 'relu') %>%
    layer_batch_normalization() %>%
    layer_dropout(drop) %>%
    layer_dense(units = 1, activation = 'linear', name = 'main_output')


model <- keras_model(
    inputs = c(main_input),
    outputs = c(main_output)
)

model %>%
    compile(
        ## optimizer = 'rmsprop',
        ## optimizer = 'nadam',
        optimizer = 'adam',
        loss = 'mean_squared_error'
        ## loss = 'binary_crossentropy'
        ## loss_weights = c(1.0, 0.2)
    )

summary(model)

history <- model %>%
    fit(x = list(in_seq_event),
        y = list(pribor.out),
        ## y = list(labels, labels),
        validation_split = 0.1,
        #class_weight = list("0"=0.1392319, "1"=1),
        epochs = 177*2+77,
        #callbacks = list(callback_reduce_lr_on_plateau(monitor = "val_loss", factor = 0.1),
        #                 callback_tensorboard("logs/run_a", write_images = T, embeddings_freq = 1)),
        batch_size = 8)

plot(history)


pribor_predict <- model %>%
    predict(x = list(in_seq_event),
            batch_size = 8,
            verbose = 1)

plot(pribor.out, pribor_predict)


Сообщение отредактировал p2004r - 19.10.2017 - 10:24
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Сообщений в этой теме


Добавить ответ в эту темуОткрыть тему