我if在R中运行一个简短的函数但是收到以下警告消息:
In if ((runif(50, 0, 1) < 0.69)) { : the condition has length > 1 and only the first element will be used`.
Run Code Online (Sandbox Code Playgroud)
我对R的初步把握使我相信runif生成一个向量但if产生单个值,所以我认为这是问题所在.如果在这里有任何简单的替代吗?
此外,我希望最终产品是两个参数的矩阵组合,但我不确定在rnorm两个方案的函数中放入50是否正确.
Test <-
if((runif(50, 0, 1)<0.69)) {
rnorm(50, 25, 4)
} else {
rnorm(50, 28, 4.3)
}
Run Code Online (Sandbox Code Playgroud) 这里很简单,我曾经知道这一点,但多年来它已经丢失了.
简单的方程易于编码R:
f(x,y) = 2x^2 + 4y^2 + 6x - 8y + 15
Run Code Online (Sandbox Code Playgroud)
我有x > 1和的约束y > -1.
我不能为我的生活记住如何在R中正确地写出约束,而我所拥有的书是没有用的
欢呼任何帮助
寻找最小和最大
我想在我创建的数据样本上运行一些最大似然代码.这是我到目前为止:
library("maxLik")
data <- replicate(20, rnorm(100))
logLikFun <- function(param) {
mu <- param[1]
sigma <- param[2]
sum(dnorm(data, mean = mu, sd = sigma, log = TRUE))
}
mle <- maxLik(logLik = logLikFun, start = c(mu = 0, sigma = 1))
summary(mle)
Run Code Online (Sandbox Code Playgroud)
我在提取20的每个样本的均值和标准偏差时遇到一些问题,我修改了apply函数以试图适应这个但是还没有任何工作.有任何想法吗?
与R中的优化函数有关的问题
到目前为止,我有以下代码,需要知道输入X和T的值.X是10个值的向量,T是与均值和方差有关的10*2值的向量.我希望输出格式为alpha,mean1,mean2,var1和var2的一个新值.不确定如何正确获取输入数据.
我想在这个函数中运行X的所有值,但只有T的第一行(10个值),我不知道如何为T执行此操作.我对第2行有不同的功能.
R <-runif(10, 0, 1)
S <-1-R
T <-t(cbind(R,S))
X <- runif(10, 25, 35)
Data1 <- function(xy) {
alpha <- xy[1]
mean1 <- xy[2]
mean2 <- xy[3]
var1 <- xy[4]
var2 <- xy[5]
-sum(0.5*(((X)-mean1)/var1)^2+alpha*mean1+log(2.5*var1)+log(exp(-alpha*mean1)+exp(-alpha*mean2))*(T))
}
starting_values <- c(0.3, 28, 38, 4, 3)
optim(starting_values, Data1, lower=c(0, 0, 0, 0, 0), method='L-BFGS-B')
Run Code Online (Sandbox Code Playgroud)
还得到以下错误代码:
Error in optim(starting_values, Data1, lower = c(0, 0, 0, 0, 0), method = "L-BFGS-B") :
L-BFGS-B needs finite values of 'fn'
Run Code Online (Sandbox Code Playgroud)
欢呼任何帮助.
编辑
包含的第二个功能
0.5*((y1-mean2)/var2)^2+alpha*mean2+log(2.5*var2)+ log(exp(-alpha*mean1)+exp(-alpha*mean2)))*T
Run Code Online (Sandbox Code Playgroud)
好的,尽可能清楚地解释我想做什么.上面原始帖子中的第一个函数一次获取X的所有10个值,并且应该取第一行T数据(此处标记为R)并且我不知道如何执行此操作. …