基於日期的方程,擬合線,將 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
);
希望這可以幫助