R语言数据探索和分析23-公共物品问卷分析

打印 上一主题 下一主题

主题 654|帖子 654|积分 1962

第一次实利用用最基本的公共物品游戏,不外加其他的treatment。班里的学生4人一组,一共44/4=11组。一共玩20个回合的公共物品游戏。每回合给15秒做决定的时间。第十回合后,给大家放一个几分钟的“爱心”视频(链接如下),然后继续完成剩下的10回合。
修改列名
把“来源”,“来源详情”,“来自IP” 这几个无关变量删除。重新命名前面几个变量,新变量对应名称为:'序号','提交答卷时间','所用时间','性别'。把代表组号的那一个变量的名字重新命名为“team_num”。把后面所有回合的变量名重新命名为“round1”, round2,....round20。以及最后两个测算风险偏好和模糊偏好的变量分别重新命名为risk_atti 和 ambiguity_atti。
数据和完备代码
  1. # 读取数据
  2. data <- read.csv("datar.csv", header = TRUE, stringsAsFactors = FALSE, fileEncoding = "GBK")
  3. data
  4. head(data,5)
  5. # 删除无关变量
  6. data <- data[, !names(data) %in% c("来源", "来源详情", "来自IP")]
  7. # 重新命名变量
  8. colnames(data) <- c("序号", "提交答卷时间", "所用时间", "性别", "team_num",
  9.                     paste0("round", 1:20), "risk_atti", "ambiguity_atti")
  10. names(data)
  11. head(data,5)
复制代码

变量赋值
  1. data$gender <- ifelse(data$性别 == "男", 1, 0)
  2. head(data,5)
复制代码
看“爱心”视频前,大家前10回合的平均贡献值是多少?看“爱心”视频后,大家后10回合的平均贡献值是多少?
  1. # 提取前10回合和后10回合的数据
  2. before_video <- data[, 7:16]
  3. after_video <- data[, 17:26]
  4. # 计算平均贡献值
  5. avg_contribution_before <- rowMeans(before_video, na.rm = TRUE)
  6. avg_contribution_after <- rowMeans(after_video, na.rm = TRUE)
  7. # 输出结果
  8. avg_contribution_before <- mean(avg_contribution_before, na.rm = TRUE)
  9. avg_contribution_after <- mean(avg_contribution_after, na.rm = TRUE)
  10. cat("看“爱心”视频前,大家前10回合的平均贡献值是:", avg_contribution_before, "\n")
  11. cat("看“爱心”视频后,大家后10回合的平均贡献值是:", avg_contribution_after, "\n")
  12. # 导入绘图库
  13. library(ggplot2)
  14. # 创建数据框
  15. contribution <- data.frame(
  16.   Time_Period = c("Before Video", "After Video"),
  17.   Average_Contribution = c(avg_contribution_before, avg_contribution_after)
  18. )
  19. # 绘制柱状图,并标上数据值
  20. ggplot(contribution, aes(x = Time_Period, y = Average_Contribution, fill = Time_Period)) +
  21.   geom_bar(stat = "identity") +
  22.   geom_text(aes(label = round(Average_Contribution, 2)), vjust = -0.5) +  # 标上数据值
  23.   labs(title = "Average Contribution Before and After Watching 'Love' Video",
  24.        x = "Time Period",
  25.        y = "Average Contribution") +
  26.   theme_minimal() +
  27.   theme(legend.position = "none")
复制代码

从结果和可视化都可以看出,看“爱心”视频前,大家前10回合的平均贡献值是7.138889,看“爱心”视频后,大家后10回合的平均贡献值是7.2
异常值检测
  1. # 找出所用时间超过800秒的同学
  2. outliers_800 <- data[data$'所用时间' == '808秒', ]
  3. outliers_800
  4. # 找出所用时间为314秒的同学
  5. outliers_314 <- data[data$'所用时间' == '314秒', ]
  6. # 找出所用时间为74秒的同学
  7. outliers_74 <- data[data$'所用时间' == '74秒', ]
  8. # 将outliers合并
  9. outliers <- rbind(outliers_800, outliers_314, outliers_74)
  10. outliers
  11. # 从数据中删除outliers
  12. data <- data[!(rownames(data) %in% rownames(outliers)), ]
  13. # 重新计算Part 1
  14. before_video <- data[, 7:16]
  15. after_video <- data[, 17:26]
  16. avg_contribution_before <- rowMeans(before_video, na.rm = TRUE)
  17. avg_contribution_after <- rowMeans(after_video, na.rm = TRUE)
  18. avg_contribution_before <- mean(avg_contribution_before, na.rm = TRUE)
  19. avg_contribution_after <- mean(avg_contribution_after, na.rm = TRUE)
