如果遇到多元方程的求解,就需要利用rootSolve包的函数multiroot()来解方程组。multiroot()用于对n个非线性方程求解n个根,其要求完整的雅可比矩阵,采用Newton-Raphson方法。其调用格式为:
multiroot(f, start, maxiter = 100,
rtol = 1e-6, atol = 1e-8, ctol = 1e-8,
useFortran = TRUE, positive = FALSE,
jacfunc = NULL, jactype = "fullint",
verbose = FALSE, bandup = 1, banddown = 1,
parms = NULL, ...)
f指定所要求解的函数由于使用的是牛顿迭代法,因而必须通过start给定根的初始值,其中的name属性还可以标记输出变量的名称maxiter是允许的最大迭代次数rtol和atol分别为相对误差和绝对误差,一般保持默认值即可ctol也是一个用于控制迭代次数的标量,如果两次迭代的最大变化值小于ctol,那么迭代停止,得到方程组的根。
例如,己知某种保险产品在一个保单年度内的损失情况如下所示,其中给出了不同损失次数下的保单数,我们对损失次数的分布进行估计。已知分布类型是泊松(Poisson ) ,其样本均值即为参数λ的矩估计。
你先试试这样lm.test=lm(y~x1+x2,test)
根据你的报错:non-numeric argument to function
就是说你的数据里面有非数字型的,可能是NA,可能是字符“n/a” 仔细排查一下吧
1、R语言矩阵函数t(x) 转置diag(x) 对角阵x %*% y 矩阵运算solve(a,b) 运算a%*%x=b得到xsolve(a) 矩阵的逆rowsum(x)行加和colsum(x)列加和rowMeans(x) 行平均colMeans(x) 列平均
2、求解线性方程组
分析:使用函数solve(a,b),运算a%*%x=b得到x。a<-matrix(c(1,1,1,-1),2,2)b<-c(3,1)solve(a,b)运行结果>a<-matrix(c(1,1,1,-1),2,2)b<-c(3,1)solve(a,b)[1] 2 1a<-matrix(c(1,1,1,-1),2,2)
b<-c(3,1)
solve(a,b)
运行结果
>a<-matrix(c(1,1,1,-1),2,2)b<-c(3,1)solve(a,b)
[1] 2 1
注:这里矩阵a从数组读数是按照列读数