基于日期的方程,拟合线,将 X 设置为表示不同的时间单位使用 JMP,我们经常被要求汇总原始数据,按周、月、季度、年等对其进行分组。然后去寻找趋势。
处理纵向数据的最佳实践是什么?
我无法让图形输出既适合执行演示,又包含一个有意义的方程。例如,它通常与 x 代表的内容有关。X 是否代表日期、增长的整数、季度等?
- 当我使用“原始索引”(对于任何参考框架而言,只是一个整数,在这种情况下为几周)时,等式是有意义的,但图形 x 轴标签不是人类可读的。单位每周增加 47 个单位,但在什么时间范围内?
- 当我使用代表一周的第一天的日期时,图表上的 x 轴看起来不错,但等式并不能提供洞察力。时间框架很明确,但单位增加的速度有多快?
这是一个汇总到一周的原始数据的示例。我们对基于每周增量的趋势感兴趣。
New Table( "DateMathExample_RollByWeek",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "DateMathExample" ) << Summary(
Group( :First Day of Week, :Raw Fiscal Week Index, :Fiscal Week YYYYWW ),
Sum( :Units ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "DateMathExample_RollByWeek" )
)
),
New Script(
"Sum(Units) vs. First Day of Week",
Graph Builder(
Variables( X( :First Day of Week ), Y( :Name( "Sum(Units)" ) ) ),
Elements(
Points( X, Y, Legend( 5 ) ),
Smoother( X, Y, Legend( 6 ) ),
Line Of Fit(
X,
Y,
Legend( 7 ),
Confidence of Fit( 0 ),
Equation( 1 )
)
)
)
),
New Script(
"Sum(Units) vs. Raw Fiscal Week Index",
Graph Builder(
Variables( X( :Raw Fiscal Week Index ), Y( :Name( "Sum(Units)" ) ) ),
Elements(
Points( X, Y, Legend( 5 ) ),
Smoother( X, Y, Legend( 6 ) ),
Line Of Fit(
X,
Y,
Legend( 7 ),
Confidence of Fit( 0 ),
Equation( 1 )
)
)
)
),
New Column( "First Day of Week",
Numeric,
"Continuous",
Format( "m/d/y", 12 ),
Input Format( "m/d/y" ),
Set Selected,
Set Values(
[3628368000, 3628972800, 3629577600, 3630182400, 3630787200, 3631392000]
)
),
New Column( "Raw Fiscal Week Index",
Numeric,
"Continuous",
Format( "Fixed Dec", 15, 0 ),
Set Values( [1, 2, 3, 4, 5, 6] )
),
New Column( "Fiscal Week YYYYWW",
Character,
"Ordinal",
Set Values( {"201852", "201901", "201902", "201903", "201904", "201905"} )
),
New Column( "N Rows",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 0 ),
Set Values( [3, 6, 5, 5, 5, 5] )
),
New Column( "Sum(Units)",
Numeric,
"Continuous",
Format( "Best", 15 ),
Set Values( [65, 251, 79, 162, 312, 340] )
)
)
回复:基于日期的方程,拟合线,将 X 设置为表示不同的时间单位如果你做价值标签,你可以让轴说出你想要的任何东西。
Names default to here(1);
dt = New Table( "DateMathExample_RollByWeek",
Add Rows( 6 ),
New Script(
"Source",
Data Table( "DateMathExample" ) << Summary(
Group( :First Day of Week, :Raw Fiscal Week Index, :Fiscal Week YYYYWW ),
Sum( :Units ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "DateMathExample_RollByWeek" )
)
),
New Script(
"Sum(Units) vs. First Day of Week",
Graph Builder(
Variables( X( :First Day of Week ), Y( :Name( "Sum(Units)" ) ) ),
Elements(
Points( X, Y, Legend( 5 ) ),
Smoother( X, Y, Legend( 6 ) ),
Line Of Fit(
X,
Y,
Legend( 7 ),
Confidence of Fit( 0 ),
Equation( 1 )
)
)
)
),
New Script(
"Sum(Units) vs. Raw Fiscal Week Index",
Graph Builder(
Variables( X( :Raw Fiscal Week Index ), Y( :Name( "Sum(Units)" ) ) ),
Elements(
Points( X, Y, Legend( 5 ) ),
Smoother( X, Y, Legend( 6 ) ),
Line Of Fit(
X,
Y,
Legend( 7 ),
Confidence of Fit( 0 ),
Equation( 1 )
)
)
)
),
New Column( "First Day of Week",
Numeric,
"Continuous",
Format( "m/d/y", 12 ),
Input Format( "m/d/y" ),
Set Selected,
Set Values(
[3628368000, 3628972800, 3629577600, 3630182400, 3630787200, 3631392000]
)
),
New Column( "Raw Fiscal Week Index",
Numeric,
"Continuous",
Format( "Fixed Dec", 15, 0 ),
Set Values( [1, 2, 3, 4, 5, 6] )
),
New Column( "Fiscal Week YYYYWW",
Character,
"Ordinal",
Set Values( {"201852", "201901", "201902", "201903", "201904", "201905"} )
),
New Column( "N Rows",
Numeric,
"Continuous",
Format( "Fixed Dec", 12, 0 ),
Set Values( [3, 6, 5, 5, 5, 5] )
),
New Column( "Sum(Units)",
Numeric,
"Continuous",
Format( "Best", 15 ),
Set Values( [65, 251, 79, 162, 312, 340] )
)
);
//making a value labels list
// format is {actual value = shown value}
labels = {};
for(i=1, i<=nrows(dt), i++,
insert into(labels,
EvalExpr( //this is to keep it an unevaluated expression
//the Expr() just says to evaluate that part but leave the rest as is
// we're trying to get 1 = "12/23/2018" to be the first item in the list
Expr(Column(dt, "Raw Fiscal Week Index")[i]) =
// the date is a number so we have to turn it into string
Expr(short date(Column(dt, "First Day of Week")[i]) )
)
);
);
show(labels);
Column(dt, "Raw Fiscal Week Index") << Set Property("Value Labels",
labels
);
希望这可以帮助