Prediksi dan odds

Pengantar Regresi dengan statsmodels di Python

Maarten Van den Broeck

Content Developer at DataCamp

Prediksi regplot()

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

plt.show()

Plot sebar churn versus waktu sejak pembelian terakhir, dengan garis tren logistik.

Pengantar Regresi dengan statsmodels di Python

Membuat prediksi

mdl_recency = logit("has_churned ~ time_since_last_purchase",
                    data = churn).fit()


explanatory_data = pd.DataFrame( {"time_since_last_purchase": np.arange(-1, 6.25, 0.25)})
prediction_data = explanatory_data.assign( has_churned = mdl_recency.predict(explanatory_data))
Pengantar Regresi dengan statsmodels di Python

Menambahkan prediksi titik

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=prediction_data,
                color="red")

plt.show()

Plot sebar churn versus waktu sejak pembelian terakhir, dengan garis tren logistik. Plot dianotasi dengan hasil dari predict(), yang mengikuti garis tren persis.

Pengantar Regresi dengan statsmodels di Python

Mendapatkan hasil paling mungkin

prediction_data = explanatory_data.assign(
    has_churned = mdl_recency.predict(explanatory_data))

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Pengantar Regresi dengan statsmodels di Python

Memvisualisasikan hasil paling mungkin

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="most_likely_outcome",
                data=prediction_data,
                color="red")

plt.show()

Plot sebar churn versus waktu sejak pembelian terakhir, dengan garis tren logistik. Plot dianotasi dengan hasil paling mungkin. Untuk waktu sejak pembelian rendah, hasil paling mungkin adalah tidak churn. Untuk waktu tinggi, hasil paling mungkin adalah churn.

Pengantar Regresi dengan statsmodels di Python

Odds

Odds adalah probabilitas suatu kejadian dibagi probabilitas tidak terjadinya.

$$ \text{odds} = \frac{\text{probability}}{(1 - \text{probability)}} $$

$$ \text{odds} = \frac{0.25}{(1 - 0.25)} = \frac{1}{3} $$

Plot garis odds versus probabilitas. Kurva meningkat asimtotik ke tak hingga saat probabilitas mendekati satu.

Pengantar Regresi dengan statsmodels di Python

Menghitung odds

prediction_data["odds"] = prediction_data["has_churned"] / 
                            (1 - prediction_data["has_churned"])

Pengantar Regresi dengan statsmodels di Python

Memvisualisasikan odds

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)


plt.axhline(y=1, linestyle="dotted")
plt.show()

Plot garis odds versus waktu sejak pembelian terakhir, dengan garis pada odds sama dengan satu. Untuk waktu sejak pembelian rendah, hasil paling mungkin adalah tidak churn. Odds churn meningkat seiring waktu sejak pembelian, hingga lima kali odds tidak churn.

Pengantar Regresi dengan statsmodels di Python

Memvisualisasikan log-odds

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)

plt.axhline(y=1,
            linestyle="dotted")
plt.yscale("log")

plt.show()

Plot garis odds versus waktu sejak pembelian terakhir, dengan garis pada odds sama dengan satu. Sumbu y menggunakan skala logaritmik, membuat garis odds menjadi linear.

Pengantar Regresi dengan statsmodels di Python

Menghitung log-odds

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Pengantar Regresi dengan statsmodels di Python

Semua prediksi bersama

time_since_last_prchs has_churned most_likely_rspns odds log_odds
0 0.491 0 0.966 -0.035
2 0.623 1 1.654 0.503
4 0.739 1 2.834 1.042
6 0.829 1 4.856 1.580
... ... ... ... ...
Pengantar Regresi dengan statsmodels di Python

Membandingkan skala

Skala Apakah nilai mudah ditafsirkan? Apakah perubahan mudah ditafsirkan? Apakah presisi?
Probabilitas
Hasil paling mungkin ✔✔
Odds
Log-odds
Pengantar Regresi dengan statsmodels di Python

Ayo berlatih!

Pengantar Regresi dengan statsmodels di Python

Preparing Video For Download...