几个简单的线性回归绘图

时间:2018-04-14 13:58:57

标签: r linear-regression

我使用 pima 数据集来可视化x轴上的预测变量 triceps 与三个响应变量中的每一个之间的线性关系:怀孕葡萄糖压力

这是我的代码:

from itertools import permutations

my_list=[[9, 10, 1], [1, 7, 5, 6, 11], [0, 4], [4, 2, 9]]

def sortCheck(a):
    if a[0][0] != 0:
        return False

    for i in range(0, len(a) - 1):
        if a[i][-1] != a[i+1][0]:
            return False
    return True

result_list = []

for permutation in permutations(my_list):
    if sortCheck(permutation):
        result_list.append(list(permutation))

不幸的是,代码重复了三次,具有不同的功能。如果我想针对x(三头肌)绘制所有功能,我将不得不一直复制和粘贴相同的代码,只需更改功能。有没有更简单的方法呢?

以下是情节: enter image description here

2 个答案:

答案 0 :(得分:2)

你确定可以。使用facet_wrap。棘手的部分是从宽到长格式获取您想要的数据。对于您的情况,我使用了gather

library(pdp)
library(ggplot2)
library(tidyr)

pima$id <- 1:nrow(pima)

xy <- pima[, c("triceps", "pregnant", "glucose", "pressure", "id")]

xy <- gather(xy, key = state, value = value, glucose, pregnant, pressure, -id, -triceps)

ggplot(xy, aes(x = value, y = triceps)) +
  theme_bw() +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  facet_wrap(~ state, scales = "free_x", ncol = 2)

enter image description here

答案 1 :(得分:1)

我认为你在变量之间混淆了。在内容中,您在x轴中使用三头肌,但在图中,您将其放在y轴上。如果您想在x轴上绘制三头肌,在y轴上绘制孕,葡萄糖,压力,此代码将帮助您:

library(pdp)
library(ggplot2)
pima=na.omit(pima)
head(pima)

pima %>%
 select(pregnant, glucose, pressure, triceps) %>%
 melt(id.vars = "triceps") %>%
 ggplot(aes(x = triceps, y = value)) + geom_point() + 
 geom_smooth(method = "lm") +
 facet_grid(~variable, scales = "free_x")

Plots