повторяя сценарий, используя г - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть следующий скрипт

Posdef <- function (n, ev = runif(n, 0, 10)) 
    {
    Z <- matrix(ncol=n, rnorm(n^2))
        decomp <- qr(Z)
        Q <- qr.Q(decomp) 
        R <- qr.R(decomp)
        d <- diag(R)
        ph <- d / abs(d)
        O <- Q %*% diag(ph)
        Z <- t(O) %*% diag(ev) %*% O
        return(Z)
    }

Sigma <- Posdef(n = 11)
mu <-  runif(11,0,10) 
data <- as.data.frame(mvrnorm(n=1000, mu, Sigma))
data[data <  0] <-  0 #setting a floor#
data[data >  10] <-  10 #setting a ceiling#
names(data) = c('criteria_1', 'criteria_2', 'criteria_3', 'criteria_4', 'criteria_5', 
            'criteria_6', 'criteria_7', 'criteria_8', 'criteria_9', 'criteria_10',
            'outcome')
data$outcome <- ifelse(data$outcome > 5, 1, 0)

data <- data[, sapply(data, is.numeric)]
maxValue <- as.numeric(apply (data, 2, max))
minValue <- as.numeric(apply (data, 2, min))

data_scaled <- as.data.frame(scale(data, center = minValue, 
scale = maxValue-minValue))

ind <- sample (1:nrow(data_scaled), 600)
train <- data_scaled[ind,]
test <- data_scaled[-ind,]

model <- glm (formula = 
    outcome ~ criteria_1 + criteria_2 + criteria_3 + criteria_4 + criteria_5 +
            criteria_6 + criteria_7 + criteria_8 + criteria_9 + criteria_10, 
    family = "binomial", 
    data = train)

summary (model)
predicted_model <- predict(model, test)

neural_model <- neuralnet(formula = 
    outcome ~ criteria_1 + criteria_2 + criteria_3 + criteria_4 + criteria_5 +
            criteria_6 + criteria_7 + criteria_8 + criteria_9 + criteria_10,
    hidden = c(2,2) ,
    threshold = 0.01, 
    stepmax = 1e+07,
    startweights = NULL,
    rep = 1,
    learningrate = NULL,
    algorithm = "rprop+",
    linear.output=FALSE, 
    data= train)

plot (neural_model)

results <- compute (neural_model, test[1:10])
results <- results$net.result*(max(data$outcome)-
min(data$outcome))+ min(data$outcome)
Values <- (test$outcome)*(max(data$outcome)- 
min(data$outcome)) + min(data$outcome)
MSE_nueral_model <- sum((results - Values)^2)/nrow(test)
MSE_model <- sum((predicted_model - test$outcome)^2)/nrow(test)

print(MSE_model - MSE_nueral_model)

R1 <- (MSE_model - MSE_nueral_model)

Цель этого скрипта - создать произвольное многомерное распределение, а затем сравнить два метода.В этом случае это нейронная сеть и логистическая регрессия.Конечным результатом является разница в среднеквадратичной ошибке.

Теперь моя проблема с созданием цикла связана с генерацией 1000 наблюдений.

Я могу создать цикл без части скрипта, имитирующей данные, и введение этого в цикл, кажется, приводит к потере работоспособности.Я попытался создать вектор столбца, заполненный NA, но все, что я в итоге получил, это возвращаемое единственное значение, а не вектор длины n, заполненный сокращениями MSE для каждой итерации цикла.

Любая помощь будет принята с благодарностью.

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