【发布时间】:2019-05-21 10:45:51
【问题描述】:
我正在尝试根据正确的响应(EQ_C 和 MEM_C 列)计算参与者响应(EQ_R 和 MEM_R 列)的准确性。
dput(example)
structure(list(TRIAL = c("1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12", "13", "14", "15"), EQ_C = c("0101", "1010",
"1010", "00111", "01011", "01101", "100011", "010101", "001101",
"0110011", "1101001", "1100101", "11100001", "11001010", "11001010"
), EQ_R = c("0101", "0010", "1010", "00111", "01011", "01101",
"10101", "11010", "001101", "0100011", "1101001", "0100101",
"11110001", "11001010", "11001010"), MEM_C = c("ZLHK", "RZKX",
"DGWL", "BCJSP", "WRKTJ", "CHBXS", "HNDCWX", "SWVNDT", "WLDGPB",
"DSHRKBV", "HCXLZWB", "HDNBVZC", "BCRHKVDM", "RVTBWKFS", "NWHVZFLD"
), MEM_R = c("ZLHK", "RZKX", "DGWL", "BCJSP", "WRKLTJ", "CHBXS",
"HNDCWX", "SWVDTN", "WLDGPB", "DSHRKBV", "HCXLZWB", "HDNBVZC",
"BCRHKVDM", "RVTBWKFS", "NWHVZFLD"), EQ_SUM = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), MEM_SUM = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names
= c(NA,
15L), class = "data.frame")
我为二进制数据 (EQ) 和字母 (MEM) 需要计算的“总和”/准确度分数添加了一个新列。
OSPAN["EQ_SUM"] <- NA
OSPAN["MEM_SUM"]<- NA
然后我尝试使用 strsplit 计算准确度,但收到错误通知。
mean(strsplit(OSPAN$MEM_C, "") == strsplit(OSPAN$MEM_R, ""))
Error in strsplit(OSPAN$MEM_C, "") == strsplit(OSPAN$MEM_R, "") : comparison of these types is not implemented
In addition:
Warning messages:
1: In strsplit(OSPAN$MEM_R, "") : input string 342 is invalid UTF-8
2: In strsplit(OSPAN$MEM_R, "") : input string 580 is invalid UTF-8
我的问题是:
如何匹配/计算预测变量 (C) 和实际 (R) 值之间的准确度或一致性到总和列中?
例如,在第 1 行中,EQ_SUM 将为 1(或 100%),而在第 2 行中为 0.75 或 75%,因为参与者选择了错误的答案(0 而不是 1)。因此,给出了部分信用评分,这不是绝对匹配/一致的问题。
提前谢谢你。
【问题讨论】:
-
strsplit()生成一个列表。 -
你知道我可以用什么代替吗?在计算每一行的准确度分数后,我正在考虑将列表导入原始数据框中。
-
@annedroid 如果 R 和 C 的长度不同,例如第 7 行和第 8 行中的 EQ_C 和 EQ_R
-
我试图在下面的答案中解决这个问题,但还没有找到结论性的答案。你有什么想法吗? @A.Suliman
-
@annedroid 这里有两个选项使用
base::adist1.apply(OSPAN, 1, function(x) adist(x['EQ_C'], x['EQ_R']))这将产生数字方面的差异,2. 或者您可以使用min或max规范化这些数字,例如:apply(OSPAN, 1, function(x) (max(nchar(x['EQ_C']), nchar(x['EQ_R'])) - adist(x['EQ_C'], x['EQ_R']))/max(nchar(x['EQ_C']), nchar(x['EQ_R'])))
标签: r statistics