Hơn hai biến giải thích

Hồi quy trung cấp với statsmodels trong Python

Maarten Van den Broeck

Content Developer at DataCamp

Ôn lại bài trước

sns.scatterplot(x="length_cm", 
                y="height_cm",
                data=fish,
                hue="mass_g")

Biểu đồ phân tán 2D, tô màu theo khối lượng để hiển thị biến số thứ ba.

Hồi quy trung cấp với statsmodels trong Python

Tách biểu đồ theo loài

grid = sns.FacetGrid(data=fish,

col="species",
hue="mass_g", col_wrap=2,
palette="plasma")
grid.map(sns.scatterplot,
         "length_cm",
         "height_cm")
plt.show()

Biểu đồ phân tán chiều cao, chiều dài và khối lượng cá, chia theo loài. Màu sáng hơn nghĩa là cá nặng hơn.

Hồi quy trung cấp với statsmodels trong Python

Tách biểu đồ theo loài

  • Có thể dùng nhiều biến phân loại để tách biểu đồ
  • Cẩn trọng khi lạm dụng tách biểu đồ
  • Vẽ sẽ khó hơn khi số biến tăng

Biểu đồ phân tán chiều cao, chiều dài và khối lượng cá, chia theo loài. Màu sáng hơn nghĩa là cá nặng hơn.

Hồi quy trung cấp với statsmodels trong Python

Các mức tương tác khác nhau

Không có tương tác

ols("mass_g ~ length_cm + height_cm + species + 0", data=fish).fit()

Tương tác hai chiều giữa từng cặp biến

ols(
  "mass_g ~ length_cm + height_cm + species +
  length_cm:height_cm + length_cm:species + height_cm:species + 0", data=fish).fit()

Tương tác ba chiều giữa cả ba biến

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + length_cm:height_cm:species + 0", data=fish).fit()
Hồi quy trung cấp với statsmodels trong Python

Tất cả các tương tác

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + length_cm:height_cm:species + 0", 
  data=fish).fit()

Tương đương với

ols(
  "mass_g ~ length_cm * height_cm * species + 0", 
  data=fish).fit()
Hồi quy trung cấp với statsmodels trong Python

Chỉ tương tác hai chiều

ols(
  "mass_g ~ length_cm + height_cm + species + 
  length_cm:height_cm + length_cm:species + height_cm:species + 0", 
  data=fish).fit()

Tương đương với

ols(
  "mass_g ~ (length_cm + height_cm + species) ** 2 + 0", 
  data=fish).fit()
Hồi quy trung cấp với statsmodels trong Python

Quy trình dự đoán

mdl_mass_vs_all = ols(
  "mass_g ~ length_cm * height_cm * species + 0",
  data=fish).fit()

length_cm = np.arange(5, 61, 5)
height_cm = np.arange(2, 21, 2)
species = fish["species"].unique()

p = product(length_cm, height_cm, species)

explanatory_data = pd.DataFrame(p,
                                columns=["length_cm",
                                         "height_cm",
                                         "species"])

prediction_data = explanatory_data.assign(
  mass_g = mdl_mass_vs_all.predict(explanatory_data))

print(prediction_data)
     length_cm  height_cm species       mass_g
0            5          2   Bream  -570.656437
1            5          2   Roach    31.449145
2            5          2   Perch    43.789984
3            5          2    Pike   271.270093
4            5          4   Bream  -451.127405
..         ...        ...     ...          ...
475         60         18    Pike  2690.346384
476         60         20   Bream  1531.618475
477         60         20   Roach  2621.797668
478         60         20   Perch  3041.931709
479         60         20    Pike  2926.352397

[480 rows x 4 columns]
Hồi quy trung cấp với statsmodels trong Python

Ayo berlatih!

Hồi quy trung cấp với statsmodels trong Python

Preparing Video For Download...