全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2589 3
2014-06-15
##Read parameters set data 读取参数数据,参数数据是10000行*2列数据
ParamData <- read.csv("Coeffi.csv", header = TRUE)
##Read choice set data 读取样本参数,样本参数是283行*12列数据
Data<-read.csv("Sequence.csv",header=TRUE)
想要做的是参数数据每一行分别乘以样本数据某一列所有行的数据
因为是10000*1参数矩阵 乘以283*1样本数据矩阵,所以把样本数据矩阵转置了
##Transfer data for easily calculation 转置样本数据矩阵
TData <- t(Data)
这样就可以变成10000*1参数矩阵乘以1*283样本数据得到10000*283矩阵
##calculate utility of each alternative
d <- matrix(ParamData[,1]*TData[3,] + ParamData[,2]*TData[8,], nrow = 10000, ncol = 283)
e <- matrix(ParamData[,1]*TData[4,] + ParamData[,2]*TData[9,], nrow = 10000, ncol = 283)
f <- matrix(ParamData[,1]*TData[5,] + ParamData[,2]*TData[10,], nrow = 10000, ncol = 283)
g <- matrix(ParamData[,1]*TData[6,] + ParamData[,2]*TData[11,], nrow = 10000, ncol = 283)
h <- matrix(ParamData[,1]*TData[7,] + ParamData[,2]*TData[12,], nrow = 10000, ncol = 283)
print(e)
问题:发现e矩阵每一行都比前一行结果大,貌似结果逐行累加了,求破解!哪错了?

万分感谢~

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-6-15 16:51:49
又运行一遍,之前有错误被数据覆盖了.看到错误提示是:
非整合参数.
那是说这个参数数据计算ParamData[,1]*TData[7,] ,在计算前需要分别定义,
ParamData1 <- matrix (ParamData[,1], 10000, 1)
ParamData2 <- matrix (ParamData[,2], 10000, 1)
Data3 <- matrix(Data[,3], 1, 283, byrow = T)
Data8<-matrix(Data[,8], 1, 283, byrow = T)
这样做ok? 先尝试一下先,一会儿汇报结果~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-15 17:10:37
重新修改代码如下:
TData <- t(Data)
ParamData1 <- matrix (ParamData[,1], nrow = 10000, ncol = 1)
ParamData2 <- matrix (ParamData[,2], nrow = 10000, ncol = 1)
TData3 <- matrix(TData[3,], nrow = 1, ncol = 283)
TData4 <- matrix(TData[3,], nrow = 1, ncol = 283)
TData5 <- matrix(TData[5,], nrow = 1, ncol = 283)
TData6 <- matrix(TData[6,], nrow = 1, ncol = 283)
TData7 <- matrix(TData[7,], nrow = 1, ncol = 283)
TData8 <- matrix(TData[8,], nrow = 1, ncol = 283)
TData9 <- matrix(TData[9,], nrow = 1, ncol = 283)
TData10 <- matrix(TData[10,], nrow = 1, ncol = 283)
TData11 <- matrix(TData[11,], nrow = 1, ncol = 283)
TData12 <- matrix(TData[12,], nrow = 1, ncol = 283)
##calculate utility of each alternative
d <- ParamData1 %*% TData3 + ParamData2 %*% TData8
e <- ParamData1 %*% TData4 + ParamData2 %*% TData9
f <- ParamData1 %*% TData5 + ParamData2 %*% TData10
g <- ParamData1 %*% TData6 + ParamData2 %*% TData11
h <- ParamData1 %*% TData7 + ParamData2 %*% TData12
print(e)

e的结果数值大小比之前算得少了大约一半,但是还是逐行增加!怎么破?又没有头绪了!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-15 21:01:50
问题已经解决,搂主粗心了,把ID,第一列算进去了~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群