สถิติและข้อมูลขนาดใหญ่

ถามตอบสำหรับผู้ที่สนใจในสถิติการเรียนรู้ของเครื่องจักรการวิเคราะห์ข้อมูลการขุดข้อมูล

5
ฉันจะจัดการกับผลกระทบของเครื่องหมายที่มีระดับความเอื้ออาทรแตกต่างกันได้ดีที่สุดในการให้คะแนนนักเรียนอย่างไร
นักเรียนประมาณ 600 คนมีคะแนนการประเมินอย่างกว้างขวางซึ่งสามารถสันนิษฐานได้ว่ามีความน่าเชื่อถือ / ความถูกต้องที่ดี การประเมินคะแนนจาก 100 และเป็นการทดสอบแบบปรนัยทำเครื่องหมายโดยคอมพิวเตอร์ นักเรียน 600 คนเหล่านั้นยังมีคะแนนในส่วนที่สองรองลงมาจากการประเมิน ในการประเมินชิ้นที่สองนี้พวกเขาถูกแบ่งออกเป็น 11 หมู่ด้วยนักเรียนระดับ 11 ที่แตกต่างกันและมีระดับความแปรปรวนระหว่างนักเรียนระดับใหญ่ในแง่ของ 'ความเอื้ออาทร' ของพวกเขาในการทำเครื่องหมายหรือขาด การประเมินครั้งที่สองนี้ได้คะแนนจาก 100 นักเรียนไม่ได้รับการมอบหมายให้มีการสุ่มและมีเหตุผลที่ดีที่จะคาดหวังความแตกต่างของระดับทักษะระหว่างกลุ่ม ฉันได้นำเสนอด้วยภารกิจของการทำให้มั่นใจว่าความแตกต่างระหว่างตัวทำเครื่องหมายหมู่ตามการมอบหมายครั้งที่สองไม่เป็นประโยชน์ต่อนักเรียนแต่ละคนอย่างมีนัยสำคัญ / เสียเปรียบ ความคิดของฉันคือการได้รับคะแนนหมู่ในการประเมินครั้งที่สองเพื่อให้สอดคล้องกับคะแนนหมู่ในครั้งแรกในขณะที่รักษาความแตกต่างระหว่างบุคคลภายในกลุ่ม เราควรสมมติว่าฉันมีเหตุผลที่ดีที่จะเชื่อว่าการทำงานของทั้งสองงานนั้นจะมีความสัมพันธ์กันสูง แต่เครื่องหมายนั้นแตกต่างกันอย่างมากในความเอื้ออาทรของพวกเขา นี่เป็นวิธีที่ดีที่สุดหรือไม่? ถ้าไม่เป็นอะไร มันจะได้รับการชื่นชมอย่างมากหากผู้ตอบสามารถให้คำแนะนำที่เป็นประโยชน์เกี่ยวกับวิธีการใช้โซลูชันที่ดีพูดใน R หรือ SPSS หรือ Excel

1
การอนุมานไม่ถูกต้องเมื่อการสังเกตไม่เป็นอิสระ
ฉันเรียนรู้ในสถิติเบื้องต้นว่าด้วยโมเดลเชิงเส้นทั่วไปเพื่อให้การอนุมานมีเหตุผลการสังเกตต้องเป็นอิสระ เมื่อการรวมกลุ่มเกิดขึ้นความเป็นอิสระอาจไม่ได้นำไปสู่การอนุมานที่ไม่ถูกต้องอีกต่อไปหากไม่นับรวม วิธีหนึ่งในการทำบัญชีสำหรับการทำคลัสเตอร์ดังกล่าวคือการใช้ตัวแบบผสม ฉันต้องการค้นหาชุดข้อมูลตัวอย่างจำลองหรือไม่ซึ่งแสดงให้เห็นอย่างชัดเจน ฉันพยายามใช้หนึ่งในชุดข้อมูลตัวอย่างบนไซต์ UCLA สำหรับการวิเคราะห์ข้อมูลคลัสเตอร์ > require(foreign) > require(lme4) > dt <- read.dta("http://www.ats.ucla.edu/stat/stata/seminars/svy_stata_intro/srs.dta") > m1 <- lm(api00~growth+emer+yr_rnd, data=dt) > summary(m1) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 740.3981 11.5522 64.092 <2e-16 *** growth -0.1027 0.2112 -0.486 0.6271 emer -5.4449 0.5395 -10.092 <2e-16 *** yr_rnd -51.0757 19.9136 -2.565 …

