r - 使用 r 重复脚本
问题描述
我有以下脚本
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 减少填充。
任何帮助将不胜感激。
解决方案
推荐阅读
- terraform - Terraform:aws_iam_policy_document 中的条件语句块?
- oracle - 从时间戳获取oracle中的日期而不使用尾随o?
- vbscript - 将 .vbs 文件单独分组,而不是一次全部分组
- python - 如何在 Python 中显示列表或双端队列的内容?
- c# - HtmlAgilityPack 中的 SelectNodes 始终返回 null
- mule - Dataweave - 使用另一个键作为 keyName 一部分的选择器
- mongodb - $project 是否允许将文档 JSON 中给定字段的所有子字段移动到上层?
- python - 如何导入和修补与测试不同的包中的 Python 模块?
- javascript - 如何在不使用 jQuery 的情况下从 CSS 伪事件触发 JavaScript 事件?
- robotframework - 为什么 Robot Framework、Selenium2Library、Element Text Should Be 关键字无法正确验证输入元素文本?