Altair:提取和显示回归系数

这个问题解决了如何使用访问和显示 R 2mark_text()

我对访问和显示系数感兴趣。替换rSquared为会coef产生截距和斜率的扁平数组,如文档中所述。

如何索引此数组以仅显示其中一个值,例如斜率?我想知道该mark_text()步骤之前是否应该进行转换(可能transform_filter(),或者是否altair.Text()可以使用。

我知道其他 方法涉及单独确定此信息,然后将其添加为附加层。

如果这是一个非常简单的问题,请道歉。提前致谢。

import altair as alt
import pandas as pd
import numpy as np

np.random.seed(42)
x = np.linspace(0, 10)
y = x - 5 + np.random.randn(len(x))

df = pd.DataFrame({'x': x, 'y': y})

chart = alt.Chart(df).mark_point().encode(
    x='x',
    y='y'
)
line = chart.transform_regression('x', 'y').mark_line()

params = alt.Chart(df).transform_regression(
    'x', 'y', params=True
).mark_text(align='left').encode(
    x=alt.value(20),  # pixels from left
    y=alt.value(20),  # pixels from top
    text='rSquared:N',

    # text='coef:N' # flattened array
    # text='coef[0]:N' # fails
)

chart + line + params

回答

您可以使用计算转换访问它:

params = alt.Chart(df).transform_regression(
    'x', 'y', params=True
).transform_calculate(
    intercept='datum.coef[0]',
    slope='datum.coef[1]',
).mark_text(align='left').encode(
    x=alt.value(20),  # pixels from left
    y=alt.value(20),  # pixels from top
    text='intercept:N'
)

chart + line + params


以上是Altair:提取和显示回归系数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>