楼主: veronicalq
2621 3

[问答] R 矩阵相乘后结果累加,后一行比前一行数据大 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

大专生

43%

还不是VIP/贵宾

-

威望
0
论坛币
4276 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
837 点
帖子
38
精华
0
在线时间
46 小时
注册时间
2009-12-9
最后登录
2015-7-27

楼主
veronicalq 发表于 2014-6-15 15:33:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
##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矩阵每一行都比前一行结果大,貌似结果逐行累加了,求破解!哪错了?

万分感谢~

二维码

扫码加我 拉你入群

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

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

关键词:parameters Parameter paramete Meters Meter

沙发
veronicalq 发表于 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? 先尝试一下先,一会儿汇报结果~

藤椅
veronicalq 发表于 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的结果数值大小比之前算得少了大约一半,但是还是逐行增加!怎么破?又没有头绪了!

板凳
veronicalq 发表于 2014-6-15 21:01:50
问题已经解决,搂主粗心了,把ID,第一列算进去了~

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 20:04