我试图在R中绘制逻辑回归,用于连续自变量和二分因变量。我对R的经验非常有限,但是我的教授让我把这个图添加到我写的一篇论文中,他说R可能是创建它的最好方法。无论如何,我确定这里有很多错误,但这是之前在StackOverflow上提出的那种错误:
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如下,其中百分比是特定区域中物种存在/不存在的初始概率,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
答案 0 :(得分:0)
正如@MrFlick评论的那样,V1可能是一个因素。所以,首先你必须将它改为数字类。这只是替代&#34;%&#34;什么都没有,除以100,所以你将比例作为数字类:
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
有什么意义。从我的问题中我可以理解,这足以满足您的需求。