2
การใช้แพ็กเกจคาเร็ตนั้นเป็นไปได้หรือไม่ที่จะได้รับเมทริกซ์ความสับสนสำหรับค่าเกณฑ์เฉพาะ
ผมเคยได้รับรูปแบบการถดถอยโลจิสติก (ผ่านtrain) สำหรับการตอบสนองไบนารีและฉันได้รับเมทริกซ์ความสับสนโลจิสติกผ่านทางในconfusionMatrix caretมันให้เมทริกซ์ความสับสนของโมเดลโลจิสติกถึงฉัน แต่ฉันไม่แน่ใจว่าจะใช้เกณฑ์ใดในการรับ ฉันจะรับเมทริกซ์ความสับสนสำหรับค่าเกณฑ์เฉพาะที่ใช้confusionMatrixในได้caretอย่างไร

2
ตัวอย่างของตัวประมาณค่าความน่าจะเป็นสูงสุดที่ไม่สอดคล้องกัน
ฉันกำลังอ่านความคิดเห็นต่อกระดาษและผู้เขียนกล่าวว่าบางครั้งถึงแม้ว่าตัวประมาณ (พบโดย ML หรือ quasilikelihood สูงสุด) อาจไม่สอดคล้องกันพลังของอัตราส่วนความน่าจะเป็นหรือการทดสอบอัตราส่วนกึ่งโอกาส 1 เมื่อจำนวนข้อมูลที่สังเกตมีแนวโน้มที่จะไม่มีที่สิ้นสุด (ความสอดคล้องของการทดสอบ) สิ่งนี้เกิดขึ้นได้อย่างไรและเมื่อไหร่? คุณรู้จักบรรณานุกรมบ้างไหม?

1
ทำไมไม่ใช้การเรียนทั้งมวลเสมอไป
สำหรับฉันแล้วดูเหมือนว่าการเรียนรู้ทั้งมวล WILL จะให้ประสิทธิภาพการทำนายที่ดีกว่าเสมอโดยมีเพียงสมมติฐานการเรียนรู้เดียว ดังนั้นทำไมเราไม่ใช้พวกเขาตลอดเวลา? ฉันเดาว่าอาจเป็นเพราะข้อ จำกัด การคำนวณ? (ถึงอย่างนั้นเราก็ใช้ผู้ทำนายที่อ่อนแอดังนั้นฉันไม่รู้)

1
วิธีการทดสอบว่าการจัดจำหน่ายเป็นไปตามกฎหมายพลังงานหรือไม่
ฉันมีข้อมูลจำนวนผู้ใช้ที่โพสต์จำนวนคำถาม ตัวอย่างเช่น, [UserCount, QuestionCount] [2, 100] [9, 10] [3, 80] ... ... ซึ่งหมายความว่าผู้ใช้ 2 คนแต่ละคนโพสต์ 100 คำถามผู้ใช้ 9 คนโพสต์คำถาม 10 ข้อและอื่น ๆ ดังนั้นฉันจะทราบได้อย่างไรว่าการUserCount, QuestionCountกระจายตามกฎหมายพลังงานหรือไม่ ผมพบว่าแพคเกจ poweRlaw อย่างไรก็ตามฉันสามารถส่งเฉพาะตัวเลขกลุ่มเดียวเพื่อทำการประเมิน (ตัวอย่างที่มีให้ในแพ็คเกจนี้คือความถี่ของคำ) ดังนั้นฉันจะใช้แพ็คเกจนี้ได้อย่างไร หรือฉันมีอะไรผิดปกติ? [100, 100, 10, 10, 10 ... ]ฉันยังมีข้อมูลของการนับคำถามของผู้ใช้แต่ละคือ, ถ้าฉันส่งข้อมูลนี้ไปยังแพ็คเกจฉันจะได้อะไร