复制代码
删除了异常值之后,看“爱心”视频前,大家前10回合的平均贡献值是6.751515,看“爱心”视频后,大家后10回合的平均贡献值是7.490909
女同学的前十和后十回合的平均贡献值是多少?男生呢?
  1. # 按性别分组
  2. female_data <- subset(data, 性别 == "女")
  3. male_data <- subset(data, 性别 == "男")
  4. # 提取前十回合和后十回合的数据
  5. before_video_female <- female_data[, 7:16]
  6. before_video_female
  7. after_video_female <- female_data[, 17:26]
  8. before_video_male <- male_data[, 7:16]
  9. after_video_male <- male_data[, 17:26]
  10. # 计算平均贡献值
  11. avg_contribution_before_female <- rowMeans(before_video_female, na.rm = TRUE)
  12. avg_contribution_after_female <- rowMeans(after_video_female, na.rm = TRUE)
  13. avg_contribution_before_male <- rowMeans(before_video_male, na.rm = TRUE)
  14. avg_contribution_after_male <- rowMeans(after_video_male, na.rm = TRUE)
  15. # 计算平均贡献值的平均值
  16. avg_contribution_before_female <- mean(avg_contribution_before_female, na.rm = TRUE)
  17. avg_contribution_after_female <- mean(avg_contribution_after_female, na.rm = TRUE)
  18. avg_contribution_before_male <- mean(avg_contribution_before_male, na.rm = TRUE)
  19. avg_contribution_after_male <- mean(avg_contribution_after_male, na.rm = TRUE)
复制代码
女同学的前十回合的平均贡献值是5.266667,女同学的后十回合的平均贡献值是6.3,男同学的前十回合的平均贡献值是7.308333,男同学的后十回合的平均贡献值是7.9375
为了探索差别风险偏好的同学在观看“爱心”视频前后的平均贡献值,我们可以按照之前的步骤举行数据处理和分析。起首,我们需要将风险偏好转换为风险偏好等级,然后按照这些等级将数据分组,分别计算他们在观看视频前后的平均贡献值。        
  1. # 根据映射关系将风险偏好转换为相应的风险偏好等级
  2. risk_attitude_levels <- c("highly risk loving", "very risk loving", "risk loving",
  3.                           "risk neutral", "slightly risk averse", "risk averse",
  4.                           "very risk averse", "highly risk averse", "stay in bed", "stay in bed")
  5. data$risk_attitude_level <- risk_attitude_levels[data$risk_atti]
  6. # 按风险偏好等级分组
  7. risk_attitude_groups <- split(data, data$risk_attitude_level)
  8. # 计算每个组在观看视频前后的平均贡献值
  9. avg_contribution_before <- sapply(risk_attitude_groups, function(group) {
  10.   avg_before <- mean(rowMeans(group[, 7:16], na.rm = TRUE), na.rm = TRUE)
  11.   return(avg_before)
  12. })
  13. avg_contribution_after <- sapply(risk_attitude_groups, function(group) {
  14.   avg_after <- mean(rowMeans(group[, 17:26], na.rm = TRUE), na.rm = TRUE)
  15.   return(avg_after)
  16. })
  17. # 合并结果为数据框
  18. avg_contribution <- data.frame(Risk_Attitude = names(avg_contribution_before),
  19.                                Avg_Contribution_Before = avg_contribution_before,
  20.                                Avg_Contribution_After = avg_contribution_after)
  21. # 输出结果
  22. print(avg_contribution)
复制代码

高风险偏好者(highly risk loving)在观看视频前的平均贡献值较高,但在观看视频后低落到较低水平,这可能表明他们更倾向于冒险和自我长处,并且对于公共物品的贡献程度受到外部因素影响较大。风险厌恶者(risk averse)在观看视频前后的平均贡献值有所增加,这可能表明他们更加稳健和审慎,但在观看视频后表现出更多的乐意到场公共物品的贡献。风险中性者(risk neutral)在观看视频前后的平均贡献值保持相对稳固,这可能表明他们的决策相对稳固,不受外部因素的影响较大。风险略微厌恶者(slightly risk averse)和非常风险厌恶者(very risk averse)在观看视频前后的平均贡献值厘革较小,这可能表明他们的行为相对稳固,不受外部因素的影响较大。保持在床上者(stay in bed)在观看视频前后的平均贡献值有所增加,这可能表明他们对于外部因素的反应较弱,但在观看视频后表现出更多的乐意到场公共物品的贡献。
综上所述,差别风险偏好等级的同学在观看视频前后的行为表现有所差别,这可能受到个体风险态度和外部环境的影响。针对这些差别特点,我们可以制定更具针对性的鼓励措施,以促进更多人为公共物品做出贡献。
创作不易,希望大家多点赞关注批评!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表