我试图在R中回答的问题:加载rockchalk包,并使用plotSlopes()函数通过绘制活动的压力来显示交互效果,不同的咖啡水平斜率。为斜坡选择0,2和5杯咖啡,并描述/对比重度(5),中度(2)和非饮用咖啡(0)中活动对压力的影响。请务必将您的绘图与语法粘贴到文档中。
这是我写的代码:
library(rockchalk)
mod1 <- lm(stress ~ activity + coffee*activity, data = `employeeExercise(2).(2)`)
summary(mod1)
plotSlopes(mod1, plotx = "stress", modx = "coffee", modxVals = c(0, 2, 5))
这是我不断得到的错误???: mm [,plotx]中的错误:下标超出范围
以下是一些示例数据:
> head(employeeExercise_3_, 20)
# A tibble: 20 x 1
age male coffee activity preStress heart stress
1 25 0 3 9 69 0 53
2 32 1 3 5 66 1 61
3 35 1 3 3 71 0 55
4 27 0 1 6 61 0 50
5 21 1 3 4 61 0 41
6 53 0 2 4 54 1 85
7 53 0 4 8 76 1 94
8 49 0 4 3 68 1 80
9 35 1 2 5 58 0 56
10 34 1 5 8 77 1 82
11 48 1 1 8 64 0 67
12 31 1 1 10 66 1 47
13 29 1 1 8 66 0 43
14 28 1 6 4 74 1 54
15 49 1 4 6 65 0 76
16 35 1 4 2 74 1 55
17 42 1 2 0 66 1 72
18 21 1 2 2 72 1 47
19 28 1 5 10 80 0 73
20 44 1 2 9 73 0 71
答案 0 :(得分:0)
查看plotSlopes
文档(在控制台中使用?plotSlopes
),它说明了plotx
参数
必需。拟合模型中一个预测器的名称将在水平轴上绘制
你有它。 plotx
参数应该是一个预测器(即用于预测的东西)而不是响应(即试图解释的东西。
我不知道您要解决的问题是什么,但请注意将plotx = "stress"
更改为您使用的其他预测变量plotx = "activity"
会产生一个情节!
你得到的错误
mm [,plotx]:下标超出范围
时出错
基本上是在说“在我们期望使用的对象中,我们找不到具有plotx值的列”在你的情况下,plotx是“压力”。这是因为它引用的mm
数据帧只有预测变量(而不是响应)作为列。
关于如何修复问题并不是一个非常具体的错误,但是当你遇到问题时,文档始终是一个很好的起点。
如果您对plotSlopes功能的用途感到困惑,请查看this document并跳转到第7页。
如何使用它的示例也可以在我在第一段中提到的功能文档的底部找到。
祝你好运!答案 1 :(得分:0)
plotSlopes参数&#34; plotx&#34;正在从lm对象中寻找一个预测变量。
plotSlopes函数使用模型$ model,它具有前面使用的lm函数的系数。
我创建了一个虚假的数据集,模仿你的问题,并添加了一个显式的交互变量。
install.packages ("rockchalk")
library(rockchalk)
set.seed(5280)
foo.data <- data.table (activity = runif (n = 1000, min = 0, max = 3), coffee = rpois (1000, .9)) #create a fake dataset with activity and coffee as predictors
foo.data$stress <- foo.data$activity * foo.data$coffee + runif(1000, min = 0, max = 2) #create an independent variable "stress" that is a function of coffee and activity
foo.data$interaction <- foo.data$coffee * foo.data$activity #explicitly add the interaction of coffee and activity
plot(foo.data) #examine the data
foo.model <- lm(stress ~ activity + coffee + interaction, data = foo.data)
summary(foo.model)
str(foo.model$model)
plotSlopes(foo.model, plotx = "interaction", modx = "coffee", modxVals = c(0, 1, 2, 3))