У меня проблема с решением ряда нелинейных уравнений с nleqslv
в R, чтобы найти меру расстояния до значения по умолчанию. Это мой первый код R, поэтому я все еще борюсь с некоторыми проблемами. Мой код выглядит так (миниатюризированный до data.frame с тремя регистрами):
library("nleqslv")
D <- c(28000000, 59150000, 38357000)
VE <- c(4257875, 10522163.6, 31230643)
R <- c(0.059883, 0.059883, 0.059883)
SE <- c(0.313887897, 0.449654737, 0.449734826976691)
df <- data.frame(D, VE, R, SE)
for(i in 1:nrow(df)){
fnewton <- function(x){
y <- numeric(2)
d1 <- (log(x[1]/df$D[i])+(df$R[i]+x[2]^2/2))/x[2]
d2 <- d1-x[2]
y1 <- df$VE[i]-(x[1]*pnorm(d1)-exp(-df$R[i])*df$D[i]*pnorm(d2))
y2 <- df$SE[i]*df$VE[i]-pnorm(d1)*x[2]*x[1]
y
}
xstart <- c(df$VE[i], df$SE[i])
df$VA[i] <- nleqslv(xstart, fnewton, method="Newton")$x[1]
df$SA[i] <- nleqslv(xstart, fnewton, method="Newton")$x[2]
i=i+1
}
Моя проблема в том, что мой код дает мне только одно решение, а это означает, что мой цикл не работает должным образом. Цикл должен преодолеть тот факт, что fnewton
в первую очередь является вектором длины 2, но мои данные (или мой пример) являются более длинным вектором, чем 2. Я пробовал некоторые вещи, но не могу справиться с проблемой, я думаю, что есть простое решение для этого, но я не вижу своей ошибки.
fnewton
должны лиy1
,y2
бытьy[1]
,y[2]
? - person mra68   schedule 04.01.2016