<br />
a=c() #形成一个名叫a的空变量<br />
library(quadprog) #加载quadprog包<br />
R1=252*read.csv("d://data//1.csv",header=F) #读取d:\data\1.csv文件, 并且全部数据乘以252, 另此句有错, 应为"d:\\data\\1.csv"<br />
for(i in 1:900) #循环, 变量为i, 数值为1 -> 900<br />
{<br />
R=R1[i:(i+99),] #从第i行开始, 向后取100行<br />
mean_vect = apply(R,2,mean) #对R矩阵取列均值<br />
cov_mat =cov(R) #取R的协方差矩阵<br />
N<-length(mean_vect) #取mean_vect的长度(其实也就是R的列数)<br />
sd_vect = sqrt(diag(cov_mat)) #取cov_mat的对角线元素并开方(其实就是标准差了)<br />
Amat = cbind(rep(1,N),mean_vect,diag(1,norw=N)) #把1 -> N的一个向量, mean_vect, 一个N*N的元素为1的对角矩阵, 以列的方式合并在一起<br />
Mup = seq (min(mean_vect)+0.0001,max(mean_vect)-0.0001,length=300) #形成从mean_vect最小值+0.0001, 到mean_vect最大值-0.0001, 中间300等分的一个序列<br />
sdP = muP #赋值不解释<br />
weights = matrix(0,nrow=300,ncol=N) #生成300*N的0矩阵<br />
for (i in 1:length(muP)) #循环, 变量i, 数值为 1-> mup的长度</p>
<p>#话说, 我没看到你两个for的结尾.....</p>
<p>第二个:<br />
library(mvtnorm)<br />
library(MCMCpack) #加载包<br />
a=c()<br />
Zw=NULL<br />
R1=252*read.csv("d://data//1.csv",header=F)<br />
library(quadprog)<br />
for(i in 1:900)<br />
{<br />
R=R1[i:(i+99),]<br />
mean= apply(R,2,mean)<br />
cov = cov(R)<br />
mu0=mean #以上代码我解释过的<br />
10=diag(rep(1,10),10,10) #对角元素是1 -> 10的对角阵, 但是你拿数字当变量名??????<br />
N<-length(mean) #取mean变量长度<br />
nu0=N+2<br />
s0=10<br />
n=dim(R)[1] #取R矩阵两个维度的第一个(就是行数)<br />
sigma=cov<br />
THETA=SIGMA=WEIGHT=NULL #以上两句都是赋值<br />
for(s in 1:500) #循环<br />
{<br />
ln=solve(solve(10)+n*solve(sigma))<br />
mun=ln%*%(solve(10)%*%mu0+n*solve(sigma)%*%mean) #这些都是矩阵运算, solve()是求mat^(-1), %*%是矩阵乘法</p>
<p>#总之, 这程序写的怎么跟闹着玩儿似的....orz<br />
</p>