rasch-pkg


Namerasch-pkg JSON
Version 1.0.1 PyPI version JSON
download
home_pageNone
SummaryRasch modeli asosida o'quvchilarni baholash tizimi - Student assessment system based on Rasch model
upload_time2025-08-04 06:34:27
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords rasch-model student-assessment educational-measurement psychometrics item-response-theory uzbekistan education
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Rasch Model Implementation

Rasch modeli asosida o'quvchilarni baholash tizimi. Bu loyiha o'quvchilarning imtihon natijalarini Rasch modeli yordamida tahlil qilish va baholash uchun mo'ljallangan.

## Xususiyatlar

- **Rasch modeli asosida baholash**: O'quvchilarning skill level (θ) ni hisoblash
- **Z-score va scaled score**: Standartlashtirilgan ballni hisoblash (0-100 oralig'ida)
- **Daraja belgilash**: A+, A, B+, B, C+, C, NC darajalarini avtomatik belgilash
- **Excel fayl bilan ishlash**: Excel fayllardan ma'lumotlarni o'qish va natijalarni eksport qilish
- **Statistik tahlil**: Natijalar bo'yicha batafsil statistika
- **Moslashuvchan konfiguratsiya**: Daraja chegaralarini o'zgartirish imkoniyati

## O'rnatish

### PyPI dan o'rnatish (tavsiya etiladi)

```bash
pip install rasch-pkg
```

### Repository dan o'rnatish

1. Repository ni klonlash:
```bash
git clone <repository-url>
cd rasch
```

2. Virtual muhit yaratish:
```bash
python3 -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
```

3. Bog'liqliklarni o'rnatish:
```bash
pip install -r requirements.txt
```

## Foydalanish

### 1. Asosiy misol (fayllar bilan)

```python
from rasch_pkg import RaschModel

# Rasch modeli obyektini yaratish
rasch = RaschModel()

# O'quvchi javoblari (1 - to'g'ri, 0 - noto'g'ri)
answers = [1, 1, 0, 1, 0, 1, 1, 0, 1, 1]  # 10 ta savol

# O'quvchini baholash
result = rasch.process_student_answers(
    student_id="001",
    name="Ahmadov Ahmad",
    answers=answers
)

print(f"Ball: {result.scaled_score:.2f}")
print(f"Daraja: {result.grade.value}")
```

### 2. PostgreSQL ma'lumotlar bazasi bilan ishlash

```python
from rasch_pkg import RaschEvaluator

# Database konfiguratsiyasi
db_config = DatabaseConfig(
    host="localhost",
    port=5432,
    database="postgres",
    username="postgres",
    password="password"
)

# Context manager bilan ishlash
with DatabaseRaschProcessor(db_config) as processor:
    # Barcha foydalanuvchilarni qayta ishlash
    results = processor.process_all_users()

    # Excel fayliga eksport qilish
    excel_path = processor.export_to_excel(
        results,
        "matematika_test_natijalari.xlsx"
    )

    print(f"Natijalar {excel_path} fayliga saqlandi")
```

### Excel fayl bilan ishlash

```python
import pandas as pd
from src.rasch_model import RaschModel

# Excel faylni o'qish
df = pd.read_excel('exam_results.xlsx')

# Rasch modeli
rasch = RaschModel()

# Barcha o'quvchilarni baholash
results = rasch.process_multiple_students(df)

# Natijalarni eksport qilish
rasch.export_results(results, 'output_results.xlsx')
```

### Ko'p o'quvchilarni baholash

```python
# O'quvchilar ma'lumotlari
students_data = [
    {
        'id': '001',
        'name': 'O\'quvchi 1',
        'answers': [1, 1, 0, 1, 0, 1, 1, 0, 1, 1]
    },
    {
        'id': '002', 
        'name': 'O\'quvchi 2',
        'answers': [1, 0, 1, 1, 0, 0, 1, 1, 0, 1]
    }
]

results = rasch.process_multiple_students(students_data)

# Statistika
stats = rasch.get_statistics(results)
print(f"O'rtacha ball: {stats['score_statistics']['mean']}")
```

## Daraja tizimi

| Daraja | Ball oralig'i | Tavsif |
|--------|---------------|---------|
| A+ | 70.0 - 100.0 | A'lo |
| A | 65.0 - 69.99 | A'lo |
| B+ | 60.0 - 64.99 | Yaxshi |
| B | 55.0 - 59.99 | Yaxshi |
| C+ | 50.0 - 54.99 | Qoniqarli |
| C | 46.0 - 49.99 | Qoniqarli |
| NC | 0.0 - 45.99 | Qoniqarsiz |

## Rasch modeli formulalari

1. **Theta (θ) hisoblash**:
   ```
   θ = ln(p / (1-p))
   ```
   Bu yerda p = to'g'ri javoblar nisbati

2. **Z-score hisoblash**:
   ```
   Z = (θ - μ) / σ
   ```

3. **Scaled score hisoblash**:
   ```
   Ball = 50 + 10 * Z
   ```

## Loyiha tuzilishi

```
rasch/
├── src/
│   ├── __init__.py
│   ├── rasch_model.py          # Asosiy Rasch modeli klassi
│   └── database_rasch.py       # PostgreSQL bilan ishlash klassi
├── tests/
│   ├── __init__.py
│   ├── test_rasch_model.py     # Rasch modeli unit testlar
│   └── test_database_rasch.py  # Database unit testlar
├── examples/
│   ├── rasch_example.py        # Asosiy foydalanish misollari
│   ├── advanced_example.py     # Qo'shimcha misollar
│   └── database_example.py     # Database misollari
├── docs/
│   ├── rules.pdf               # Rasch modeli qoidalari
│   └── exam_answers_example_*.xlsx  # Misol Excel fayllari
├── output/                     # Natijalar papkasi
├── requirements.txt            # Python bog'liqliklar
├── README.md                   # Ushbu fayl
└── USAGE_GUIDE.md             # Foydalanish qo'llanmasi
```

## Testlarni ishga tushirish

```bash
# Barcha testlar
python -m pytest tests/ -v

# Coverage bilan
python -m pytest tests/ --cov=src --cov-report=html

# Bitta test fayl
python -m unittest tests.test_rasch_model -v
```

## Misollarni ishga tushirish

```bash
# Asosiy misollar
python examples/rasch_example.py

# Qo'shimcha misollar
python examples/advanced_example.py

# Database misollari
python examples/database_example.py

# Alohida misollar
python -c "from examples.rasch_example import example_1_single_student; example_1_single_student()"
```

## API Hujjatlari

### RaschModel klassi

#### Konstruktor
```python
RaschModel(grade_thresholds=None, max_iterations=100, convergence_threshold=1e-6)
```

#### Asosiy metodlar

- `process_student_answers(student_id, name, answers)` - Bitta o'quvchini baholash
- `process_multiple_students(data)` - Ko'p o'quvchilarni baholash  
- `get_statistics(results)` - Statistika hisoblash
- `export_results(results, filename)` - Natijalarni eksport qilish

#### Yordamchi metodlar

- `calculate_theta(correct_answers, total_questions)` - Theta hisoblash
- `calculate_z_score(theta, mu, sigma)` - Z-score hisoblash
- `calculate_scaled_score(z_score)` - Scaled score hisoblash
- `determine_grade(scaled_score)` - Daraja belgilash

### StudentResult dataclass

O'quvchi natijasi uchun ma'lumotlar strukturasi:

```python
@dataclass
class StudentResult:
    student_id: str
    name: str
    answers: List[Union[int, float]]
    correct_count: int
    total_questions: int
    raw_score: float
    theta: float
    mu: float
    sigma: float
    z_score: float
    scaled_score: float
    grade: GradeLevel
```

## Konfiguratsiya

### Maxsus daraja chegaralari

```python
custom_thresholds = {
    'NC': (0.0, 39.99),
    'C': (40.0, 49.99),
    'C+': (50.0, 59.99),
    'B': (60.0, 69.99),
    'B+': (70.0, 79.99),
    'A': (80.0, 89.99),
    'A+': (90.0, 100.0)
}

rasch = RaschModel(grade_thresholds=custom_thresholds)
```

## Xatoliklar va yechimlar

### Keng uchraydigan xatoliklar

1. **Excel fayl topilmadi**
   - Fayl yo'lini tekshiring
   - Fayl mavjudligini tasdiqlang

2. **Noto'g'ri javob formati**
   - Javoblar 0 yoki 1 bo'lishi kerak
   - Boshqa qiymatlar avtomatik 0 ga aylantiriladi

3. **Bo'sh ma'lumotlar**
   - Kamida bitta javob bo'lishi kerak
   - Bo'sh ro'yxatlar xatolikka olib keladi

## Hissa qo'shish

1. Fork qiling
2. Feature branch yarating (`git checkout -b feature/yangi-xususiyat`)
3. O'zgarishlarni commit qiling (`git commit -am 'Yangi xususiyat qo'shildi'`)
4. Branch ni push qiling (`git push origin feature/yangi-xususiyat`)
5. Pull Request yarating

## Litsenziya

MIT License

## Muallif

Rasch modeli implementatsiyasi - O'zbekiston Milliy Universiteti

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rasch-pkg",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Muhammad Ali <muhammadali@example.com>",
    "keywords": "rasch-model, student-assessment, educational-measurement, psychometrics, item-response-theory, uzbekistan, education",
    "author": null,
    "author_email": "Muhammad Ali <muhammadali@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/52/77/71af1f9fbd1b175a69fd6aae15ad5b79835ac89e1efce0a2a283d90f0f91/rasch_pkg-1.0.1.tar.gz",
    "platform": null,
    "description": "# Rasch Model Implementation\n\nRasch modeli asosida o'quvchilarni baholash tizimi. Bu loyiha o'quvchilarning imtihon natijalarini Rasch modeli yordamida tahlil qilish va baholash uchun mo'ljallangan.\n\n## Xususiyatlar\n\n- **Rasch modeli asosida baholash**: O'quvchilarning skill level (\u03b8) ni hisoblash\n- **Z-score va scaled score**: Standartlashtirilgan ballni hisoblash (0-100 oralig'ida)\n- **Daraja belgilash**: A+, A, B+, B, C+, C, NC darajalarini avtomatik belgilash\n- **Excel fayl bilan ishlash**: Excel fayllardan ma'lumotlarni o'qish va natijalarni eksport qilish\n- **Statistik tahlil**: Natijalar bo'yicha batafsil statistika\n- **Moslashuvchan konfiguratsiya**: Daraja chegaralarini o'zgartirish imkoniyati\n\n## O'rnatish\n\n### PyPI dan o'rnatish (tavsiya etiladi)\n\n```bash\npip install rasch-pkg\n```\n\n### Repository dan o'rnatish\n\n1. Repository ni klonlash:\n```bash\ngit clone <repository-url>\ncd rasch\n```\n\n2. Virtual muhit yaratish:\n```bash\npython3 -m venv .venv\nsource .venv/bin/activate  # Windows: .venv\\Scripts\\activate\n```\n\n3. Bog'liqliklarni o'rnatish:\n```bash\npip install -r requirements.txt\n```\n\n## Foydalanish\n\n### 1. Asosiy misol (fayllar bilan)\n\n```python\nfrom rasch_pkg import RaschModel\n\n# Rasch modeli obyektini yaratish\nrasch = RaschModel()\n\n# O'quvchi javoblari (1 - to'g'ri, 0 - noto'g'ri)\nanswers = [1, 1, 0, 1, 0, 1, 1, 0, 1, 1]  # 10 ta savol\n\n# O'quvchini baholash\nresult = rasch.process_student_answers(\n    student_id=\"001\",\n    name=\"Ahmadov Ahmad\",\n    answers=answers\n)\n\nprint(f\"Ball: {result.scaled_score:.2f}\")\nprint(f\"Daraja: {result.grade.value}\")\n```\n\n### 2. PostgreSQL ma'lumotlar bazasi bilan ishlash\n\n```python\nfrom rasch_pkg import RaschEvaluator\n\n# Database konfiguratsiyasi\ndb_config = DatabaseConfig(\n    host=\"localhost\",\n    port=5432,\n    database=\"postgres\",\n    username=\"postgres\",\n    password=\"password\"\n)\n\n# Context manager bilan ishlash\nwith DatabaseRaschProcessor(db_config) as processor:\n    # Barcha foydalanuvchilarni qayta ishlash\n    results = processor.process_all_users()\n\n    # Excel fayliga eksport qilish\n    excel_path = processor.export_to_excel(\n        results,\n        \"matematika_test_natijalari.xlsx\"\n    )\n\n    print(f\"Natijalar {excel_path} fayliga saqlandi\")\n```\n\n### Excel fayl bilan ishlash\n\n```python\nimport pandas as pd\nfrom src.rasch_model import RaschModel\n\n# Excel faylni o'qish\ndf = pd.read_excel('exam_results.xlsx')\n\n# Rasch modeli\nrasch = RaschModel()\n\n# Barcha o'quvchilarni baholash\nresults = rasch.process_multiple_students(df)\n\n# Natijalarni eksport qilish\nrasch.export_results(results, 'output_results.xlsx')\n```\n\n### Ko'p o'quvchilarni baholash\n\n```python\n# O'quvchilar ma'lumotlari\nstudents_data = [\n    {\n        'id': '001',\n        'name': 'O\\'quvchi 1',\n        'answers': [1, 1, 0, 1, 0, 1, 1, 0, 1, 1]\n    },\n    {\n        'id': '002', \n        'name': 'O\\'quvchi 2',\n        'answers': [1, 0, 1, 1, 0, 0, 1, 1, 0, 1]\n    }\n]\n\nresults = rasch.process_multiple_students(students_data)\n\n# Statistika\nstats = rasch.get_statistics(results)\nprint(f\"O'rtacha ball: {stats['score_statistics']['mean']}\")\n```\n\n## Daraja tizimi\n\n| Daraja | Ball oralig'i | Tavsif |\n|--------|---------------|---------|\n| A+ | 70.0 - 100.0 | A'lo |\n| A | 65.0 - 69.99 | A'lo |\n| B+ | 60.0 - 64.99 | Yaxshi |\n| B | 55.0 - 59.99 | Yaxshi |\n| C+ | 50.0 - 54.99 | Qoniqarli |\n| C | 46.0 - 49.99 | Qoniqarli |\n| NC | 0.0 - 45.99 | Qoniqarsiz |\n\n## Rasch modeli formulalari\n\n1. **Theta (\u03b8) hisoblash**:\n   ```\n   \u03b8 = ln(p / (1-p))\n   ```\n   Bu yerda p = to'g'ri javoblar nisbati\n\n2. **Z-score hisoblash**:\n   ```\n   Z = (\u03b8 - \u03bc) / \u03c3\n   ```\n\n3. **Scaled score hisoblash**:\n   ```\n   Ball = 50 + 10 * Z\n   ```\n\n## Loyiha tuzilishi\n\n```\nrasch/\n\u251c\u2500\u2500 src/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 rasch_model.py          # Asosiy Rasch modeli klassi\n\u2502   \u2514\u2500\u2500 database_rasch.py       # PostgreSQL bilan ishlash klassi\n\u251c\u2500\u2500 tests/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 test_rasch_model.py     # Rasch modeli unit testlar\n\u2502   \u2514\u2500\u2500 test_database_rasch.py  # Database unit testlar\n\u251c\u2500\u2500 examples/\n\u2502   \u251c\u2500\u2500 rasch_example.py        # Asosiy foydalanish misollari\n\u2502   \u251c\u2500\u2500 advanced_example.py     # Qo'shimcha misollar\n\u2502   \u2514\u2500\u2500 database_example.py     # Database misollari\n\u251c\u2500\u2500 docs/\n\u2502   \u251c\u2500\u2500 rules.pdf               # Rasch modeli qoidalari\n\u2502   \u2514\u2500\u2500 exam_answers_example_*.xlsx  # Misol Excel fayllari\n\u251c\u2500\u2500 output/                     # Natijalar papkasi\n\u251c\u2500\u2500 requirements.txt            # Python bog'liqliklar\n\u251c\u2500\u2500 README.md                   # Ushbu fayl\n\u2514\u2500\u2500 USAGE_GUIDE.md             # Foydalanish qo'llanmasi\n```\n\n## Testlarni ishga tushirish\n\n```bash\n# Barcha testlar\npython -m pytest tests/ -v\n\n# Coverage bilan\npython -m pytest tests/ --cov=src --cov-report=html\n\n# Bitta test fayl\npython -m unittest tests.test_rasch_model -v\n```\n\n## Misollarni ishga tushirish\n\n```bash\n# Asosiy misollar\npython examples/rasch_example.py\n\n# Qo'shimcha misollar\npython examples/advanced_example.py\n\n# Database misollari\npython examples/database_example.py\n\n# Alohida misollar\npython -c \"from examples.rasch_example import example_1_single_student; example_1_single_student()\"\n```\n\n## API Hujjatlari\n\n### RaschModel klassi\n\n#### Konstruktor\n```python\nRaschModel(grade_thresholds=None, max_iterations=100, convergence_threshold=1e-6)\n```\n\n#### Asosiy metodlar\n\n- `process_student_answers(student_id, name, answers)` - Bitta o'quvchini baholash\n- `process_multiple_students(data)` - Ko'p o'quvchilarni baholash  \n- `get_statistics(results)` - Statistika hisoblash\n- `export_results(results, filename)` - Natijalarni eksport qilish\n\n#### Yordamchi metodlar\n\n- `calculate_theta(correct_answers, total_questions)` - Theta hisoblash\n- `calculate_z_score(theta, mu, sigma)` - Z-score hisoblash\n- `calculate_scaled_score(z_score)` - Scaled score hisoblash\n- `determine_grade(scaled_score)` - Daraja belgilash\n\n### StudentResult dataclass\n\nO'quvchi natijasi uchun ma'lumotlar strukturasi:\n\n```python\n@dataclass\nclass StudentResult:\n    student_id: str\n    name: str\n    answers: List[Union[int, float]]\n    correct_count: int\n    total_questions: int\n    raw_score: float\n    theta: float\n    mu: float\n    sigma: float\n    z_score: float\n    scaled_score: float\n    grade: GradeLevel\n```\n\n## Konfiguratsiya\n\n### Maxsus daraja chegaralari\n\n```python\ncustom_thresholds = {\n    'NC': (0.0, 39.99),\n    'C': (40.0, 49.99),\n    'C+': (50.0, 59.99),\n    'B': (60.0, 69.99),\n    'B+': (70.0, 79.99),\n    'A': (80.0, 89.99),\n    'A+': (90.0, 100.0)\n}\n\nrasch = RaschModel(grade_thresholds=custom_thresholds)\n```\n\n## Xatoliklar va yechimlar\n\n### Keng uchraydigan xatoliklar\n\n1. **Excel fayl topilmadi**\n   - Fayl yo'lini tekshiring\n   - Fayl mavjudligini tasdiqlang\n\n2. **Noto'g'ri javob formati**\n   - Javoblar 0 yoki 1 bo'lishi kerak\n   - Boshqa qiymatlar avtomatik 0 ga aylantiriladi\n\n3. **Bo'sh ma'lumotlar**\n   - Kamida bitta javob bo'lishi kerak\n   - Bo'sh ro'yxatlar xatolikka olib keladi\n\n## Hissa qo'shish\n\n1. Fork qiling\n2. Feature branch yarating (`git checkout -b feature/yangi-xususiyat`)\n3. O'zgarishlarni commit qiling (`git commit -am 'Yangi xususiyat qo'shildi'`)\n4. Branch ni push qiling (`git push origin feature/yangi-xususiyat`)\n5. Pull Request yarating\n\n## Litsenziya\n\nMIT License\n\n## Muallif\n\nRasch modeli implementatsiyasi - O'zbekiston Milliy Universiteti\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Rasch modeli asosida o'quvchilarni baholash tizimi - Student assessment system based on Rasch model",
    "version": "1.0.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/muhammadali/rasch-pkg/issues",
        "Documentation": "https://github.com/muhammadali/rasch-pkg#readme",
        "Homepage": "https://github.com/muhammadali/rasch-pkg",
        "Repository": "https://github.com/muhammadali/rasch-pkg.git"
    },
    "split_keywords": [
        "rasch-model",
        " student-assessment",
        " educational-measurement",
        " psychometrics",
        " item-response-theory",
        " uzbekistan",
        " education"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bedb678e6086b33aba9d2c28ea4c2c94ee115ebfbc597f6b9bf4306c251cc95c",
                "md5": "9ee50f7d0b19cc337bf953142b48b93d",
                "sha256": "e211ee3d51bfdeb61383140786354d25724f2bb30e8854e981d905d556b60550"
            },
            "downloads": -1,
            "filename": "rasch_pkg-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9ee50f7d0b19cc337bf953142b48b93d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 13930,
            "upload_time": "2025-08-04T06:34:26",
            "upload_time_iso_8601": "2025-08-04T06:34:26.439954Z",
            "url": "https://files.pythonhosted.org/packages/be/db/678e6086b33aba9d2c28ea4c2c94ee115ebfbc597f6b9bf4306c251cc95c/rasch_pkg-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "527771af1f9fbd1b175a69fd6aae15ad5b79835ac89e1efce0a2a283d90f0f91",
                "md5": "bd2bf967fa5c50a85e1348b5e4fdebb7",
                "sha256": "6005b9179b50d86c7bc487c3498ae882844ae65ad71e7cd0fd55c524e1e1acaa"
            },
            "downloads": -1,
            "filename": "rasch_pkg-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "bd2bf967fa5c50a85e1348b5e4fdebb7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 17795,
            "upload_time": "2025-08-04T06:34:27",
            "upload_time_iso_8601": "2025-08-04T06:34:27.738720Z",
            "url": "https://files.pythonhosted.org/packages/52/77/71af1f9fbd1b175a69fd6aae15ad5b79835ac89e1efce0a2a283d90f0f91/rasch_pkg-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-04 06:34:27",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "muhammadali",
    "github_project": "rasch-pkg",
    "github_not_found": true,
    "lcname": "rasch-pkg"
}
        
Elapsed time: 0.42478s