4
การตรวจสอบข้ามแตกต่างจากการสอดแนมข้อมูลอย่างไร
ฉันเพิ่งเสร็จสิ้น"รู้เบื้องต้นเกี่ยวกับการเรียนรู้ทางสถิติ" ฉันสงสัยว่าการใช้การตรวจสอบข้ามเพื่อค้นหาพารามิเตอร์การปรับที่ดีที่สุดสำหรับเทคนิคการเรียนรู้ของเครื่องที่แตกต่างจากการสอดแนมข้อมูลหรือไม่ เรากำลังตรวจสอบซ้ำ ๆ ว่าค่าของพารามิเตอร์การปรับค่าใดให้ผลลัพธ์การทำนายที่ดีที่สุดในชุดทดสอบ จะเกิดอะไรขึ้นถ้าพารามิเตอร์การปรับแต่งที่เรามาถึงนั้นเกิดขึ้นเพื่อให้เหมาะสมกับการทดสอบเฉพาะที่กำหนดโดยบังเอิญและจะไม่ทำงานได้ดีในชุดการทดสอบในอนาคต กรุณายกโทษให้ฉันเข้าใจสามเณรของการเรียนรู้ของเครื่องและฉันอยากได้รับการศึกษา แก้ไข: โปรดดูคำตอบ @AdamO เกี่ยวกับคำจำกัดความของ "data snooping" ฉันใช้คำนั้นไม่ถูกต้องในคำถามของฉัน

1
เหตุใด R's lm () จึงส่งกลับค่าสัมประสิทธิ์ที่แตกต่างจากตำราของฉัน
พื้นหลัง ฉันพยายามที่จะเข้าใจตัวอย่างแรกในหลักสูตรเกี่ยวกับแบบจำลองที่เหมาะสม (ดังนั้นนี่อาจดูเรียบง่ายอย่างน่าหัวเราะ) ฉันทำการคำนวณด้วยมือและพวกมันจับคู่ตัวอย่าง แต่เมื่อฉันทำซ้ำใน R สัมประสิทธิ์ของโมเดลจะดับ ฉันคิดว่าความแตกต่างอาจเกิดจากหนังสือเรียนที่ใช้ความแปรปรวนประชากร ( ) ในขณะที่ R อาจใช้ความแปรปรวนตัวอย่าง ( ) แต่ฉันไม่เห็นว่าจะใช้ที่ใดในการคำนวณ ตัวอย่างเช่นหาก ใช้บางส่วนส่วนช่วยเหลือในบันทึกย่อ:S 2σ2σ2\sigma^2S2S2S^2lm()var()var() ตัวส่วน n - 1 ถูกใช้ซึ่งให้ค่าประมาณที่ไม่เอนเอียงของความแปรปรวน (ร่วม) สำหรับการสังเกต iid ฉันดูที่รหัสสำหรับทั้งlm()และlm.fit()และไม่ใช้var()แต่lm.fit()ส่งผ่านข้อมูลนั้นเพื่อรวบรวมรหัส C ( z <- .Call(C_Cdqrls, x, y, tol, FALSE)) ซึ่งฉันไม่สามารถเข้าถึงได้ คำถาม ทุกคนสามารถอธิบายได้หรือไม่ว่าเหตุใด R จึงให้ผลลัพธ์ที่ต่างกัน แม้ว่าจะมีความแตกต่างในการใช้กลุ่มตัวอย่างเทียบกับความแปรปรวนของประชากรทำไมค่าสัมประสิทธิ์ประมาณต่างกัน ข้อมูล พอดีกับเส้นเพื่อทำนายขนาดรองเท้าจากเกรดในโรงเรียน # model data mod.dat <- …
13 r  regression  self-study  lm 

2
เคยมีเหตุผลไหมที่จะไม่ใช้ชื่อโพลิโนเมียลแบบฉากฉากในการถดถอยที่เหมาะสม?
โดยทั่วไปแล้วฉันสงสัยว่าจะมีการใช้พหุนามแบบมุมฉากหรือไม่เมื่อปรับการถดถอยด้วยตัวแปรลำดับที่สูงขึ้น โดยเฉพาะอย่างยิ่งฉันสงสัยว่าด้วยการใช้ R: หากpoly()มีraw = FALSEการผลิตค่าติดตั้งเช่นเดียวpoly()กับraw = TRUEและpolyมีraw = FALSEแก้บางส่วนของปัญหาที่เกี่ยวข้องกับการถดถอยพหุนามแล้วควรpoly()มีraw = FALSE เสมอจะใช้สำหรับการกระชับการถดถอยพหุนาม? ในสถานการณ์ใดจะเป็นการดีกว่าที่จะไม่ใช้poly()?

