在 R 中绘制逻辑回归,但我不断收到错误
Plotting Logistic Regression in R, but I keep getting errors
我正在尝试在 R 中针对连续自变量和二分因变量绘制逻辑回归。我对 R 的经验非常有限,但我的教授要求我将这张图添加到我正在写的论文中,他说 R 可能是创建它的最佳方式。无论如何,我敢肯定这里有很多错误,但这是之前在 Whosebug 上建议的那种:
ggplot(vvv, aes(x = vvv$V1, y=vvv$V2)) + geom_point() + stat_smooth(method="glm", family="binomial", se=FALSE)
curve(predict(ggg, data.frame(V1=x), type="response"), add=TRUE)
其中 vvv 是我的 csv 文件的名称(2 个变量的 31 个观测值),V1 是连续变量,V2 是二分变量。此外,ggg(30 人名单?)如下:
ggg<- glm(formula = vvv$V2 ~ vvv$V1, family = "binomial", data = vvv)
ggplot 函数生成我的数据点的图表,但没有逻辑回归曲线。曲线函数导致以下错误:
"Error in curve(predict(ggg, data.frame(V1 = x), type = "resp"), add = TRUE) : 'expr' did not evaluate to an object of length 'n'
In addition: Warning message:'newdata' had 101 rows but variables found have 31 rows"
我不确定问题出在哪里,而且我找不到针对这个特定问题的资源。有人可以帮忙吗?将不胜感激:)
编辑:感谢任何回复的人!我的数据 vvv 如下,其中百分比是特定区域中某个物种 presence/absence 的初始概率,1 和 0 表示该物种是否最终被观察到。:
V1 V2
1 95.00% 1
2 95.00% 0
3 95.00% 1
4 92.00% 1
5 92.00% 1
6 92.00% 1
7 92.00% 1
8 92.00% 1
9 92.00% 1
10 92.00% 1
11 85.00% 1
12 85.00% 1
13 85.00% 1
14 85.00% 1
15 85.00% 1
16 80.00% 1
17 80.00% 0
18 77.00% 1
19 77.00% 1
20 75.00% 0
21 70.00% 1
22 70.00% 0
23 70.00% 0
24 70.00% 1
25 70.00% 0
26 69.00% 1
27 65.00% 0
28 60.00% 1
29 50.00% 1
30 35.00% 0
31 25.00% 0
正如@MrFlick 评论的那样,V1 可能是一个因素。因此,首先您必须将其更改为数字 class。这只是将“%”替换为空并除以 100,因此您将得到数字 class:
的比例
vvv$V1<-as.numeric(sub("%","",vvv$V1))/100
这样做,您可以使用自己的代码,并且您将获得逻辑回归图:
ggplot(vvv, aes(x = vvv$V1, y=vvv$V2)) + geom_point() + stat_smooth(method="glm", family="binomial", se=F)
这不仅应该打印点,还应该打印逻辑回归曲线。我不明白使用 curves
有什么意义。从你的问题我可以理解,这足以满足你的需要。
我正在尝试在 R 中针对连续自变量和二分因变量绘制逻辑回归。我对 R 的经验非常有限,但我的教授要求我将这张图添加到我正在写的论文中,他说 R 可能是创建它的最佳方式。无论如何,我敢肯定这里有很多错误,但这是之前在 Whosebug 上建议的那种:
ggplot(vvv, aes(x = vvv$V1, y=vvv$V2)) + geom_point() + stat_smooth(method="glm", family="binomial", se=FALSE)
curve(predict(ggg, data.frame(V1=x), type="response"), add=TRUE)
其中 vvv 是我的 csv 文件的名称(2 个变量的 31 个观测值),V1 是连续变量,V2 是二分变量。此外,ggg(30 人名单?)如下:
ggg<- glm(formula = vvv$V2 ~ vvv$V1, family = "binomial", data = vvv)
ggplot 函数生成我的数据点的图表,但没有逻辑回归曲线。曲线函数导致以下错误:
"Error in curve(predict(ggg, data.frame(V1 = x), type = "resp"), add = TRUE) : 'expr' did not evaluate to an object of length 'n'
In addition: Warning message:'newdata' had 101 rows but variables found have 31 rows"
我不确定问题出在哪里,而且我找不到针对这个特定问题的资源。有人可以帮忙吗?将不胜感激:)
编辑:感谢任何回复的人!我的数据 vvv 如下,其中百分比是特定区域中某个物种 presence/absence 的初始概率,1 和 0 表示该物种是否最终被观察到。:
V1 V2
1 95.00% 1
2 95.00% 0
3 95.00% 1
4 92.00% 1
5 92.00% 1
6 92.00% 1
7 92.00% 1
8 92.00% 1
9 92.00% 1
10 92.00% 1
11 85.00% 1
12 85.00% 1
13 85.00% 1
14 85.00% 1
15 85.00% 1
16 80.00% 1
17 80.00% 0
18 77.00% 1
19 77.00% 1
20 75.00% 0
21 70.00% 1
22 70.00% 0
23 70.00% 0
24 70.00% 1
25 70.00% 0
26 69.00% 1
27 65.00% 0
28 60.00% 1
29 50.00% 1
30 35.00% 0
31 25.00% 0
正如@MrFlick 评论的那样,V1 可能是一个因素。因此,首先您必须将其更改为数字 class。这只是将“%”替换为空并除以 100,因此您将得到数字 class:
的比例vvv$V1<-as.numeric(sub("%","",vvv$V1))/100
这样做,您可以使用自己的代码,并且您将获得逻辑回归图:
ggplot(vvv, aes(x = vvv$V1, y=vvv$V2)) + geom_point() + stat_smooth(method="glm", family="binomial", se=F)
这不仅应该打印点,还应该打印逻辑回归曲线。我不明白使用 curves
有什么意义。从你的问题我可以理解,这足以满足你的需要。