2
ตัวแปรสุ่มที่ไม่ต่อเนื่องแบบสม่ำเสมอ (?) รับค่าเหตุผลทั้งหมดในช่วงปิด
ฉันเพิ่งมีการโจมตีเสียขวัญ (ทางปัญญา) ตัวแปรสุ่มแบบต่อเนื่องที่ตามหลังเครื่องแบบในช่วงปิด : แนวคิดทางสถิติที่คุ้นเคยอย่างสะดวกสบาย ยู( a , b )U(a,b)U(a,b) rv สม่ำเสมออย่างต่อเนื่องที่มีการสนับสนุนมากกว่า reals ขยาย (ครึ่งหนึ่งหรือทั้งหมด): ไม่ใช่ rv ที่เหมาะสม แต่แนวคิด Bayesian พื้นฐานสำหรับที่ไม่เหมาะสมก่อนมีประโยชน์และสามารถใช้งานได้ เครื่องแบบที่ไม่ต่อเนื่องซึ่งมีค่า จำกัด จำนวนหนึ่ง: มาโยนโดมเนื้อที่ที่ไม่มีเรื่องใหญ่ แต่สิ่งที่เกี่ยวกับฟังก์ชั่นที่มีเป็นโดเมนปันส่วนทั้งหมดที่รวมอยู่ในช่วงปิดที่มีขอบเขตจำนวนเต็ม (เริ่มต้นด้วยถ้าคุณต้องการ)? และเราต้องการใช้มันในกรอบความน่าจะเป็นที่ต้องการให้ค่าที่เป็นไปได้แต่ละอันมีความน่าจะเป็นเท่ากันกับค่าอื่น ๆ ทั้งหมดหรือไม่?[ 0 , 1 ][0,1][0,1] จำนวนของค่าที่เป็นไปได้นั้นนับไม่ถ้วน (ซึ่งอธิบายลักษณะของการแจกแจงแบบไม่ต่อเนื่อง) แต่จะแสดงถึงความน่าจะเป็นของค่าเดี่ยวที่เราต้องการความน่าจะเป็นที่เท่ากัน? เราสามารถพูด - แสดง - พิสูจน์ได้หรือไม่ว่าเอนทิตีดังกล่าวเป็น (ไม่ใช่) ตัวแปรสุ่ม? หากไม่เป็นเช่นนี้อีกชาติ (อาจรู้จักกันดี) ของ "ไม่เหมาะสมมาก่อน" หรือไม่? เป็นไปได้หรือไม่ว่าเอนทิตีนี้มีความหมายชัดเจนบางอย่าง …

3
แบบจำลองสมมติฐานของการถดถอยกำลังสองน้อยที่สุด (PLS)
ฉันพยายามค้นหาข้อมูลเกี่ยวกับสมมติฐานของการถดถอย PLS (single ) ฉันสนใจเป็นพิเศษในการเปรียบเทียบสมมติฐานของ PLS เกี่ยวกับการถดถอยของ OLS Yyy ฉันได้อ่าน / อ่านผ่านวรรณกรรมเป็นจำนวนมากในหัวข้อ PLS; เอกสารโดย Wold (Svante และ Herman), Abdi และอื่น ๆ อีกมากมาย แต่ไม่พบแหล่งที่น่าพอใจ ทุ่งและคณะ (2001) PLS-regression: เครื่องมือพื้นฐานของ chemometricsไม่ได้กล่าวถึงสมมติฐานของ PLS แต่เพียงกล่าวถึงว่า Xs ไม่จำเป็นต้องเป็นอิสระ ระบบเป็นฟังก์ชั่นของตัวแปรแฝงที่แฝงอยู่บางตัว ระบบควรแสดงความเป็นเนื้อเดียวกันตลอดกระบวนการวิเคราะห์และ ข้อผิดพลาดการวัดในเป็นที่ยอมรับ XXX ไม่มีการเอ่ยถึงข้อกำหนดใด ๆ ของข้อมูลที่สังเกตได้หรือแบบจำลองส่วนที่เหลือ ไม่มีใครรู้ถึงแหล่งที่มาที่อยู่ใด ๆ นี้หรือไม่? การพิจารณาพื้นฐานทางคณิตศาสตร์นั้นคล้ายคลึงกับ PCA (โดยมีเป้าหมายในการเพิ่มความแปรปรวนร่วมระหว่างและ ) คือภาวะปกติหลายตัวแปรของสมมติฐาน? ส่วนที่เหลือของแบบจำลองจำเป็นต้องแสดงความแปรปรวนแบบเดียวกันหรือไม่?YyyXXX( y, X)(y,X)(y, …

1
MLE ของพารามิเตอร์ตำแหน่งในการแจกแจง Cauchy
หลังจากอยู่ตรงกลางทั้งสองวัด x และ −xสามารถสันนิษฐานได้ว่าเป็นอิสระจากการสังเกต Cauchy กระจายด้วยฟังก์ชันความหนาแน่นของความน่าจะเป็น: ฉ( x : θ ) =f(x:θ)=f(x :\theta) = ,-∞&lt;x&lt;∞1π( 1 + ( x - θ )2)1π(1+(x−θ)2)1\over\pi (1+(x-\theta)^2) , - ∞ &lt; x &lt; ∞,−∞&lt;x&lt;∞, -∞ < x < ∞ แสดงให้เห็นว่าถ้า MLE ของเป็น 0 แต่ถ้ามีสองแห่งคือเท่ากับ±θ x 2 &gt; 1 θ √x2≤ 1x2≤1x^2≤ 1θθ\thetax2&gt; 1x2&gt;1x^2>1θθ\thetax2- 1-----√x2−1\sqrt …

2
มีแบบทดสอบความเท่ากันอย่างง่ายของการทดสอบ Kolmogorov – Smirnov หรือไม่?
มีการทดสอบด้านเดียวสองด้านสำหรับความเท่าเทียมกัน (TOST) สำหรับการทดสอบ Kolmogorov – Smirnov เพื่อทดสอบสมมุติฐานเชิงลบว่าการแจกแจงสองครั้งนั้นแตกต่างกันอย่างน้อยระดับการระบุที่นักวิจัยกำหนดหรือไม่? ถ้าไม่ใช่ TOST แล้วรูปแบบอื่น ๆ ของการทดสอบความเท่ากัน? Nick Stauner ชี้ให้เห็นอย่างชาญฉลาดว่า (ฉันควรรู้แล้ว;) ว่ามีการทดสอบความเท่าเทียม TOST แบบ nonparametric อื่น ๆ สำหรับสมมติฐานว่างสำหรับการสุ่มเชิงเปรียบเทียบและมีข้อ จำกัด ที่เข้มงวดมากขึ้น

3
ต้องมีคุณสมบัติตรงตามเกณฑ์ใดบ้างเพื่อสรุปว่า 'เอฟเฟกต์ฝ้า' เกิดขึ้นได้อย่างไร
ตามสารานุกรม SAGE ของวิธีการวิจัยทางสังคมศาสตร์ ... [a] เอฟเฟ็กต์เพดานเกิดขึ้นเมื่อการวัดมีขีด จำกัด สูงสุดที่ชัดเจนสำหรับการตอบสนองที่อาจเกิดขึ้นและความเข้มข้นของผู้เข้าร่วมจำนวนมากจะทำคะแนนที่หรือใกล้เคียงกับขีด จำกัด นี้ การลดทอนขนาดเป็นปัญหาที่เกิดขึ้นเมื่อใดก็ตามที่มีข้อ จำกัด ในลักษณะนี้ ... ตัวอย่างเช่นผลกระทบเพดานอาจเกิดขึ้นกับการวัดทัศนคติซึ่งคะแนนสูงบ่งบอกถึงทัศนคติที่ดีและการตอบสนองสูงสุดไม่สามารถประเมินผลในเชิงบวกได้มากที่สุด ... ทางออกที่ดีที่สุดในการแก้ไขปัญหาของผลกระทบเพดานคือการทดสอบนำร่องซึ่งจะช่วยให้ปัญหาที่จะระบุในช่วงต้น หากพบเอฟเฟกต์เพดาน[และ] การวัดผลลัพธ์คือประสิทธิภาพของงานงานนั้นสามารถทำได้ยากขึ้นเพื่อเพิ่มช่วงของการตอบสนองที่เป็นไปได้ 1 [เน้นเพิ่ม] ดูเหมือนว่าจะมีจำนวนมากของคำแนะนำและคำถาม ( และที่นี่ ) การจัดการกับข้อมูลการวิเคราะห์ซึ่งแสดงให้เห็นผลกระทบเพดานคล้ายกับที่อธิบายไว้ในใบเสนอราคาดังกล่าวข้างต้น คำถามของฉันอาจเรียบง่ายหรือไร้เดียงสา แต่ใครจะตรวจพบว่ามีเอฟเฟกต์เพดานติดอยู่ในข้อมูลได้อย่างไร กล่าวโดยเฉพาะว่าการทดสอบทางไซโครเมทถูกสร้างขึ้นและสงสัยว่าจะนำไปสู่เอฟเฟกต์เพดาน (การตรวจด้วยสายตาเท่านั้น) จากนั้นการทดสอบนั้นจะได้รับการแก้ไขเพื่อให้ได้ค่าที่มากขึ้น จะแสดงให้เห็นอย่างไรว่าการทดสอบที่ปรับปรุงแล้วได้ลบผลกระทบบนเพดานออกจากข้อมูลที่สร้างขึ้น? มีการทดสอบซึ่งแสดงให้เห็นว่ามีผลกระทบเพดานในชุดข้อมูลแต่ไม่มีผลกระทบเพดานในชุดข้อมูลข ? วิธีการที่ไร้เดียงสาของฉันคือการตรวจสอบการกระจายเบ้และถ้ามันไม่เบ้สรุปได้ว่าไม่มีเอฟเฟกต์เพดาน มันง่ายเกินไปใช่ไหม? แก้ไข หากต้องการเพิ่มตัวอย่างที่เป็นรูปธรรมมากขึ้นฉันพูดว่าฉันพัฒนาเครื่องมือที่ใช้วัดคุณลักษณะแฝงxซึ่งเพิ่มขึ้นตามอายุ แต่ในที่สุดก็ถึงระดับและเริ่มลดลงเมื่ออายุมากขึ้น ฉันสร้างเวอร์ชันแรกซึ่งมีช่วง 1-14 ทำการนำร่องบางส่วนและพบว่าดูเหมือนว่าอาจมีเอฟเฟกต์เพดาน (จำนวนการตอบสนองที่มากหรือใกล้ 14 มากที่สุด .. ฉันสรุปได้เพียงแค่โดย ดูข้อมูล แต่ทำไมมีวิธีใดที่เข้มงวดในการสนับสนุนการอ้างสิทธิ์นั้น จากนั้นฉันทบทวนการวัดเพื่อให้มีช่วง …

3
ฟอเรสต์แบบสุ่มในข้อมูลที่มีโครงสร้างหลายระดับ / ลำดับชั้น
ฉันค่อนข้างใหม่กับการเรียนรู้ด้วยเครื่องจักรเทคนิคของ CART และสิ่งที่คล้ายกันและฉันหวังว่าไร้เดียงสาของฉันจะไม่ชัดเจนเกินไป Random Forest จัดการโครงสร้างข้อมูลหลายระดับ / ลำดับชั้นได้อย่างไร (ตัวอย่างเช่นเมื่อการโต้ตอบข้ามระดับเป็นที่สนใจ) นั่นคือชุดข้อมูลที่มีหน่วยการวิเคราะห์ในหลายระดับชั้น ( เช่นนักเรียนซ้อนกันภายในโรงเรียนพร้อมข้อมูลเกี่ยวกับทั้งนักเรียนและโรงเรียน) ยกตัวอย่างเช่นพิจารณาชุดข้อมูลหลายระดับที่มีบุคคลในระดับแรก ( เช่นข้อมูลพฤติกรรมการลงคะแนนประชากร ฯลฯ ) ซ้อนกันภายในประเทศในระดับที่สอง (พร้อมข้อมูลระดับประเทศเช่นประชากร): ID voted age female country population 1 1 19 1 1 53.01 2 1 23 0 1 53.01 3 0 43 1 1 53.01 4 1 27 1 1 53.01 5 …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.